assets, move memories to proper location
BIN
assets/ads/gd_landscape_1200x628.png
Normal file
|
After Width: | Height: | Size: 207 KiB |
39
assets/ads/gd_landscape_1200x628.svg
Normal file
@@ -0,0 +1,39 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="628" viewBox="0 0 1200 628">
|
||||
<defs>
|
||||
<linearGradient id="bgGrad2" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#0a0f1e"/>
|
||||
<stop offset="60%" stop-color="#0a0f1e"/>
|
||||
<stop offset="100%" stop-color="#0c1628"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#3b82f6"/>
|
||||
<stop offset="100%" stop-color="#06b6d4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="shieldGrad" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="#3b82f6"/>
|
||||
<stop offset="100%" stop-color="#06b6d4"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="1200" height="628" fill="url(#bgGrad2)"/>
|
||||
<rect width="1200" height="5" fill="url(#brandBar)"/>
|
||||
<circle cx="830" cy="314" r="240" fill="#3b82f608"/>
|
||||
<circle cx="830" cy="314" r="180" fill="#3b82f606"/>
|
||||
<circle cx="830" cy="314" r="220" fill="none" stroke="#3b82f615" stroke-width="1" stroke-dasharray="8 8"/>
|
||||
|
||||
<!-- Digital shield icon (large, right side) -->
|
||||
<g transform="translate(830, 314)">
|
||||
<path d="M-70,-60 L70,-60 L75,20 Q75,60 40,80 L0,95 L-40,80 Q-75,60 -75,20 Z" fill="none" stroke="url(#shieldGrad)" stroke-width="3"/>
|
||||
<path d="M-30,-10 L0,25 L35,-20" fill="none" stroke="#22c55e" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<text x="0" y="130" font-family="system-ui, sans-serif" font-size="14" fill="#94a3b8" text-anchor="middle">AI-Powered Protection</text>
|
||||
</g>
|
||||
|
||||
<!-- Left side: text -->
|
||||
<text x="60" y="220" font-family="system-ui, sans-serif" font-size="44" font-weight="700" fill="#f1f5f9">Your Family Deserves</text>
|
||||
<text x="60" y="280" font-family="system-ui, sans-serif" font-size="44" font-weight="700" fill="#06b6d4">AI Protection</text>
|
||||
|
||||
<text x="60" y="340" font-family="system-ui, sans-serif" font-size="18" fill="#94a3b8">Real-time AI voice clone detection</text>
|
||||
<text x="60" y="368" font-family="system-ui, sans-serif" font-size="18" fill="#94a3b8">Dark web monitoring • Spam blocking</text>
|
||||
|
||||
<rect x="60" y="410" width="200" height="52" rx="26" fill="#3b82f6"/>
|
||||
<text x="160" y="442" font-family="system-ui, sans-serif" font-size="18" font-weight="600" fill="#f1f5f9" text-anchor="middle">Join the Waitlist</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
BIN
assets/ads/gd_portrait_600x750.png
Normal file
|
After Width: | Height: | Size: 105 KiB |
45
assets/ads/gd_portrait_600x750.svg
Normal file
@@ -0,0 +1,45 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="600" height="750" viewBox="0 0 600 750">
|
||||
<defs>
|
||||
<linearGradient id="bgGrad3" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#0a0f1e"/>
|
||||
<stop offset="100%" stop-color="#050812"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#3b82f6"/>
|
||||
<stop offset="100%" stop-color="#06b6d4"/>
|
||||
</linearGradient>
|
||||
<filter id="glow">
|
||||
<feGaussianBlur stdDeviation="3" result="blur"/>
|
||||
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
|
||||
</filter>
|
||||
</defs>
|
||||
<rect width="600" height="750" fill="url(#bgGrad3)"/>
|
||||
<rect width="600" height="5" fill="url(#brandBar)"/>
|
||||
|
||||
<!-- Phone icon -->
|
||||
<g transform="translate(300, 260)">
|
||||
<rect x="-60" y="-100" width="120" height="200" rx="18" fill="none" stroke="#3b82f6" stroke-width="3"/>
|
||||
<circle cx="0" cy="80" r="6" fill="#3b82f6"/>
|
||||
<!-- Sound waves -->
|
||||
<path d="M-30,-30 Q-50,-10 -30,10" fill="none" stroke="#06b6d4" stroke-width="2.5" stroke-linecap="round" opacity="0.6"/>
|
||||
<path d="M-20,-45 Q-65,-10 -20,25" fill="none" stroke="#06b6d4" stroke-width="2.5" stroke-linecap="round" opacity="0.9"/>
|
||||
<path d="M-10,-60 Q-80,-10 -10,40" fill="none" stroke="#06b6d4" stroke-width="2.5" stroke-linecap="round" filter="url(#glow)"/>
|
||||
</g>
|
||||
|
||||
<!-- Warning indicator -->
|
||||
<g transform="translate(300, 80)">
|
||||
<path d="M0,-30 L-20,0 L20,0 Z" fill="#f59e0b"/>
|
||||
<circle cx="0" cy="10" r="4" fill="#f59e0b"/>
|
||||
</g>
|
||||
|
||||
<text x="300" y="420" font-family="system-ui, sans-serif" font-size="34" font-weight="700" fill="#f1f5f9" text-anchor="middle">Voice Clone</text>
|
||||
<text x="300" y="460" font-family="system-ui, sans-serif" font-size="34" font-weight="700" fill="#06b6d4" text-anchor="middle">Detection</text>
|
||||
|
||||
<text x="300" y="510" font-family="system-ui, sans-serif" font-size="16" fill="#94a3b8" text-anchor="middle">AI detects synthetic voices</text>
|
||||
<text x="300" y="535" font-family="system-ui, sans-serif" font-size="16" fill="#94a3b8" text-anchor="middle">in real time with 99.7% accuracy</text>
|
||||
|
||||
<rect x="200" y="580" width="200" height="50" rx="25" fill="#3b82f6"/>
|
||||
<text x="300" y="611" font-family="system-ui, sans-serif" font-size="17" font-weight="600" fill="#f1f5f9" text-anchor="middle">Learn How We Detect It</text>
|
||||
|
||||
<text x="300" y="710" font-family="system-ui, sans-serif" font-size="13" fill="#64748b" text-anchor="middle">ShieldAI — AI-Powered Identity Protection</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |
BIN
assets/ads/gd_square_1200x1200.png
Normal file
|
After Width: | Height: | Size: 268 KiB |
45
assets/ads/gd_square_1200x1200.svg
Normal file
@@ -0,0 +1,45 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="1200" viewBox="0 0 1200 1200">
|
||||
<defs>
|
||||
<linearGradient id="bgGrad" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="#0a0f1e"/>
|
||||
<stop offset="100%" stop-color="#050812"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#3b82f6"/>
|
||||
<stop offset="100%" stop-color="#06b6d4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="shieldGrad" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="#3b82f6"/>
|
||||
<stop offset="100%" stop-color="#06b6d4"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="1200" height="1200" fill="url(#bgGrad)"/>
|
||||
<rect width="1200" height="6" fill="url(#brandBar)"/>
|
||||
<text x="600" y="160" font-family="system-ui, sans-serif" font-size="52" font-weight="700" fill="#f1f5f9" text-anchor="middle">3 Protections, 1 Platform</text>
|
||||
<text x="600" y="220" font-family="system-ui, sans-serif" font-size="24" fill="#94a3b8" text-anchor="middle">AI-Powered Identity Protection for Everyone</text>
|
||||
<rect x="120" y="300" width="280" height="320" rx="16" fill="#1a2332" stroke="#1e293b" stroke-width="1.5"/>
|
||||
<g transform="translate(260, 420)">
|
||||
<circle cx="0" cy="0" r="50" fill="#06b6d422" stroke="#06b6d4" stroke-width="2"/>
|
||||
<path d="M0,-40 Q30,-35 40,-10 Q45,5 35,20 L25,30 L0,40 L-25,30 L-35,20 Q-45,5 -40,-10 Q-30,-35 0,-40 Z" fill="none" stroke="#06b6d4" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M-12,0 L-4,8 L12,-10" fill="none" stroke="#f1f5f9" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</g>
|
||||
<text x="260" y="510" font-family="system-ui, sans-serif" font-size="22" font-weight="600" fill="#f1f5f9" text-anchor="middle">VoicePrint</text>
|
||||
<text x="260" y="540" font-family="system-ui, sans-serif" font-size="16" fill="#94a3b8" text-anchor="middle">AI Voice Clone Detection</text>
|
||||
<rect x="460" y="300" width="280" height="320" rx="16" fill="#1a2332" stroke="#1e293b" stroke-width="1.5"/>
|
||||
<g transform="translate(600, 420)">
|
||||
<circle cx="0" cy="0" r="50" fill="#3b82f622" stroke="#3b82f6" stroke-width="2"/>
|
||||
<path d="M-35,-30 L35,-30 L40,10 Q40,30 25,40 L0,45 L-25,40 Q-40,30 -40,10 Z" fill="none" stroke="#3b82f6" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M0,5 L0,25 M-10,15 L10,15" fill="none" stroke="#f1f5f9" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</g>
|
||||
<text x="600" y="510" font-family="system-ui, sans-serif" font-size="22" font-weight="600" fill="#f1f5f9" text-anchor="middle">DarkWatch</text>
|
||||
<text x="600" y="540" font-family="system-ui, sans-serif" font-size="16" fill="#94a3b8" text-anchor="middle">Dark Web Monitoring</text>
|
||||
<rect x="800" y="300" width="280" height="320" rx="16" fill="#1a2332" stroke="#1e293b" stroke-width="1.5"/>
|
||||
<g transform="translate(940, 420)">
|
||||
<circle cx="0" cy="0" r="50" fill="#22c55e22" stroke="#22c55e" stroke-width="2"/>
|
||||
<path d="M-40,-10 Q-40,-40 0,-40 Q40,-40 40,-10 Q40,15 20,30 L0,40 L-20,30 Q-40,15 -40,-10 Z" fill="none" stroke="#22c55e" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M-15,0 L-5,10 L18,-12" fill="none" stroke="#f1f5f9" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</g>
|
||||
<text x="940" y="510" font-family="system-ui, sans-serif" font-size="22" font-weight="600" fill="#f1f5f9" text-anchor="middle">SpamShield</text>
|
||||
<text x="940" y="540" font-family="system-ui, sans-serif" font-size="16" fill="#94a3b8" text-anchor="middle">Spam Call & Text Blocking</text>
|
||||
<text x="600" y="1100" font-family="system-ui, sans-serif" font-size="18" fill="#64748b" text-anchor="middle">Join 1,000+ Early Adopters</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.6 KiB |
633
assets/ads/generate_assets.py
Normal file
@@ -0,0 +1,633 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Generate ShieldAI ad creative SVGs for Google Display and Meta campaigns."""
|
||||
|
||||
import os
|
||||
|
||||
OUT = os.path.join(os.path.dirname(__file__))
|
||||
|
||||
# Brand colors
|
||||
DARK_BG = "#0a0f1e"
|
||||
CARD_BG = "#1a2332"
|
||||
TEXT_PRIMARY = "#f1f5f9"
|
||||
TEXT_SECONDARY = "#94a3b8"
|
||||
TEXT_MUTED = "#64748b"
|
||||
ACCENT_BLUE = "#3b82f6"
|
||||
ACCENT_CYAN = "#06b6d4"
|
||||
SUCCESS = "#22c55e"
|
||||
ERROR = "#ef4444"
|
||||
WARNING = "#f59e0b"
|
||||
BORDER = "#1e293b"
|
||||
|
||||
def shield_logo_svg(size=40, x=0, y=0):
|
||||
return f'''<g transform="translate({x},{y})">
|
||||
<circle cx="{size//2}" cy="{size//2}" r="{size//2}" fill="url(shieldGrad)"/>
|
||||
<path d="M{size//2-10},{size//2-8} L{size//2+10},{size//2-8} L{size//2+10},{size//2+6} Q{size//2},{size//2+14} {size//2},{size//2+14} Q{size//2},{size//2+14} {size//2-10},{size//2+6} Z" fill="none" stroke="{TEXT_PRIMARY}" stroke-width="2.5"/>
|
||||
<path d="M{size//2-4},{size//2-2} L{size//2},{size//2+4} L{size//2+7},{size//2-5}" fill="none" stroke="{TEXT_PRIMARY}" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</g>'''
|
||||
|
||||
def brand_bar(w, h):
|
||||
return f'''<rect width="{w}" height="{h}" fill="url(brandBar)"/>'''
|
||||
|
||||
def safe_text(text, max_len=80):
|
||||
return text[:max_len] if len(text) > max_len else text
|
||||
|
||||
# ============================================================
|
||||
# GOOGLE DISPLAY ASSETS
|
||||
# ============================================================
|
||||
|
||||
def gd_square():
|
||||
"""1:1 (1200x1200) — '3 Protections, 1 Platform' three-icon panel"""
|
||||
w, h = 1200, 1200
|
||||
icon_size = 100
|
||||
box_w, box_h = 280, 320
|
||||
gap = 60
|
||||
total_w = 3 * box_w + 2 * gap
|
||||
start_x = (w - total_w) // 2
|
||||
top_y = 300
|
||||
|
||||
icons_data = [
|
||||
("VoicePrint", "AI Voice Clone Detection", ACCENT_CYAN, [
|
||||
"M0,-40 Q30,-35 40,-10 Q45,5 35,20 L25,30 L0,40 L-25,30 L-35,20 Q-45,5 -40,-10 Q-30,-35 0,-40 Z",
|
||||
"M-12,0 L-4,8 L12,-10"
|
||||
]),
|
||||
("DarkWatch", "Dark Web Monitoring", ACCENT_BLUE, [
|
||||
"M-35,-30 L35,-30 L40,10 Q40,30 25,40 L0,45 L-25,40 Q-40,30 -40,10 Z",
|
||||
"M0,5 L0,25 M-10,15 L10,15"
|
||||
]),
|
||||
("SpamShield", "Spam Call & Text Blocking", SUCCESS, [
|
||||
"M-40,-10 Q-40,-40 0,-40 Q40,-40 40,-10 Q40,15 20,30 L0,40 L-20,30 Q-40,15 -40,-10 Z",
|
||||
"M-15,0 L-5,10 L18,-12"
|
||||
]),
|
||||
]
|
||||
|
||||
svg = f'''<svg xmlns="http://www.w3.org/2000/svg" width="{w}" height="{h}" viewBox="0 0 {w} {h}">
|
||||
<defs>
|
||||
<linearGradient id="bgGrad" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="{DARK_BG}"/>
|
||||
<stop offset="100%" stop-color="#050812"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="{ACCENT_BLUE}"/>
|
||||
<stop offset="100%" stop-color="{ACCENT_CYAN}"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="shieldGrad" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="{ACCENT_BLUE}"/>
|
||||
<stop offset="100%" stop-color="{ACCENT_CYAN}"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="{w}" height="{h}" fill="url(#bgGrad)"/>
|
||||
{brand_bar(w, 6)}
|
||||
<text x="{w//2}" y="160" font-family="system-ui, sans-serif" font-size="52" font-weight="700" fill="{TEXT_PRIMARY}" text-anchor="middle">3 Protections, 1 Platform</text>
|
||||
<text x="{w//2}" y="220" font-family="system-ui, sans-serif" font-size="24" fill="{TEXT_SECONDARY}" text-anchor="middle">AI-Powered Identity Protection for Everyone</text>'''
|
||||
|
||||
for i, (name, desc, color, paths) in enumerate(icons_data):
|
||||
cx = start_x + i * (box_w + gap) + box_w // 2
|
||||
cy = top_y + box_h // 2
|
||||
|
||||
svg += f'''
|
||||
<rect x="{start_x + i * (box_w + gap)}" y="{top_y}" width="{box_w}" height="{box_h}" rx="16" fill="{CARD_BG}" stroke="{BORDER}" stroke-width="1.5"/>'''
|
||||
svg += f'''
|
||||
<g transform="translate({cx}, {cy - 40})">
|
||||
<circle cx="0" cy="0" r="50" fill="{color}22" stroke="{color}" stroke-width="2"/>
|
||||
<path d="{paths[0]}" fill="none" stroke="{color}" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="{paths[1]}" fill="none" stroke="{TEXT_PRIMARY}" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</g>'''
|
||||
svg += f'''
|
||||
<text x="{cx}" y="{cy + 50}" font-family="system-ui, sans-serif" font-size="22" font-weight="600" fill="{TEXT_PRIMARY}" text-anchor="middle">{name}</text>
|
||||
<text x="{cx}" y="{cy + 80}" font-family="system-ui, sans-serif" font-size="16" fill="{TEXT_SECONDARY}" text-anchor="middle">{desc}</text>'''
|
||||
|
||||
svg += f'''
|
||||
<text x="{w//2}" y="{h - 100}" font-family="system-ui, sans-serif" font-size="18" fill="{TEXT_MUTED}" text-anchor="middle">Join 1,000+ Early Adopters</text>
|
||||
</svg>'''
|
||||
return svg
|
||||
|
||||
|
||||
def gd_landscape():
|
||||
"""1.91:1 (1200x628) — 'Your Family Deserves AI Protection' family + shield"""
|
||||
w, h = 1200, 628
|
||||
svg = f'''<svg xmlns="http://www.w3.org/2000/svg" width="{w}" height="{h}" viewBox="0 0 {w} {h}">
|
||||
<defs>
|
||||
<linearGradient id="bgGrad2" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="{DARK_BG}"/>
|
||||
<stop offset="60%" stop-color="{DARK_BG}"/>
|
||||
<stop offset="100%" stop-color="#0c1628"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="{ACCENT_BLUE}"/>
|
||||
<stop offset="100%" stop-color="{ACCENT_CYAN}"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="shieldGrad" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="{ACCENT_BLUE}"/>
|
||||
<stop offset="100%" stop-color="{ACCENT_CYAN}"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="{w}" height="{h}" fill="url(#bgGrad2)"/>
|
||||
{brand_bar(w, 5)}
|
||||
<circle cx="830" cy="314" r="240" fill="{ACCENT_BLUE}08"/>
|
||||
<circle cx="830" cy="314" r="180" fill="{ACCENT_BLUE}06"/>
|
||||
<circle cx="830" cy="314" r="220" fill="none" stroke="{ACCENT_BLUE}15" stroke-width="1" stroke-dasharray="8 8"/>
|
||||
|
||||
<!-- Digital shield icon (large, right side) -->
|
||||
<g transform="translate(830, 314)">
|
||||
<path d="M-70,-60 L70,-60 L75,20 Q75,60 40,80 L0,95 L-40,80 Q-75,60 -75,20 Z" fill="none" stroke="url(#shieldGrad)" stroke-width="3"/>
|
||||
<path d="M-30,-10 L0,25 L35,-20" fill="none" stroke="{SUCCESS}" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<text x="0" y="130" font-family="system-ui, sans-serif" font-size="14" fill="{TEXT_SECONDARY}" text-anchor="middle">AI-Powered Protection</text>
|
||||
</g>
|
||||
|
||||
<!-- Left side: text -->
|
||||
<text x="60" y="220" font-family="system-ui, sans-serif" font-size="44" font-weight="700" fill="{TEXT_PRIMARY}">Your Family Deserves</text>
|
||||
<text x="60" y="280" font-family="system-ui, sans-serif" font-size="44" font-weight="700" fill="{ACCENT_CYAN}">AI Protection</text>
|
||||
|
||||
<text x="60" y="340" font-family="system-ui, sans-serif" font-size="18" fill="{TEXT_SECONDARY}">Real-time AI voice clone detection</text>
|
||||
<text x="60" y="368" font-family="system-ui, sans-serif" font-size="18" fill="{TEXT_SECONDARY}">Dark web monitoring • Spam blocking</text>
|
||||
|
||||
<rect x="60" y="410" width="200" height="52" rx="26" fill="{ACCENT_BLUE}"/>
|
||||
<text x="160" y="442" font-family="system-ui, sans-serif" font-size="18" font-weight="600" fill="{TEXT_PRIMARY}" text-anchor="middle">Join the Waitlist</text>
|
||||
</svg>'''
|
||||
return svg
|
||||
|
||||
|
||||
def gd_portrait():
|
||||
"""4:5 (600x750) — 'Voice Clone Detection' phone call visualization"""
|
||||
w, h = 600, 750
|
||||
svg = f'''<svg xmlns="http://www.w3.org/2000/svg" width="{w}" height="{h}" viewBox="0 0 {w} {h}">
|
||||
<defs>
|
||||
<linearGradient id="bgGrad3" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="{DARK_BG}"/>
|
||||
<stop offset="100%" stop-color="#050812"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="{ACCENT_BLUE}"/>
|
||||
<stop offset="100%" stop-color="{ACCENT_CYAN}"/>
|
||||
</linearGradient>
|
||||
<filter id="glow">
|
||||
<feGaussianBlur stdDeviation="3" result="blur"/>
|
||||
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
|
||||
</filter>
|
||||
</defs>
|
||||
<rect width="{w}" height="{h}" fill="url(#bgGrad3)"/>
|
||||
{brand_bar(w, 5)}
|
||||
|
||||
<!-- Phone icon -->
|
||||
<g transform="translate(300, 260)">
|
||||
<rect x="-60" y="-100" width="120" height="200" rx="18" fill="none" stroke="{ACCENT_BLUE}" stroke-width="3"/>
|
||||
<circle cx="0" cy="80" r="6" fill="{ACCENT_BLUE}"/>
|
||||
<!-- Sound waves -->
|
||||
<path d="M-30,-30 Q-50,-10 -30,10" fill="none" stroke="{ACCENT_CYAN}" stroke-width="2.5" stroke-linecap="round" opacity="0.6"/>
|
||||
<path d="M-20,-45 Q-65,-10 -20,25" fill="none" stroke="{ACCENT_CYAN}" stroke-width="2.5" stroke-linecap="round" opacity="0.9"/>
|
||||
<path d="M-10,-60 Q-80,-10 -10,40" fill="none" stroke="{ACCENT_CYAN}" stroke-width="2.5" stroke-linecap="round" filter="url(#glow)"/>
|
||||
</g>
|
||||
|
||||
<!-- Warning indicator -->
|
||||
<g transform="translate(300, 80)">
|
||||
<path d="M0,-30 L-20,0 L20,0 Z" fill="{WARNING}"/>
|
||||
<circle cx="0" cy="10" r="4" fill="{WARNING}"/>
|
||||
</g>
|
||||
|
||||
<text x="{w//2}" y="420" font-family="system-ui, sans-serif" font-size="34" font-weight="700" fill="{TEXT_PRIMARY}" text-anchor="middle">Voice Clone</text>
|
||||
<text x="{w//2}" y="460" font-family="system-ui, sans-serif" font-size="34" font-weight="700" fill="{ACCENT_CYAN}" text-anchor="middle">Detection</text>
|
||||
|
||||
<text x="{w//2}" y="510" font-family="system-ui, sans-serif" font-size="16" fill="{TEXT_SECONDARY}" text-anchor="middle">AI detects synthetic voices</text>
|
||||
<text x="{w//2}" y="535" font-family="system-ui, sans-serif" font-size="16" fill="{TEXT_SECONDARY}" text-anchor="middle">in real time with 99.7% accuracy</text>
|
||||
|
||||
<rect x="200" y="580" width="200" height="50" rx="25" fill="{ACCENT_BLUE}"/>
|
||||
<text x="300" y="611" font-family="system-ui, sans-serif" font-size="17" font-weight="600" fill="{TEXT_PRIMARY}" text-anchor="middle">Learn How We Detect It</text>
|
||||
|
||||
<text x="{w//2}" y="{h - 40}" font-family="system-ui, sans-serif" font-size="13" fill="{TEXT_MUTED}" text-anchor="middle">ShieldAI — AI-Powered Identity Protection</text>
|
||||
</svg>'''
|
||||
return svg
|
||||
|
||||
|
||||
# ============================================================
|
||||
# META CREATIVE A: Voice Clone Threat
|
||||
# ============================================================
|
||||
|
||||
def meta_a_1x1():
|
||||
"""1:1 (1080x1080) — split-screen family / AI distortion"""
|
||||
w, h = 1080, 1080
|
||||
half = w // 2
|
||||
svg = f'''<svg xmlns="http://www.w3.org/2000/svg" width="{w}" height="{h}" viewBox="0 0 {w} {h}">
|
||||
<defs>
|
||||
<linearGradient id="bgGradL" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#0a1528"/>
|
||||
<stop offset="100%" stop-color="#0f1d35"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="bgGradR" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#1a0a0a"/>
|
||||
<stop offset="100%" stop-color="#2d0f0f"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="{ACCENT_BLUE}"/>
|
||||
<stop offset="100%" stop-color="{ACCENT_CYAN}"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="distortGrad" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="{ERROR}66"/>
|
||||
<stop offset="100%" stop-color="{ERROR}22"/>
|
||||
</linearGradient>
|
||||
<filter id="glitch">
|
||||
<feTurbulence type="fractalNoise" baseFrequency="0.9" numOctaves="3" result="noise"/>
|
||||
<feDisplacementMap in="SourceGraphic" in2="noise" scale="8" xChannelSelector="R" yChannelSelector="G"/>
|
||||
</filter>
|
||||
</defs>
|
||||
|
||||
<!-- Left panel: normal family -->
|
||||
<rect x="0" y="0" width="{half}" height="{h}" fill="url(#bgGradL)"/>
|
||||
<circle cx="{half//2}" cy="280" r="60" fill="{ACCENT_BLUE}30" stroke="{ACCENT_BLUE}" stroke-width="2"/>
|
||||
<circle cx="{half//2 - 60}" cy="220" r="40" fill="{ACCENT_BLUE}20" stroke="{ACCENT_BLUE}" stroke-width="1.5"/>
|
||||
<circle cx="{half//2 + 70}" cy="230" r="35" fill="{ACCENT_BLUE}20" stroke="{ACCENT_BLUE}" stroke-width="1.5"/>
|
||||
<circle cx="{half//2 - 30}" cy="360" r="45" fill="{ACCENT_BLUE}20" stroke="{ACCENT_BLUE}" stroke-width="1.5"/>
|
||||
<rect x="{half//2 - 70}" y="420" width="140" height="180" rx="10" fill="{ACCENT_BLUE}15" stroke="{ACCENT_BLUE}" stroke-width="1.5" opacity="0.6"/>
|
||||
<text x="{half//2}" y="680" font-family="system-ui, sans-serif" font-size="22" font-weight="600" fill="{TEXT_PRIMARY}" text-anchor="middle">Your Family</text>
|
||||
<text x="{half//2}" y="710" font-family="system-ui, sans-serif" font-size="15" fill="{TEXT_SECONDARY}" text-anchor="middle">Real & Unfiltered</text>
|
||||
|
||||
<!-- Center divider with phone icon -->
|
||||
<rect x="{half - 2}" y="0" width="4" height="{h}" fill="{BORDER}"/>
|
||||
<g transform="translate({half}, {h//2 - 60})">
|
||||
<rect x="-25" y="-50" width="50" height="100" rx="10" fill="{ACCENT_BLUE}" opacity="0.3"/>
|
||||
<path d="M-10,-10 Q-20,0 -10,10" fill="none" stroke="{ERROR}" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<path d="M0,-20 Q-25,0 0,20" fill="none" stroke="{ERROR}" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<path d="M10,-30 Q-30,0 10,30" fill="none" stroke="{ERROR}" stroke-width="2" stroke-linecap="round" opacity="0.7"/>
|
||||
</g>
|
||||
|
||||
<!-- Right panel: distorted/AI -->
|
||||
<rect x="{half}" y="0" width="{half}" height="{h}" fill="url(#bgGradR)"/>
|
||||
<g filter="url(#glitch)">
|
||||
<circle cx="{half + half//2}" cy="280" r="60" fill="{ERROR}30" stroke="{ERROR}" stroke-width="2"/>
|
||||
<circle cx="{half + half//2 - 60}" cy="220" r="40" fill="{ERROR}20" stroke="{ERROR}" stroke-width="1.5"/>
|
||||
<circle cx="{half + half//2 + 70}" cy="230" r="35" fill="{ERROR}20" stroke="{ERROR}" stroke-width="1.5"/>
|
||||
<circle cx="{half + half//2 - 30}" cy="360" r="45" fill="{ERROR}20" stroke="{ERROR}" stroke-width="1.5"/>
|
||||
<rect x="{half + half//2 - 70}" y="420" width="140" height="180" rx="10" fill="{ERROR}15" stroke="{ERROR}" stroke-width="1.5" opacity="0.6"/>
|
||||
</g>
|
||||
<text x="{half + half//2}" y="680" font-family="system-ui, sans-serif" font-size="22" font-weight="600" fill="{ERROR}" text-anchor="middle">AI Clone</text>
|
||||
<text x="{half + half//2}" y="710" font-family="system-ui, sans-serif" font-size="15" fill="{TEXT_MUTED}" text-anchor="middle">Synthetic & Dangerous</text>
|
||||
|
||||
<!-- Bottom brand bar -->
|
||||
<rect x="0" y="{h - 90}" width="{w}" height="90" fill="{CARD_BG}"/>
|
||||
<text x="{w//2}" y="{h - 55}" font-family="system-ui, sans-serif" font-size="22" font-weight="600" fill="{TEXT_PRIMARY}" text-anchor="middle">Your Family's Voice, Protected</text>
|
||||
<text x="{w//2}" y="{h - 28}" font-family="system-ui, sans-serif" font-size="15" fill="{TEXT_SECONDARY}" text-anchor="middle">ShieldAI detects AI voice cloning with 99.7% accuracy</text>
|
||||
</svg>'''
|
||||
return svg
|
||||
|
||||
|
||||
def meta_a_191():
|
||||
"""1.91:1 (1200x628) — split-screen family / AI distortion"""
|
||||
w, h = 1200, 628
|
||||
half = w // 2
|
||||
svg = f'''<svg xmlns="http://www.w3.org/2000/svg" width="{w}" height="{h}" viewBox="0 0 {w} {h}">
|
||||
<defs>
|
||||
<linearGradient id="bgL" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#0a1528"/>
|
||||
<stop offset="100%" stop-color="#0f1d35"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="bgR" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#1a0a0a"/>
|
||||
<stop offset="100%" stop-color="#2d0f0f"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="{ACCENT_BLUE}"/>
|
||||
<stop offset="100%" stop-color="{ACCENT_CYAN}"/>
|
||||
</linearGradient>
|
||||
<filter id="glitch2">
|
||||
<feTurbulence type="fractalNoise" baseFrequency="0.8" numOctaves="2" result="noise"/>
|
||||
<feDisplacementMap in="SourceGraphic" in2="noise" scale="6" xChannelSelector="R" yChannelSelector="G"/>
|
||||
</filter>
|
||||
</defs>
|
||||
<rect x="0" y="0" width="{half}" height="{h}" fill="url(#bgL)"/>
|
||||
<circle cx="{half//2}" cy="{h//2 - 30}" r="35" fill="{ACCENT_BLUE}30" stroke="{ACCENT_BLUE}" stroke-width="2"/>
|
||||
<circle cx="{half//2 - 50}" cy="{h//2 - 80}" r="25" fill="{ACCENT_BLUE}20" stroke="{ACCENT_BLUE}" stroke-width="1.5"/>
|
||||
<circle cx="{half//2 + 55}" cy="{h//2 - 75}" r="22" fill="{ACCENT_BLUE}20" stroke="{ACCENT_BLUE}" stroke-width="1.5"/>
|
||||
<text x="{half//2}" y="{h//2 + 60}" font-family="system-ui, sans-serif" font-size="20" font-weight="600" fill="{TEXT_PRIMARY}" text-anchor="middle">Your Family</text>
|
||||
<rect x="0" y="{h - 50}" width="{half}" height="50" fill="{CARD_BG}"/>
|
||||
<text x="{half//2}" y="{h - 22}" font-family="system-ui, sans-serif" font-size="13" fill="{TEXT_SECONDARY}" text-anchor="middle">Real voice, real moment</text>
|
||||
|
||||
<rect x="{half - 1}" y="0" width="3" height="{h}" fill="{BORDER}"/>
|
||||
<rect x="{half}" y="0" width="{half}" height="{h}" fill="url(#bgR)"/>
|
||||
<g filter="url(#glitch2)">
|
||||
<circle cx="{half + half//2}" cy="{h//2 - 30}" r="35" fill="{ERROR}30" stroke="{ERROR}" stroke-width="2"/>
|
||||
<circle cx="{half + half//2 - 50}" cy="{h//2 - 80}" r="25" fill="{ERROR}20" stroke="{ERROR}" stroke-width="1.5"/>
|
||||
<circle cx="{half + half//2 + 55}" cy="{h//2 - 75}" r="22" fill="{ERROR}20" stroke="{ERROR}" stroke-width="1.5"/>
|
||||
</g>
|
||||
<text x="{half + half//2}" y="{h//2 + 60}" font-family="system-ui, sans-serif" font-size="20" font-weight="600" fill="{ERROR}" text-anchor="middle">AI Clone</text>
|
||||
<rect x="{half}" y="{h - 50}" width="{half}" height="50" fill="{ERROR}22"/>
|
||||
<text x="{half + half//2}" y="{h - 22}" font-family="system-ui, sans-serif" font-size="13" fill="{TEXT_MUTED}" text-anchor="middle">Synthetic voice clone</text>
|
||||
|
||||
<text x="30" y="50" font-family="system-ui, sans-serif" font-size="16" font-weight="600" fill="{TEXT_PRIMARY}">Your Family's Voice, Protected</text>
|
||||
</svg>'''
|
||||
return svg
|
||||
|
||||
|
||||
# ============================================================
|
||||
# META CREATIVE B: Dark Web
|
||||
# ============================================================
|
||||
|
||||
def meta_b_1x1():
|
||||
"""1:1 (1080x1080) — dark terminal HUD aesthetic"""
|
||||
w, h = 1080, 1080
|
||||
svg = f'''<svg xmlns="http://www.w3.org/2000/svg" width="{w}" height="{h}" viewBox="0 0 {w} {h}">
|
||||
<defs>
|
||||
<linearGradient id="bgTerm" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#050a05"/>
|
||||
<stop offset="100%" stop-color="#0a1a0a"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="{SUCCESS}"/>
|
||||
<stop offset="100%" stop-color="#16a34a"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="{w}" height="{h}" fill="url(#bgTerm)"/>
|
||||
|
||||
<!-- Matrix-like grid lines -->
|
||||
<g stroke="{SUCCESS}10" stroke-width="0.5">
|
||||
<line x1="0" y1="100" x2="{w}" y2="100"/>
|
||||
<line x1="0" y1="200" x2="{w}" y2="200"/>
|
||||
<line x1="0" y1="300" x2="{w}" y2="300"/>
|
||||
<line x1="0" y1="400" x2="{w}" y2="400"/>
|
||||
<line x1="0" y1="500" x2="{w}" y2="500"/>
|
||||
<line x1="0" y1="600" x2="{w}" y2="600"/>
|
||||
<line x1="0" y1="700" x2="{w}" y2="700"/>
|
||||
<line x1="0" y1="800" x2="{w}" y2="800"/>
|
||||
<line x1="0" y1="900" x2="{w}" y2="900"/>
|
||||
<line x1="0" y1="1000" x2="{w}" y2="1000"/>
|
||||
</g>
|
||||
|
||||
<!-- Terminal window frame -->
|
||||
<rect x="100" y="200" width="{w - 200}" height="500" rx="12" fill="#0d1f0d" stroke="{SUCCESS}30" stroke-width="1.5"/>
|
||||
<rect x="100" y="200" width="{w - 200}" height="40" rx="12" fill="#143014"/>
|
||||
<rect x="100" y="228" width="{w - 200}" height="12" fill="#143014"/>
|
||||
<circle cx="130" cy="220" r="6" fill="{ERROR}"/>
|
||||
<circle cx="155" cy="220" r="6" fill="{WARNING}"/>
|
||||
<circle cx="180" cy="220" r="6" fill="{SUCCESS}"/>
|
||||
<text x="200" y="225" font-family="monospace" font-size="14" fill="{TEXT_MUTED}">darkwatch@shieldai:~$</text>
|
||||
|
||||
<!-- Terminal content -->
|
||||
<text x="130" y="280" font-family="monospace" font-size="16" fill="{WARNING}">> Scanning 150+ dark web marketplaces...</text>
|
||||
<text x="130" y="320" font-family="monospace" font-size="16" fill="{WARNING}">> Analyzing breach databases...</text>
|
||||
|
||||
<text x="130" y="380" font-family="monospace" font-size="18" font-weight="bold" fill="{ERROR}">! ALERT: MATCHES FOUND</text>
|
||||
|
||||
<rect x="130" y="410" width="320" height="28" fill="{ERROR}15"/>
|
||||
<text x="140" y="430" font-family="monospace" font-size="15" fill="{ERROR}">email:***@gmail.com — 3 breaches</text>
|
||||
|
||||
<rect x="130" y="445" width="320" height="28" fill="{ERROR}15"/>
|
||||
<text x="140" y="465" font-family="monospace" font-size="15" fill="{ERROR}">phone:+1 (555) ***-8842 — 2 breaches</text>
|
||||
|
||||
<rect x="130" y="480" width="320" height="28" fill="{ERROR}15"/>
|
||||
<text x="140" y="500" font-family="monospace" font-size="15" fill="{ERROR}">ssn:***-**-6781 — 1 breach</text>
|
||||
|
||||
<text x="130" y="550" font-family="monospace" font-size="16" fill="{SUCCESS}">> Total exposures found: 5,284</text>
|
||||
<text x="130" y="580" font-family="monospace" font-size="16" fill="{ACCENT_CYAN}">> Run scan on your data? [Y/n] _</text>
|
||||
|
||||
<!-- Bottom CTA -->
|
||||
<rect x="340" y="750" width="400" height="56" rx="28" fill="{SUCCESS}"/>
|
||||
<text x="540" y="785" font-family="system-ui, sans-serif" font-size="20" font-weight="700" fill="#050a05" text-anchor="middle">Scan Your Email Free</text>
|
||||
|
||||
<text x="{w//2}" y="860" font-family="system-ui, sans-serif" font-size="16" fill="{TEXT_MUTED}" text-anchor="middle">ShieldAI DarkWatch — 24/7 Dark Web Monitoring</text>
|
||||
|
||||
<text x="{w//2}" y="920" font-family="system-ui, sans-serif" font-size="28" font-weight="700" fill="{TEXT_PRIMARY}" text-anchor="middle">5K+ Exposures Found.</text>
|
||||
<text x="{w//2}" y="960" font-family="system-ui, sans-serif" font-size="28" font-weight="700" fill="{SUCCESS}" text-anchor="middle">What About Yours?</text>
|
||||
</svg>'''
|
||||
return svg
|
||||
|
||||
|
||||
def meta_b_45():
|
||||
"""4:5 (1080x1350) — dark terminal HUD"""
|
||||
w, h = 1080, 1350
|
||||
svg = f'''<svg xmlns="http://www.w3.org/2000/svg" width="{w}" height="{h}" viewBox="0 0 {w} {h}">
|
||||
<defs>
|
||||
<linearGradient id="bgB45" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#050a05"/>
|
||||
<stop offset="100%" stop-color="#0a1a0a"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="{SUCCESS}"/>
|
||||
<stop offset="100%" stop-color="#16a34a"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="{w}" height="{h}" fill="url(#bgB45)"/>
|
||||
|
||||
<!-- Terminal -->
|
||||
<rect x="80" y="250" width="{w - 160}" height="520" rx="12" fill="#0d1f0d" stroke="{SUCCESS}30" stroke-width="1.5"/>
|
||||
<rect x="80" y="250" width="{w - 160}" height="40" rx="12" fill="#143014"/>
|
||||
<rect x="80" y="278" width="{w - 160}" height="12" fill="#143014"/>
|
||||
<circle cx="110" cy="270" r="6" fill="{ERROR}"/>
|
||||
<circle cx="135" cy="270" r="6" fill="{WARNING}"/>
|
||||
<circle cx="160" cy="270" r="6" fill="{SUCCESS}"/>
|
||||
<text x="180" y="275" font-family="monospace" font-size="14" fill="{TEXT_MUTED}">darkwatch@shieldai:~$</text>
|
||||
|
||||
<text x="110" y="330" font-family="monospace" font-size="16" fill="{WARNING}">> Scanning 150+ dark web marketplaces...</text>
|
||||
<text x="110" y="360" font-family="monospace" font-size="16" fill="{WARNING}">> Cross-referencing databases...</text>
|
||||
|
||||
<text x="110" y="415" font-family="monospace" font-size="18" font-weight="bold" fill="{ERROR}">! ALERT: DATA EXPOSED</text>
|
||||
|
||||
<rect x="110" y="445" width="350" height="28" fill="{ERROR}15"/>
|
||||
<text x="120" y="465" font-family="monospace" font-size="14" fill="{ERROR}">email:***@gmail.com — 3 breaches</text>
|
||||
|
||||
<rect x="110" y="480" width="350" height="28" fill="{ERROR}15"/>
|
||||
<text x="120" y="500" font-family="monospace" font-size="14" fill="{ERROR}">phone:+1 (555) ***-8842 — 2 breaches</text>
|
||||
|
||||
<rect x="110" y="515" width="350" height="28" fill="{ERROR}15"/>
|
||||
<text x="120" y="535" font-family="monospace" font-size="14" fill="{ERROR}">ssn:***-**-6781 — 1 breach</text>
|
||||
|
||||
<rect x="110" y="550" width="350" height="28" fill="{ERROR}15"/>
|
||||
<text x="120" y="570" font-family="monospace" font-size="14" fill="{ERROR}">Address:*** Oak St — 1 breach</text>
|
||||
|
||||
<text x="110" y="625" font-family="monospace" font-size="16" fill="{SUCCESS}">> Total exposures monitored: 5,284</text>
|
||||
<text x="110" y="660" font-family="monospace" font-size="16" fill="{ACCENT_CYAN}">> Run scan on your data? [Y/n] _</text>
|
||||
|
||||
<text x="{w//2}" y="840" font-family="system-ui, sans-serif" font-size="30" font-weight="700" fill="{TEXT_PRIMARY}" text-anchor="middle">Your Data May Already Be</text>
|
||||
<text x="{w//2}" y="885" font-family="system-ui, sans-serif" font-size="30" font-weight="700" fill="{ERROR}" text-anchor="middle">For Sale on the Dark Web</text>
|
||||
|
||||
<text x="{w//2}" y="940" font-family="system-ui, sans-serif" font-size="16" fill="{TEXT_SECONDARY}" text-anchor="middle">ShieldAI scans 150+ marketplaces 24/7 and alerts you instantly</text>
|
||||
|
||||
<rect x="{w//2 - 175}" y="1000" width="350" height="56" rx="28" fill="{SUCCESS}"/>
|
||||
<text x="{w//2}" y="1035" font-family="system-ui, sans-serif" font-size="20" font-weight="700" fill="#050a05" text-anchor="middle">Scan Your Email Free</text>
|
||||
|
||||
<text x="{w//2}" y="{h - 50}" font-family="system-ui, sans-serif" font-size="14" fill="{TEXT_MUTED}" text-anchor="middle">ShieldAI — AI-Powered Identity Protection for Everyone</text>
|
||||
</svg>'''
|
||||
return svg
|
||||
|
||||
|
||||
# ============================================================
|
||||
# META CREATIVE C: 3 Protections
|
||||
# ============================================================
|
||||
|
||||
def meta_c_1x1():
|
||||
"""1:1 (1080x1080) — three-panel layout"""
|
||||
w, h = 1080, 1080
|
||||
panel_w, panel_h = 300, 400
|
||||
gap = 30
|
||||
total_w = 3 * panel_w + 2 * gap
|
||||
start_x = (w - total_w) // 2
|
||||
top_y = 280
|
||||
|
||||
panels = [
|
||||
("VoicePrint", ACCENT_CYAN, "AI Voice Clone\nDetection", "Real-time detection\nof synthetic voices\nwith 99.7% accuracy"),
|
||||
("DarkWatch", ACCENT_BLUE, "Dark Web\nMonitoring", "24/7 scanning of\n150+ marketplaces\nfor your data"),
|
||||
("SpamShield", SUCCESS, "Spam Call &\nText Blocking", "AI-powered filtering\nof spam calls\nand text messages"),
|
||||
]
|
||||
|
||||
svg = f'''<svg xmlns="http://www.w3.org/2000/svg" width="{w}" height="{h}" viewBox="0 0 {w} {h}">
|
||||
<defs>
|
||||
<linearGradient id="bgC" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="{DARK_BG}"/>
|
||||
<stop offset="100%" stop-color="#050812"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="{ACCENT_BLUE}"/>
|
||||
<stop offset="100%" stop-color="{ACCENT_CYAN}"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="{w}" height="{h}" fill="url(#bgC)"/>
|
||||
{brand_bar(w, 6)}
|
||||
|
||||
<text x="{w//2}" y="140" font-family="system-ui, sans-serif" font-size="42" font-weight="700" fill="{TEXT_PRIMARY}" text-anchor="middle">3 Ways ShieldAI Protects Your Family</text>
|
||||
<text x="{w//2}" y="185" font-family="system-ui, sans-serif" font-size="18" fill="{TEXT_SECONDARY}" text-anchor="middle">VoicePrint + DarkWatch + SpamShield</text>'''
|
||||
|
||||
for i, (name, color, title, desc) in enumerate(panels):
|
||||
px = start_x + i * (panel_w + gap)
|
||||
py = top_y
|
||||
cx = px + panel_w // 2
|
||||
icon_y = py + 60
|
||||
|
||||
svg += f'''
|
||||
<rect x="{px}" y="{py}" width="{panel_w}" height="{panel_h}" rx="16" fill="{CARD_BG}" stroke="{color}30" stroke-width="1.5"/>
|
||||
<circle cx="{cx}" cy="{icon_y}" r="40" fill="{color}22" stroke="{color}" stroke-width="2"/>
|
||||
<text x="{cx}" y="{icon_y + 5}" font-family="system-ui, sans-serif" font-size="18" font-weight="700" fill="{color}" text-anchor="middle">{name}</text>'''
|
||||
|
||||
lines = title.split('\n')
|
||||
for li, line in enumerate(lines):
|
||||
svg += f'''
|
||||
<text x="{cx}" y="{icon_y + 60 + li * 32}" font-family="system-ui, sans-serif" font-size="17" font-weight="600" fill="{TEXT_PRIMARY}" text-anchor="middle">{line}</text>'''
|
||||
|
||||
desc_lines = desc.split('\n')
|
||||
for li, line in enumerate(desc_lines):
|
||||
svg += f'''
|
||||
<text x="{cx}" y="{icon_y + 120 + li * 25}" font-family="system-ui, sans-serif" font-size="14" fill="{TEXT_SECONDARY}" text-anchor="middle">{line}</text>'''
|
||||
|
||||
svg += f'''
|
||||
<rect x="{w//2 - 135}" y="760" width="270" height="52" rx="26" fill="{ACCENT_BLUE}"/>
|
||||
<text x="{w//2}" y="793" font-family="system-ui, sans-serif" font-size="18" font-weight="600" fill="{TEXT_PRIMARY}" text-anchor="middle">Join the Waitlist</text>
|
||||
|
||||
<text x="{w//2}" y="870" font-family="system-ui, sans-serif" font-size="15" fill="{TEXT_MUTED}" text-anchor="middle">Three critical protections, one powerful platform</text>
|
||||
<text x="{w//2}" y="900" font-family="system-ui, sans-serif" font-size="14" fill="{TEXT_MUTED}" text-anchor="middle">Start free. Launching soon.</text>
|
||||
</svg>'''
|
||||
return svg
|
||||
|
||||
|
||||
# ============================================================
|
||||
# META CREATIVE D: Family Protection
|
||||
# ============================================================
|
||||
|
||||
def meta_d_base(w, h, small=False):
|
||||
"""Family protection — multi-generational family with digital shield overlay"""
|
||||
svg = f'''<svg xmlns="http://www.w3.org/2000/svg" width="{w}" height="{h}" viewBox="0 0 {w} {h}">
|
||||
<defs>
|
||||
<radialGradient id="shieldGlow" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="{ACCENT_BLUE}30"/>
|
||||
<stop offset="100%" stop-color="{ACCENT_BLUE}00"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="bgD" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="{DARK_BG}"/>
|
||||
<stop offset="60%" stop-color="#0d1a30"/>
|
||||
<stop offset="100%" stop-color="{DARK_BG}"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="{ACCENT_BLUE}"/>
|
||||
<stop offset="100%" stop-color="{ACCENT_CYAN}"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="shieldGradD" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="{ACCENT_BLUE}"/>
|
||||
<stop offset="100%" stop-color="{ACCENT_CYAN}"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="{w}" height="{h}" fill="url(#bgD)"/>
|
||||
{brand_bar(w, 5)}
|
||||
|
||||
<!-- Digital shield overlay -->
|
||||
<circle cx="{w//2}" cy="{h//2}" r="{min(w,h)*0.38}" fill="url(#shieldGlow)"/>
|
||||
<g transform="translate({w//2}, {h//2 - 30})">
|
||||
<path d="M-60,-55 L60,-55 L65,15 Q65,55 35,75 L0,90 L-35,75 Q-65,55 -65,15 Z" fill="none" stroke="url(#shieldGradD)" stroke-width="3" opacity="0.8"/>
|
||||
<path d="M-25,-5 L0,25 L30,-15" fill="none" stroke="{SUCCESS}" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</g>
|
||||
|
||||
<!-- Family figures (simplified) -->
|
||||
{g_family_figures(w, h)}
|
||||
|
||||
<text x="{w//2}" y="{h - 160}" font-family="system-ui, sans-serif" font-size="32" font-weight="700" fill="{TEXT_PRIMARY}" text-anchor="middle">Protect Your Whole Family</text>
|
||||
<text x="{w//2}" y="{h - 115}" font-family="system-ui, sans-serif" font-size="17" fill="{TEXT_SECONDARY}" text-anchor="middle">AI voice clone detection + dark web monitoring + spam blocking</text>
|
||||
<text x="{w//2}" y="{h - 85}" font-family="system-ui, sans-serif" font-size="17" fill="{TEXT_SECONDARY}" text-anchor="middle">for up to unlimited family members on Premium</text>
|
||||
|
||||
<rect x="{w//2 - 115}" y="{h - 60}" width="230" height="46" rx="23" fill="{ACCENT_BLUE}"/>
|
||||
<text x="{w//2}" y="{h - 33}" font-family="system-ui, sans-serif" font-size="17" font-weight="600" fill="{TEXT_PRIMARY}" text-anchor="middle">Protect My Family</text>
|
||||
</svg>'''
|
||||
return svg
|
||||
|
||||
|
||||
def g_family_figures(w, h):
|
||||
"""Generate simple family figure silhouettes."""
|
||||
cx = w // 2
|
||||
base_y = h // 2 + 60
|
||||
return f'''
|
||||
<!-- Grandparent L -->
|
||||
<circle cx="{cx - 110}" cy="{base_y - 55}" r="22" fill="#33415580"/>
|
||||
<rect x="{cx - 125}" y="{base_y - 30}" width="30" height="50" rx="8" fill="#33415560"/>
|
||||
|
||||
<!-- Parent L -->
|
||||
<circle cx="{cx - 50}" cy="{base_y - 70}" r="25" fill="#47556980"/>
|
||||
<rect x="{cx - 68}" y="{base_y - 42}" width="36" height="65" rx="10" fill="#47556960"/>
|
||||
|
||||
<!-- Child -->
|
||||
<circle cx="{cx + 15}" cy="{base_y - 60}" r="18" fill="#64748b80"/>
|
||||
<rect x="{cx + 2}" y="{base_y - 40}" width="26" height="40" rx="8" fill="#64748b60"/>
|
||||
|
||||
<!-- Parent R -->
|
||||
<circle cx="{cx + 80}" cy="{base_y - 70}" r="25" fill="#47556980"/>
|
||||
<rect x="{cx + 62}" y="{base_y - 42}" width="36" height="65" rx="10" fill="#47556960"/>
|
||||
|
||||
<!-- Grandparent R -->
|
||||
<circle cx="{cx + 140}" cy="{base_y - 55}" r="22" fill="#33415580"/>
|
||||
<rect x="{cx + 125}" y="{base_y - 30}" width="30" height="50" rx="8" fill="#33415560"/>
|
||||
'''
|
||||
|
||||
|
||||
def meta_d_1x1():
|
||||
return meta_d_base(1080, 1080)
|
||||
|
||||
def meta_d_191():
|
||||
return meta_d_base(1200, 628)
|
||||
|
||||
def meta_d_45():
|
||||
return meta_d_base(1080, 1350)
|
||||
|
||||
|
||||
# ============================================================
|
||||
# GENERATE ALL
|
||||
# ============================================================
|
||||
|
||||
if __name__ == "__main__":
|
||||
assets = [
|
||||
# Google Display
|
||||
("gd_square_1200x1200.svg", gd_square()),
|
||||
("gd_landscape_1200x628.svg", gd_landscape()),
|
||||
("gd_portrait_600x750.svg", gd_portrait()),
|
||||
# Meta Creative A
|
||||
("meta_a_1x1_1080x1080.svg", meta_a_1x1()),
|
||||
("meta_a_191_1200x628.svg", meta_a_191()),
|
||||
# Meta Creative B
|
||||
("meta_b_1x1_1080x1080.svg", meta_b_1x1()),
|
||||
("meta_b_45_1080x1350.svg", meta_b_45()),
|
||||
# Meta Creative C
|
||||
("meta_c_1x1_1080x1080.svg", meta_c_1x1()),
|
||||
# Meta Creative D
|
||||
("meta_d_1x1_1080x1080.svg", meta_d_1x1()),
|
||||
("meta_d_191_1200x628.svg", meta_d_191()),
|
||||
("meta_d_45_1080x1350.svg", meta_d_45()),
|
||||
]
|
||||
|
||||
for name, svg in assets:
|
||||
path = os.path.join(OUT, name)
|
||||
with open(path, 'w') as f:
|
||||
f.write(svg)
|
||||
print(f"Created: {name} ({len(svg)} bytes)")
|
||||
|
||||
print(f"\nDone. Generated {len(assets)} SVG files in {OUT}")
|
||||
BIN
assets/ads/linkedin/variant1_professional.jpg
Normal file
|
After Width: | Height: | Size: 99 KiB |
120
assets/ads/linkedin/variant1_professional.svg
Normal file
@@ -0,0 +1,120 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 627" width="1200" height="627">
|
||||
<defs>
|
||||
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#0a0f1e"/>
|
||||
<stop offset="50%" stop-color="#111827"/>
|
||||
<stop offset="100%" stop-color="#0f1729"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="accent" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#3b82f6"/>
|
||||
<stop offset="100%" stop-color="#06b6d4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="shieldGrad" x1="0%" y1="0%" x2="0%" y2="100%">
|
||||
<stop offset="0%" stop-color="#3b82f6"/>
|
||||
<stop offset="100%" stop-color="#06b6d4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="phoneGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#1e293b"/>
|
||||
<stop offset="100%" stop-color="#0f172a"/>
|
||||
</linearGradient>
|
||||
<filter id="glow">
|
||||
<feGaussianBlur stdDeviation="3" result="blur"/>
|
||||
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
|
||||
</filter>
|
||||
<filter id="softGlow">
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
|
||||
</filter>
|
||||
</defs>
|
||||
|
||||
<!-- Background -->
|
||||
<rect width="1200" height="627" fill="url(#bg)"/>
|
||||
|
||||
<!-- Grid pattern -->
|
||||
<g opacity="0.05" stroke="#3b82f6" stroke-width="0.5">
|
||||
<line x1="0" y1="100" x2="1200" y2="100"/>
|
||||
<line x1="0" y1="200" x2="1200" y2="200"/>
|
||||
<line x1="0" y1="300" x2="1200" y2="300"/>
|
||||
<line x1="0" y1="400" x2="1200" y2="400"/>
|
||||
<line x1="0" y1="500" x2="1200" y2="500"/>
|
||||
<line x1="200" y1="0" x2="200" y2="627"/>
|
||||
<line x1="400" y1="0" x2="400" y2="627"/>
|
||||
<line x1="600" y1="0" x2="600" y2="627"/>
|
||||
<line x1="800" y1="0" x2="800" y2="627"/>
|
||||
<line x1="1000" y1="0" x2="1000" y2="627"/>
|
||||
</g>
|
||||
|
||||
<!-- Decorative circle top-right -->
|
||||
<circle cx="1050" cy="100" r="300" fill="#3b82f6" opacity="0.04"/>
|
||||
<circle cx="1100" cy="50" r="200" fill="#06b6d4" opacity="0.03"/>
|
||||
|
||||
<!-- Left content area -->
|
||||
<!-- Headline -->
|
||||
<text x="60" y="200" font-family="DejaVu Sans, sans-serif" font-size="36" font-weight="bold" fill="#f1f5f9">
|
||||
<tspan x="60" dy="0">AI Voice Cloning</tspan>
|
||||
<tspan x="60" dy="48" fill="#3b82f6">Is the New Phishing Threat</tspan>
|
||||
</text>
|
||||
|
||||
<!-- Body copy -->
|
||||
<text x="60" y="330" font-family="DejaVu Sans, sans-serif" font-size="16" fill="#94a3b8">
|
||||
<tspan x="60" dy="0">Cybercriminals are using AI-generated voice clones</tspan>
|
||||
<tspan x="60" dy="28">to impersonate executives and family members.</tspan>
|
||||
<tspan x="60" dy="28">ShieldAI detects synthetic voices in real time.</tspan>
|
||||
</text>
|
||||
|
||||
<!-- CTA Button -->
|
||||
<rect x="60" y="420" width="180" height="50" rx="25" fill="url(#accent)"/>
|
||||
<text x="150" y="452" font-family="DejaVu Sans, sans-serif" font-size="16" font-weight="bold" fill="#ffffff" text-anchor="middle">Learn More →</text>
|
||||
|
||||
<!-- Right side: Visual area -->
|
||||
<!-- Large shield background glow -->
|
||||
<circle cx="800" cy="330" r="180" fill="#3b82f6" opacity="0.06" filter="url(#softGlow)"/>
|
||||
|
||||
<!-- Shield icon -->
|
||||
<g transform="translate(680, 200)">
|
||||
<path d="M120 20 L220 60 L220 110 Q220 170 120 210 Q20 170 20 110 L20 60 Z" fill="url(#shieldGrad)" opacity="0.9"/>
|
||||
</g>
|
||||
|
||||
<!-- Phone silhouette -->
|
||||
<g transform="translate(710, 260)">
|
||||
<rect x="0" y="0" width="50" height="90" rx="10" fill="url(#phoneGrad)" stroke="#334155" stroke-width="1.5"/>
|
||||
<rect x="15" y="8" width="20" height="3" rx="1.5" fill="#3b82f6" opacity="0.5"/>
|
||||
<circle cx="25" cy="68" r="8" fill="none" stroke="#334155" stroke-width="1"/>
|
||||
<line x1="10" y1="20" x2="40" y2="20" stroke="#334155" stroke-width="0.5"/>
|
||||
<line x1="10" y1="25" x2="35" y2="25" stroke="#334155" stroke-width="0.5"/>
|
||||
<line x1="10" y1="30" x2="30" y2="30" stroke="#334155" stroke-width="0.5"/>
|
||||
</g>
|
||||
|
||||
<!-- Sound wave lines from phone -->
|
||||
<g stroke="#3b82f6" stroke-width="2" fill="none" opacity="0.5" filter="url(#glow)">
|
||||
<path d="M770 290 Q790 280 770 270"/>
|
||||
<path d="M780 300 Q810 285 780 270"/>
|
||||
<path d="M790 310 Q830 290 790 270"/>
|
||||
</g>
|
||||
|
||||
<!-- Executive silhouette -->
|
||||
<g transform="translate(820, 230)" opacity="0.15">
|
||||
<ellipse cx="40" cy="25" rx="25" ry="25" fill="#f1f5f9"/>
|
||||
<rect x="0" y="50" width="80" height="100" rx="10" fill="#f1f5f9"/>
|
||||
<rect x="-5" y="60" width="15" height="60" rx="5" fill="#f1f5f9"/>
|
||||
<rect x="70" y="60" width="15" height="60" rx="5" fill="#f1f5f9"/>
|
||||
</g>
|
||||
|
||||
<!-- Digital shield overlay on right -->
|
||||
<g transform="translate(750, 170)" opacity="0.12">
|
||||
<path d="M50 0 L100 30 L100 70 Q100 120 50 150 Q0 120 0 70 L0 30 Z" fill="none" stroke="#3b82f6" stroke-width="3"/>
|
||||
<path d="M50 0 L100 30 L100 70 Q100 120 50 150 Q0 120 0 70 L0 30 Z" fill="none" stroke="#06b6d4" stroke-width="1" transform="translate(5, 5)"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom branding bar -->
|
||||
<rect x="0" y="577" width="1200" height="50" fill="#0a0f1e" opacity="0.8"/>
|
||||
<line x1="0" y1="577" x2="1200" y2="577" stroke="#3b82f6" stroke-width="1" opacity="0.3"/>
|
||||
|
||||
<!-- ShieldAI logo -->
|
||||
<g transform="translate(60, 590)">
|
||||
<path d="M15 2 L28 12 L28 22 Q28 32 15 38 Q2 32 2 22 L2 12 Z" fill="url(#accent)" opacity="0.9"/>
|
||||
<path d="M11 18 L15 18 L15 22 L19 22 L19 26 L15 26 L15 30 L11 30 L11 26 L7 26 L7 22 L11 22 Z" fill="white" opacity="0.9"/>
|
||||
<text x="38" y="26" font-family="DejaVu Sans, sans-serif" font-size="16" font-weight="bold" fill="#f1f5f9">ShieldAI</text>
|
||||
<text x="115" y="26" font-family="DejaVu Sans, sans-serif" font-size="11" fill="#64748b">AI-Powered Identity Protection for Everyone</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.6 KiB |
BIN
assets/ads/linkedin/variant2_datasecurity.jpg
Normal file
|
After Width: | Height: | Size: 111 KiB |
132
assets/ads/linkedin/variant2_datasecurity.svg
Normal file
@@ -0,0 +1,132 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 627" width="1200" height="627">
|
||||
<defs>
|
||||
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#05080f"/>
|
||||
<stop offset="50%" stop-color="#0a0f1e"/>
|
||||
<stop offset="100%" stop-color="#0d1117"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="accent" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#3b82f6"/>
|
||||
<stop offset="100%" stop-color="#06b6d4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="dangerGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#ef4444"/>
|
||||
<stop offset="100%" stop-color="#dc2626"/>
|
||||
</linearGradient>
|
||||
<filter id="redGlow">
|
||||
<feGaussianBlur stdDeviation="4" result="blur"/>
|
||||
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
|
||||
</filter>
|
||||
<filter id="softGlow">
|
||||
<feGaussianBlur stdDeviation="8" result="blur"/>
|
||||
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
|
||||
</filter>
|
||||
</defs>
|
||||
|
||||
<!-- Background -->
|
||||
<rect width="1200" height="627" fill="url(#bg)"/>
|
||||
|
||||
<!-- Terminal scan lines -->
|
||||
<g opacity="0.03">
|
||||
<line x1="0" y1="0" x2="1200" y2="0" stroke="#22c55e" stroke-width="1"/>
|
||||
<line x1="0" y1="4" x2="1200" y2="4" stroke="#22c55e" stroke-width="0.5"/>
|
||||
<line x1="0" y1="8" x2="1200" y2="8" stroke="#22c55e" stroke-width="1"/>
|
||||
</g>
|
||||
|
||||
<!-- Matrix rain effect lines -->
|
||||
<g stroke="#22c55e" stroke-width="0.5" opacity="0.04">
|
||||
<line x1="100" y1="0" x2="100" y2="627"/>
|
||||
<line x1="300" y1="0" x2="300" y2="627"/>
|
||||
<line x1="500" y1="0" x2="500" y2="627"/>
|
||||
<line x1="700" y1="0" x2="700" y2="627"/>
|
||||
<line x1="900" y1="0" x2="900" y2="627"/>
|
||||
<line x1="1100" y1="0" x2="1100" y2="627"/>
|
||||
</g>
|
||||
|
||||
<!-- Top-right decorative glow -->
|
||||
<circle cx="1050" cy="100" r="250" fill="#ef4444" opacity="0.03"/>
|
||||
|
||||
<!-- Terminal window - left side -->
|
||||
<g transform="translate(60, 120)">
|
||||
<rect x="0" y="0" width="520" height="340" rx="8" fill="#0d1117" stroke="#1e293b" stroke-width="1.5"/>
|
||||
<!-- Window chrome -->
|
||||
<rect x="0" y="0" width="520" height="32" rx="8" fill="#161b22"/>
|
||||
<rect x="0" y="16" width="520" height="16" fill="#161b22"/>
|
||||
<circle cx="20" cy="16" r="5" fill="#ef4444"/>
|
||||
<circle cx="37" cy="16" r="5" fill="#eab308"/>
|
||||
<circle cx="54" cy="16" r="5" fill="#22c55e"/>
|
||||
<text x="260" y="21" font-family="monospace" font-size="11" fill="#64748b" text-anchor="middle">DarkWatch Terminal — Scan Results</text>
|
||||
|
||||
<!-- Terminal content -->
|
||||
<text x="16" y="60" font-family="monospace" font-size="12" fill="#22c55e">$ ./darkwatch --scan --deep</text>
|
||||
<text x="16" y="82" font-family="monospace" font-size="12" fill="#64748b">Scanning 178 dark web marketplaces...</text>
|
||||
<text x="16" y="104" font-family="monospace" font-size="12" fill="#64748b">Checking credentials associated with target@email.com</text>
|
||||
<text x="16" y="126" font-family="monospace" font-size="12" fill="#64748b">Checking phone: +1 (555) ***-****</text>
|
||||
<text x="16" y="148" font-family="monospace" font-size="12" fill="#22c55e">Scan complete. Found 12 exposures.</text>
|
||||
|
||||
<!-- Alert box -->
|
||||
<rect x="16" y="170" width="488" height="44" rx="4" fill="#450a0a" stroke="#ef4444" stroke-width="1" opacity="0.9"/>
|
||||
<circle cx="32" cy="192" r="5" fill="#ef4444" filter="url(#redGlow)"/>
|
||||
<text x="44" y="196" font-family="monospace" font-size="12" fill="#fca5a5" font-weight="bold">CRITICAL: Email + password exposed on 3 marketplaces</text>
|
||||
|
||||
<!-- Exposed data rows -->
|
||||
<rect x="16" y="222" width="488" height="30" rx="2" fill="#1a2332" opacity="0.5"/>
|
||||
<text x="24" y="241" font-family="monospace" font-size="11" fill="#94a3b8">email@example.com</text>
|
||||
<text x="280" y="241" font-family="monospace" font-size="11" fill="#ef4444">P@ssw0rd123!</text>
|
||||
<text x="460" y="241" font-family="monospace" font-size="11" fill="#f59e0b">LEAKED</text>
|
||||
|
||||
<rect x="16" y="255" width="488" height="30" rx="2" fill="#1a2332" opacity="0.3"/>
|
||||
<text x="24" y="274" font-family="monospace" font-size="11" fill="#94a3b8">+1 (555) 234-5678</text>
|
||||
<text x="280" y="274" font-family="monospace" font-size="11" fill="#ef4444">[HASHED]</text>
|
||||
<text x="460" y="274" font-family="monospace" font-size="11" fill="#f59e0b">LEAKED</text>
|
||||
|
||||
<rect x="16" y="288" width="488" height="30" rx="2" fill="#1a2332" opacity="0.5"/>
|
||||
<text x="24" y="307" font-family="monospace" font-size="11" fill="#94a3b8">SSN: ***-**-1234</text>
|
||||
<text x="280" y="307" font-family="monospace" font-size="11" fill="#ef4444">[REDACTED]</text>
|
||||
<text x="460" y="307" font-family="monospace" font-size="11" fill="#ef4444">HIGH RISK</text>
|
||||
</g>
|
||||
|
||||
<!-- Right side: Headline & CTA -->
|
||||
<text x="660" y="200" font-family="DejaVu Sans, sans-serif" font-size="36" font-weight="bold" fill="#f1f5f9">
|
||||
<tspan x="660" dy="0">Your Personal Data</tspan>
|
||||
<tspan x="660" dy="48" fill="#ef4444">Is on the Dark Web</tspan>
|
||||
</text>
|
||||
|
||||
<text x="660" y="320" font-family="DejaVu Sans, sans-serif" font-size="16" fill="#94a3b8">
|
||||
<tspan x="660" dy="0">70% of data breaches expose employee</tspan>
|
||||
<tspan x="660" dy="28">personal contact info. ShieldAI's DarkWatch</tspan>
|
||||
<tspan x="660" dy="28">scans 100+ marketplaces daily for</tspan>
|
||||
<tspan x="660" dy="28">exposed emails, phones, and SSNs.</tspan>
|
||||
</text>
|
||||
|
||||
<!-- Stats row -->
|
||||
<g transform="translate(660, 400)">
|
||||
<rect x="0" y="0" width="110" height="60" rx="8" fill="#1a2332" stroke="#1e293b" stroke-width="1"/>
|
||||
<text x="55" y="25" font-family="DejaVu Sans, sans-serif" font-size="20" font-weight="bold" fill="#ef4444" text-anchor="middle">178</text>
|
||||
<text x="55" y="48" font-family="DejaVu Sans, sans-serif" font-size="10" fill="#64748b" text-anchor="middle">Marketplaces</text>
|
||||
|
||||
<rect x="125" y="0" width="110" height="60" rx="8" fill="#1a2332" stroke="#1e293b" stroke-width="1"/>
|
||||
<text x="180" y="25" font-family="DejaVu Sans, sans-serif" font-size="20" font-weight="bold" fill="#f59e0b" text-anchor="middle">24/7</text>
|
||||
<text x="180" y="48" font-family="DejaVu Sans, sans-serif" font-size="10" fill="#64748b" text-anchor="middle">Monitoring</text>
|
||||
|
||||
<rect x="250" y="0" width="110" height="60" rx="8" fill="#1a2332" stroke="#1e293b" stroke-width="1"/>
|
||||
<text x="305" y="25" font-family="DejaVu Sans, sans-serif" font-size="20" font-weight="bold" fill="#22c55e" text-anchor="middle">99.7%</text>
|
||||
<text x="305" y="48" font-family="DejaVu Sans, sans-serif" font-size="10" fill="#64748b" text-anchor="middle">Accuracy</text>
|
||||
</g>
|
||||
|
||||
<!-- CTA Button -->
|
||||
<rect x="660" y="490" width="200" height="50" rx="25" fill="url(#accent)"/>
|
||||
<text x="760" y="522" font-family="DejaVu Sans, sans-serif" font-size="16" font-weight="bold" fill="#ffffff" text-anchor="middle">Monitor Your Data →</text>
|
||||
|
||||
<!-- Bottom branding bar -->
|
||||
<rect x="0" y="577" width="1200" height="50" fill="#05080f" opacity="0.9"/>
|
||||
<line x1="0" y1="577" x2="1200" y2="577" stroke="#3b82f6" stroke-width="1" opacity="0.3"/>
|
||||
|
||||
<!-- ShieldAI logo -->
|
||||
<g transform="translate(60, 590)">
|
||||
<path d="M15 2 L28 12 L28 22 Q28 32 15 38 Q2 32 2 22 L2 12 Z" fill="url(#accent)" opacity="0.9"/>
|
||||
<path d="M11 18 L15 18 L15 22 L19 22 L19 26 L15 26 L15 30 L11 30 L11 26 L7 26 L7 22 L11 22 Z" fill="white" opacity="0.9"/>
|
||||
<text x="38" y="26" font-family="DejaVu Sans, sans-serif" font-size="16" font-weight="bold" fill="#f1f5f9">ShieldAI</text>
|
||||
<text x="115" y="26" font-family="DejaVu Sans, sans-serif" font-size="11" fill="#64748b">AI-Powered Identity Protection for Everyone</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.5 KiB |
BIN
assets/ads/linkedin/variant3_family_professional.jpg
Normal file
|
After Width: | Height: | Size: 93 KiB |
162
assets/ads/linkedin/variant3_family_professional.svg
Normal file
@@ -0,0 +1,162 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 627" width="1200" height="627">
|
||||
<defs>
|
||||
<linearGradient id="bgLeft" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#0a0f1e"/>
|
||||
<stop offset="100%" stop-color="#111827"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="bgRight" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#1a0f0a"/>
|
||||
<stop offset="100%" stop-color="#2d1a10"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="accent" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#3b82f6"/>
|
||||
<stop offset="100%" stop-color="#06b6d4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="warmAccent" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#f59e0b"/>
|
||||
<stop offset="100%" stop-color="#f97316"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="dividerGrad" x1="0%" y1="0%" x2="0%" y2="100%">
|
||||
<stop offset="0%" stop-color="#3b82f6" stop-opacity="0"/>
|
||||
<stop offset="50%" stop-color="#3b82f6" stop-opacity="0.3"/>
|
||||
<stop offset="100%" stop-color="#f59e0b" stop-opacity="0"/>
|
||||
</linearGradient>
|
||||
<filter id="softGlow">
|
||||
<feGaussianBlur stdDeviation="6" result="blur"/>
|
||||
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
|
||||
</filter>
|
||||
</defs>
|
||||
|
||||
<!-- LEFT HALF: Professional -->
|
||||
|
||||
<!-- Background left -->
|
||||
<rect x="0" y="0" width="600" height="577" fill="url(#bgLeft)"/>
|
||||
|
||||
<!-- Subtle grid left -->
|
||||
<g opacity="0.04" stroke="#3b82f6" stroke-width="0.5">
|
||||
<line x1="0" y1="100" x2="600" y2="100"/>
|
||||
<line x1="0" y1="200" x2="600" y2="200"/>
|
||||
<line x1="0" y1="300" x2="600" y2="300"/>
|
||||
<line x1="0" y1="400" x2="600" y2="400"/>
|
||||
<line x1="0" y1="500" x2="600" y2="500"/>
|
||||
<line x1="150" y1="0" x2="150" y2="577"/>
|
||||
<line x1="300" y1="0" x2="300" y2="577"/>
|
||||
<line x1="450" y1="0" x2="450" y2="577"/>
|
||||
</g>
|
||||
|
||||
<!-- Office desk illustration -->
|
||||
<g transform="translate(100, 160)" opacity="0.12">
|
||||
<!-- Monitor -->
|
||||
<rect x="30" y="20" width="100" height="65" rx="3" fill="#3b82f6"/>
|
||||
<rect x="35" y="25" width="90" height="55" rx="1" fill="#0a0f1e"/>
|
||||
<!-- Screen content -->
|
||||
<rect x="40" y="35" width="40" height="3" rx="1" fill="#3b82f6" opacity="0.5"/>
|
||||
<rect x="40" y="42" width="60" height="3" rx="1" fill="#3b82f6" opacity="0.3"/>
|
||||
<rect x="40" y="49" width="25" height="3" rx="1" fill="#3b82f6" opacity="0.3"/>
|
||||
<!-- Stand -->
|
||||
<rect x="55" y="85" width="50" height="5" rx="1" fill="#1e293b"/>
|
||||
<rect x="70" y="90" width="20" height="10" fill="#1e293b"/>
|
||||
<!-- Desk -->
|
||||
<rect x="0" y="100" width="180" height="5" rx="1" fill="#1e293b"/>
|
||||
</g>
|
||||
|
||||
<!-- Professional icon label -->
|
||||
<g transform="translate(60, 130)">
|
||||
<circle cx="20" cy="20" r="20" fill="#3b82f6" opacity="0.15"/>
|
||||
<path d="M12 28 L12 20 L20 16 L28 20 L28 28 Z" fill="#3b82f6" opacity="0.8"/>
|
||||
<text x="50" y="25" font-family="DejaVu Sans, sans-serif" font-size="14" font-weight="bold" fill="#3b82f6">Work Protection</text>
|
||||
</g>
|
||||
|
||||
<!-- Professional features -->
|
||||
<g transform="translate(60, 280)" opacity="0.7">
|
||||
<circle cx="8" cy="8" r="4" fill="#22c55e"/>
|
||||
<text x="20" y="13" font-family="DejaVu Sans, sans-serif" font-size="13" fill="#94a3b8">AI voice clone detection</text>
|
||||
<circle cx="8" cy="33" r="4" fill="#22c55e"/>
|
||||
<text x="20" y="38" font-family="DejaVu Sans, sans-serif" font-size="13" fill="#94a3b8">Dark web monitoring</text>
|
||||
<circle cx="8" cy="58" r="4" fill="#22c55e"/>
|
||||
<text x="20" y="63" font-family="DejaVu Sans, sans-serif" font-size="13" fill="#94a3b8">Spam call/text blocking</text>
|
||||
<circle cx="8" cy="83" r="4" fill="#22c55e"/>
|
||||
<text x="20" y="88" font-family="DejaVu Sans, sans-serif" font-size="13" fill="#94a3b8">Enterprise-grade security</text>
|
||||
</g>
|
||||
|
||||
<!-- RIGHT HALF: Family -->
|
||||
|
||||
<!-- Background right -->
|
||||
<rect x="600" y="0" width="600" height="577" fill="url(#bgRight)"/>
|
||||
|
||||
<!-- Warm glow background -->
|
||||
<circle cx="850" cy="250" r="200" fill="#f59e0b" opacity="0.04"/>
|
||||
|
||||
<!-- Family illustration -->
|
||||
<g transform="translate(730, 180)" opacity="0.12">
|
||||
<!-- Adult 1 -->
|
||||
<ellipse cx="40" cy="20" rx="18" ry="18" fill="#f59e0b"/>
|
||||
<rect x="15" y="38" width="50" height="65" rx="8" fill="#f59e0b"/>
|
||||
<!-- Adult 2 -->
|
||||
<ellipse cx="120" cy="20" rx="18" ry="18" fill="#f59e0b"/>
|
||||
<rect x="95" y="38" width="50" height="65" rx="8" fill="#f59e0b"/>
|
||||
<!-- Child 1 -->
|
||||
<ellipse cx="80" cy="55" rx="14" ry="14" fill="#f59e0b"/>
|
||||
<rect x="64" y="69" width="32" height="40" rx="6" fill="#f59e0b"/>
|
||||
<!-- Child 2 -->
|
||||
<ellipse cx="160" cy="55" rx="14" ry="14" fill="#f97316"/>
|
||||
<rect x="144" y="69" width="32" height="35" rx="6" fill="#f97316"/>
|
||||
<!-- Shield over all -->
|
||||
<path d="M80 10 L160 40 L160 75 Q160 110 80 135 Q0 110 0 75 L0 40 Z" fill="none" stroke="#f59e0b" stroke-width="2" opacity="0.5"/>
|
||||
</g>
|
||||
|
||||
<!-- Family icon label -->
|
||||
<g transform="translate(630, 130)">
|
||||
<circle cx="20" cy="20" r="20" fill="#f59e0b" opacity="0.15"/>
|
||||
<path d="M12 16 A4 4 0 1 1 12 24 A4 4 0 1 1 12 16z" fill="#f59e0b" opacity="0.8"/>
|
||||
<path d="M8 25 Q12 30 20 30 Q28 30 32 25" fill="#f59e0b" opacity="0.8"/>
|
||||
<text x="50" y="25" font-family="DejaVu Sans, sans-serif" font-size="14" font-weight="bold" fill="#f59e0b">Family Safety</text>
|
||||
</g>
|
||||
|
||||
<!-- Family features -->
|
||||
<g transform="translate(630, 280)" opacity="0.7">
|
||||
<circle cx="8" cy="8" r="4" fill="#22c55e"/>
|
||||
<text x="20" y="13" font-family="DejaVu Sans, sans-serif" font-size="13" fill="#d4a574">Unlimited family members</text>
|
||||
<circle cx="8" cy="33" r="4" fill="#22c55e"/>
|
||||
<text x="20" y="38" font-family="DejaVu Sans, sans-serif" font-size="13" fill="#d4a574">Senior scam protection</text>
|
||||
<circle cx="8" cy="58" r="4" fill="#22c55e"/>
|
||||
<text x="20" y="63" font-family="DejaVu Sans, sans-serif" font-size="13" fill="#d4a574">Real-time alerts to family</text>
|
||||
<circle cx="8" cy="83" r="4" fill="#22c55e"/>
|
||||
<text x="20" y="88" font-family="DejaVu Sans, sans-serif" font-size="13" fill="#d4a574">24/7 support for all members</text>
|
||||
</g>
|
||||
|
||||
<!-- Center divider -->
|
||||
<line x1="600" y1="50" x2="600" y2="527" stroke="url(#dividerGrad)" stroke-width="2"/>
|
||||
|
||||
<!-- Unified by ShieldAI badge -->
|
||||
<g transform="translate(380, 370)">
|
||||
<rect x="0" y="0" width="440" height="60" rx="30" fill="#1a2332" stroke="#334155" stroke-width="1" opacity="0.9"/>
|
||||
<path d="M25 15 L45 28 L45 40 Q45 50 25 55 Q5 50 5 40 L5 28 Z" fill="url(#accent)" opacity="0.9"/>
|
||||
<path d="M19 30 L23 30 L23 34 L27 34 L27 38 L23 38 L23 42 L19 42 L19 38 L15 38 L15 34 L19 34 Z" fill="white" opacity="0.9"/>
|
||||
<text x="55" y="35" font-family="DejaVu Sans, sans-serif" font-size="18" font-weight="bold" fill="#f1f5f9">Unified by</text>
|
||||
<text x="155" y="35" font-family="DejaVu Sans, sans-serif" font-size="18" font-weight="bold" fill="#3b82f6">ShieldAI</text>
|
||||
</g>
|
||||
|
||||
<!-- Headline at center-top -->
|
||||
<text x="600" y="100" font-family="DejaVu Sans, sans-serif" font-size="34" font-weight="bold" fill="#f1f5f9" text-anchor="middle">
|
||||
<tspan x="600" dy="0">One Platform.</tspan>
|
||||
<tspan x="600" dy="44" fill="#3b82f6">Work Protection +</tspan>
|
||||
<tspan x="600" dy="44" fill="#f59e0b">Family Safety.</tspan>
|
||||
</text>
|
||||
|
||||
<!-- CTA -->
|
||||
<rect x="460" y="500" width="280" height="50" rx="25" fill="url(#accent)"/>
|
||||
<text x="600" y="532" font-family="DejaVu Sans, sans-serif" font-size="16" font-weight="bold" fill="#ffffff" text-anchor="middle">Join 1,000+ Early Adopters →</text>
|
||||
|
||||
<!-- Bottom branding bar -->
|
||||
<rect x="0" y="577" width="1200" height="50" fill="#05080f" opacity="0.9"/>
|
||||
<line x1="0" y1="577" x2="1200" y2="577" stroke="url(#accent)" stroke-width="1" opacity="0.3"/>
|
||||
|
||||
<!-- ShieldAI logo -->
|
||||
<g transform="translate(60, 590)">
|
||||
<path d="M15 2 L28 12 L28 22 Q28 32 15 38 Q2 32 2 22 L2 12 Z" fill="url(#accent)" opacity="0.9"/>
|
||||
<path d="M11 18 L15 18 L15 22 L19 22 L19 26 L15 26 L15 30 L11 30 L11 26 L7 26 L7 22 L11 22 Z" fill="white" opacity="0.9"/>
|
||||
<text x="38" y="26" font-family="DejaVu Sans, sans-serif" font-size="16" font-weight="bold" fill="#f1f5f9">ShieldAI</text>
|
||||
<text x="115" y="26" font-family="DejaVu Sans, sans-serif" font-size="11" fill="#64748b">AI-Powered Identity Protection for Everyone</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 8.2 KiB |
BIN
assets/ads/meta_a_191_1200x628.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
40
assets/ads/meta_a_191_1200x628.svg
Normal file
@@ -0,0 +1,40 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="628" viewBox="0 0 1200 628">
|
||||
<defs>
|
||||
<linearGradient id="bgL" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#0a1528"/>
|
||||
<stop offset="100%" stop-color="#0f1d35"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="bgR" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#1a0a0a"/>
|
||||
<stop offset="100%" stop-color="#2d0f0f"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#3b82f6"/>
|
||||
<stop offset="100%" stop-color="#06b6d4"/>
|
||||
</linearGradient>
|
||||
<filter id="glitch2">
|
||||
<feTurbulence type="fractalNoise" baseFrequency="0.8" numOctaves="2" result="noise"/>
|
||||
<feDisplacementMap in="SourceGraphic" in2="noise" scale="6" xChannelSelector="R" yChannelSelector="G"/>
|
||||
</filter>
|
||||
</defs>
|
||||
<rect x="0" y="0" width="600" height="628" fill="url(#bgL)"/>
|
||||
<circle cx="300" cy="284" r="35" fill="#3b82f630" stroke="#3b82f6" stroke-width="2"/>
|
||||
<circle cx="250" cy="234" r="25" fill="#3b82f620" stroke="#3b82f6" stroke-width="1.5"/>
|
||||
<circle cx="355" cy="239" r="22" fill="#3b82f620" stroke="#3b82f6" stroke-width="1.5"/>
|
||||
<text x="300" y="374" font-family="system-ui, sans-serif" font-size="20" font-weight="600" fill="#f1f5f9" text-anchor="middle">Your Family</text>
|
||||
<rect x="0" y="578" width="600" height="50" fill="#1a2332"/>
|
||||
<text x="300" y="606" font-family="system-ui, sans-serif" font-size="13" fill="#94a3b8" text-anchor="middle">Real voice, real moment</text>
|
||||
|
||||
<rect x="599" y="0" width="3" height="628" fill="#1e293b"/>
|
||||
<rect x="600" y="0" width="600" height="628" fill="url(#bgR)"/>
|
||||
<g filter="url(#glitch2)">
|
||||
<circle cx="900" cy="284" r="35" fill="#ef444430" stroke="#ef4444" stroke-width="2"/>
|
||||
<circle cx="850" cy="234" r="25" fill="#ef444420" stroke="#ef4444" stroke-width="1.5"/>
|
||||
<circle cx="955" cy="239" r="22" fill="#ef444420" stroke="#ef4444" stroke-width="1.5"/>
|
||||
</g>
|
||||
<text x="900" y="374" font-family="system-ui, sans-serif" font-size="20" font-weight="600" fill="#ef4444" text-anchor="middle">AI Clone</text>
|
||||
<rect x="600" y="578" width="600" height="50" fill="#ef444422"/>
|
||||
<text x="900" y="606" font-family="system-ui, sans-serif" font-size="13" fill="#64748b" text-anchor="middle">Synthetic voice clone</text>
|
||||
|
||||
<text x="30" y="50" font-family="system-ui, sans-serif" font-size="16" font-weight="600" fill="#f1f5f9">Your Family's Voice, Protected</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |
BIN
assets/ads/meta_a_1x1_1080x1080.png
Normal file
|
After Width: | Height: | Size: 193 KiB |
60
assets/ads/meta_a_1x1_1080x1080.svg
Normal file
@@ -0,0 +1,60 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1080" height="1080" viewBox="0 0 1080 1080">
|
||||
<defs>
|
||||
<linearGradient id="bgGradL" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#0a1528"/>
|
||||
<stop offset="100%" stop-color="#0f1d35"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="bgGradR" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#1a0a0a"/>
|
||||
<stop offset="100%" stop-color="#2d0f0f"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#3b82f6"/>
|
||||
<stop offset="100%" stop-color="#06b6d4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="distortGrad" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#ef444466"/>
|
||||
<stop offset="100%" stop-color="#ef444422"/>
|
||||
</linearGradient>
|
||||
<filter id="glitch">
|
||||
<feTurbulence type="fractalNoise" baseFrequency="0.9" numOctaves="3" result="noise"/>
|
||||
<feDisplacementMap in="SourceGraphic" in2="noise" scale="8" xChannelSelector="R" yChannelSelector="G"/>
|
||||
</filter>
|
||||
</defs>
|
||||
|
||||
<!-- Left panel: normal family -->
|
||||
<rect x="0" y="0" width="540" height="1080" fill="url(#bgGradL)"/>
|
||||
<circle cx="270" cy="280" r="60" fill="#3b82f630" stroke="#3b82f6" stroke-width="2"/>
|
||||
<circle cx="210" cy="220" r="40" fill="#3b82f620" stroke="#3b82f6" stroke-width="1.5"/>
|
||||
<circle cx="340" cy="230" r="35" fill="#3b82f620" stroke="#3b82f6" stroke-width="1.5"/>
|
||||
<circle cx="240" cy="360" r="45" fill="#3b82f620" stroke="#3b82f6" stroke-width="1.5"/>
|
||||
<rect x="200" y="420" width="140" height="180" rx="10" fill="#3b82f615" stroke="#3b82f6" stroke-width="1.5" opacity="0.6"/>
|
||||
<text x="270" y="680" font-family="system-ui, sans-serif" font-size="22" font-weight="600" fill="#f1f5f9" text-anchor="middle">Your Family</text>
|
||||
<text x="270" y="710" font-family="system-ui, sans-serif" font-size="15" fill="#94a3b8" text-anchor="middle">Real & Unfiltered</text>
|
||||
|
||||
<!-- Center divider with phone icon -->
|
||||
<rect x="538" y="0" width="4" height="1080" fill="#1e293b"/>
|
||||
<g transform="translate(540, 480)">
|
||||
<rect x="-25" y="-50" width="50" height="100" rx="10" fill="#3b82f6" opacity="0.3"/>
|
||||
<path d="M-10,-10 Q-20,0 -10,10" fill="none" stroke="#ef4444" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<path d="M0,-20 Q-25,0 0,20" fill="none" stroke="#ef4444" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<path d="M10,-30 Q-30,0 10,30" fill="none" stroke="#ef4444" stroke-width="2" stroke-linecap="round" opacity="0.7"/>
|
||||
</g>
|
||||
|
||||
<!-- Right panel: distorted/AI -->
|
||||
<rect x="540" y="0" width="540" height="1080" fill="url(#bgGradR)"/>
|
||||
<g filter="url(#glitch)">
|
||||
<circle cx="810" cy="280" r="60" fill="#ef444430" stroke="#ef4444" stroke-width="2"/>
|
||||
<circle cx="750" cy="220" r="40" fill="#ef444420" stroke="#ef4444" stroke-width="1.5"/>
|
||||
<circle cx="880" cy="230" r="35" fill="#ef444420" stroke="#ef4444" stroke-width="1.5"/>
|
||||
<circle cx="780" cy="360" r="45" fill="#ef444420" stroke="#ef4444" stroke-width="1.5"/>
|
||||
<rect x="740" y="420" width="140" height="180" rx="10" fill="#ef444415" stroke="#ef4444" stroke-width="1.5" opacity="0.6"/>
|
||||
</g>
|
||||
<text x="810" y="680" font-family="system-ui, sans-serif" font-size="22" font-weight="600" fill="#ef4444" text-anchor="middle">AI Clone</text>
|
||||
<text x="810" y="710" font-family="system-ui, sans-serif" font-size="15" fill="#64748b" text-anchor="middle">Synthetic & Dangerous</text>
|
||||
|
||||
<!-- Bottom brand bar -->
|
||||
<rect x="0" y="990" width="1080" height="90" fill="#1a2332"/>
|
||||
<text x="540" y="1025" font-family="system-ui, sans-serif" font-size="22" font-weight="600" fill="#f1f5f9" text-anchor="middle">Your Family's Voice, Protected</text>
|
||||
<text x="540" y="1052" font-family="system-ui, sans-serif" font-size="15" fill="#94a3b8" text-anchor="middle">ShieldAI detects AI voice cloning with 99.7% accuracy</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
BIN
assets/ads/meta_b_1x1_1080x1080.png
Normal file
|
After Width: | Height: | Size: 243 KiB |
63
assets/ads/meta_b_1x1_1080x1080.svg
Normal file
@@ -0,0 +1,63 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1080" height="1080" viewBox="0 0 1080 1080">
|
||||
<defs>
|
||||
<linearGradient id="bgTerm" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#050a05"/>
|
||||
<stop offset="100%" stop-color="#0a1a0a"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#22c55e"/>
|
||||
<stop offset="100%" stop-color="#16a34a"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="1080" height="1080" fill="url(#bgTerm)"/>
|
||||
|
||||
<!-- Matrix-like grid lines -->
|
||||
<g stroke="#22c55e10" stroke-width="0.5">
|
||||
<line x1="0" y1="100" x2="1080" y2="100"/>
|
||||
<line x1="0" y1="200" x2="1080" y2="200"/>
|
||||
<line x1="0" y1="300" x2="1080" y2="300"/>
|
||||
<line x1="0" y1="400" x2="1080" y2="400"/>
|
||||
<line x1="0" y1="500" x2="1080" y2="500"/>
|
||||
<line x1="0" y1="600" x2="1080" y2="600"/>
|
||||
<line x1="0" y1="700" x2="1080" y2="700"/>
|
||||
<line x1="0" y1="800" x2="1080" y2="800"/>
|
||||
<line x1="0" y1="900" x2="1080" y2="900"/>
|
||||
<line x1="0" y1="1000" x2="1080" y2="1000"/>
|
||||
</g>
|
||||
|
||||
<!-- Terminal window frame -->
|
||||
<rect x="100" y="200" width="880" height="500" rx="12" fill="#0d1f0d" stroke="#22c55e30" stroke-width="1.5"/>
|
||||
<rect x="100" y="200" width="880" height="40" rx="12" fill="#143014"/>
|
||||
<rect x="100" y="228" width="880" height="12" fill="#143014"/>
|
||||
<circle cx="130" cy="220" r="6" fill="#ef4444"/>
|
||||
<circle cx="155" cy="220" r="6" fill="#f59e0b"/>
|
||||
<circle cx="180" cy="220" r="6" fill="#22c55e"/>
|
||||
<text x="200" y="225" font-family="monospace" font-size="14" fill="#64748b">darkwatch@shieldai:~$</text>
|
||||
|
||||
<!-- Terminal content -->
|
||||
<text x="130" y="280" font-family="monospace" font-size="16" fill="#f59e0b">> Scanning 150+ dark web marketplaces...</text>
|
||||
<text x="130" y="320" font-family="monospace" font-size="16" fill="#f59e0b">> Analyzing breach databases...</text>
|
||||
|
||||
<text x="130" y="380" font-family="monospace" font-size="18" font-weight="bold" fill="#ef4444">! ALERT: MATCHES FOUND</text>
|
||||
|
||||
<rect x="130" y="410" width="320" height="28" fill="#ef444415"/>
|
||||
<text x="140" y="430" font-family="monospace" font-size="15" fill="#ef4444">email:***@gmail.com — 3 breaches</text>
|
||||
|
||||
<rect x="130" y="445" width="320" height="28" fill="#ef444415"/>
|
||||
<text x="140" y="465" font-family="monospace" font-size="15" fill="#ef4444">phone:+1 (555) ***-8842 — 2 breaches</text>
|
||||
|
||||
<rect x="130" y="480" width="320" height="28" fill="#ef444415"/>
|
||||
<text x="140" y="500" font-family="monospace" font-size="15" fill="#ef4444">ssn:***-**-6781 — 1 breach</text>
|
||||
|
||||
<text x="130" y="550" font-family="monospace" font-size="16" fill="#22c55e">> Total exposures found: 5,284</text>
|
||||
<text x="130" y="580" font-family="monospace" font-size="16" fill="#06b6d4">> Run scan on your data? [Y/n] _</text>
|
||||
|
||||
<!-- Bottom CTA -->
|
||||
<rect x="340" y="750" width="400" height="56" rx="28" fill="#22c55e"/>
|
||||
<text x="540" y="785" font-family="system-ui, sans-serif" font-size="20" font-weight="700" fill="#050a05" text-anchor="middle">Scan Your Email Free</text>
|
||||
|
||||
<text x="540" y="860" font-family="system-ui, sans-serif" font-size="16" fill="#64748b" text-anchor="middle">ShieldAI DarkWatch — 24/7 Dark Web Monitoring</text>
|
||||
|
||||
<text x="540" y="920" font-family="system-ui, sans-serif" font-size="28" font-weight="700" fill="#f1f5f9" text-anchor="middle">5K+ Exposures Found.</text>
|
||||
<text x="540" y="960" font-family="system-ui, sans-serif" font-size="28" font-weight="700" fill="#22c55e" text-anchor="middle">What About Yours?</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.4 KiB |
BIN
assets/ads/meta_b_45_1080x1350.png
Normal file
|
After Width: | Height: | Size: 297 KiB |
52
assets/ads/meta_b_45_1080x1350.svg
Normal file
@@ -0,0 +1,52 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1080" height="1350" viewBox="0 0 1080 1350">
|
||||
<defs>
|
||||
<linearGradient id="bgB45" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#050a05"/>
|
||||
<stop offset="100%" stop-color="#0a1a0a"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#22c55e"/>
|
||||
<stop offset="100%" stop-color="#16a34a"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="1080" height="1350" fill="url(#bgB45)"/>
|
||||
|
||||
<!-- Terminal -->
|
||||
<rect x="80" y="250" width="920" height="520" rx="12" fill="#0d1f0d" stroke="#22c55e30" stroke-width="1.5"/>
|
||||
<rect x="80" y="250" width="920" height="40" rx="12" fill="#143014"/>
|
||||
<rect x="80" y="278" width="920" height="12" fill="#143014"/>
|
||||
<circle cx="110" cy="270" r="6" fill="#ef4444"/>
|
||||
<circle cx="135" cy="270" r="6" fill="#f59e0b"/>
|
||||
<circle cx="160" cy="270" r="6" fill="#22c55e"/>
|
||||
<text x="180" y="275" font-family="monospace" font-size="14" fill="#64748b">darkwatch@shieldai:~$</text>
|
||||
|
||||
<text x="110" y="330" font-family="monospace" font-size="16" fill="#f59e0b">> Scanning 150+ dark web marketplaces...</text>
|
||||
<text x="110" y="360" font-family="monospace" font-size="16" fill="#f59e0b">> Cross-referencing databases...</text>
|
||||
|
||||
<text x="110" y="415" font-family="monospace" font-size="18" font-weight="bold" fill="#ef4444">! ALERT: DATA EXPOSED</text>
|
||||
|
||||
<rect x="110" y="445" width="350" height="28" fill="#ef444415"/>
|
||||
<text x="120" y="465" font-family="monospace" font-size="14" fill="#ef4444">email:***@gmail.com — 3 breaches</text>
|
||||
|
||||
<rect x="110" y="480" width="350" height="28" fill="#ef444415"/>
|
||||
<text x="120" y="500" font-family="monospace" font-size="14" fill="#ef4444">phone:+1 (555) ***-8842 — 2 breaches</text>
|
||||
|
||||
<rect x="110" y="515" width="350" height="28" fill="#ef444415"/>
|
||||
<text x="120" y="535" font-family="monospace" font-size="14" fill="#ef4444">ssn:***-**-6781 — 1 breach</text>
|
||||
|
||||
<rect x="110" y="550" width="350" height="28" fill="#ef444415"/>
|
||||
<text x="120" y="570" font-family="monospace" font-size="14" fill="#ef4444">Address:*** Oak St — 1 breach</text>
|
||||
|
||||
<text x="110" y="625" font-family="monospace" font-size="16" fill="#22c55e">> Total exposures monitored: 5,284</text>
|
||||
<text x="110" y="660" font-family="monospace" font-size="16" fill="#06b6d4">> Run scan on your data? [Y/n] _</text>
|
||||
|
||||
<text x="540" y="840" font-family="system-ui, sans-serif" font-size="30" font-weight="700" fill="#f1f5f9" text-anchor="middle">Your Data May Already Be</text>
|
||||
<text x="540" y="885" font-family="system-ui, sans-serif" font-size="30" font-weight="700" fill="#ef4444" text-anchor="middle">For Sale on the Dark Web</text>
|
||||
|
||||
<text x="540" y="940" font-family="system-ui, sans-serif" font-size="16" fill="#94a3b8" text-anchor="middle">ShieldAI scans 150+ marketplaces 24/7 and alerts you instantly</text>
|
||||
|
||||
<rect x="365" y="1000" width="350" height="56" rx="28" fill="#22c55e"/>
|
||||
<text x="540" y="1035" font-family="system-ui, sans-serif" font-size="20" font-weight="700" fill="#050a05" text-anchor="middle">Scan Your Email Free</text>
|
||||
|
||||
<text x="540" y="1300" font-family="system-ui, sans-serif" font-size="14" fill="#64748b" text-anchor="middle">ShieldAI — AI-Powered Identity Protection for Everyone</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.2 KiB |
BIN
assets/ads/meta_c_1x1_1080x1080.png
Normal file
|
After Width: | Height: | Size: 323 KiB |
46
assets/ads/meta_c_1x1_1080x1080.svg
Normal file
@@ -0,0 +1,46 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1080" height="1080" viewBox="0 0 1080 1080">
|
||||
<defs>
|
||||
<linearGradient id="bgC" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="#0a0f1e"/>
|
||||
<stop offset="100%" stop-color="#050812"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#3b82f6"/>
|
||||
<stop offset="100%" stop-color="#06b6d4"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="1080" height="1080" fill="url(#bgC)"/>
|
||||
<rect width="1080" height="6" fill="url(#brandBar)"/>
|
||||
|
||||
<text x="540" y="140" font-family="system-ui, sans-serif" font-size="42" font-weight="700" fill="#f1f5f9" text-anchor="middle">3 Ways ShieldAI Protects Your Family</text>
|
||||
<text x="540" y="185" font-family="system-ui, sans-serif" font-size="18" fill="#94a3b8" text-anchor="middle">VoicePrint + DarkWatch + SpamShield</text>
|
||||
<rect x="60" y="280" width="300" height="400" rx="16" fill="#1a2332" stroke="#06b6d430" stroke-width="1.5"/>
|
||||
<circle cx="210" cy="340" r="40" fill="#06b6d422" stroke="#06b6d4" stroke-width="2"/>
|
||||
<text x="210" y="345" font-family="system-ui, sans-serif" font-size="18" font-weight="700" fill="#06b6d4" text-anchor="middle">VoicePrint</text>
|
||||
<text x="210" y="400" font-family="system-ui, sans-serif" font-size="17" font-weight="600" fill="#f1f5f9" text-anchor="middle">AI Voice Clone</text>
|
||||
<text x="210" y="432" font-family="system-ui, sans-serif" font-size="17" font-weight="600" fill="#f1f5f9" text-anchor="middle">Detection</text>
|
||||
<text x="210" y="460" font-family="system-ui, sans-serif" font-size="14" fill="#94a3b8" text-anchor="middle">Real-time detection</text>
|
||||
<text x="210" y="485" font-family="system-ui, sans-serif" font-size="14" fill="#94a3b8" text-anchor="middle">of synthetic voices</text>
|
||||
<text x="210" y="510" font-family="system-ui, sans-serif" font-size="14" fill="#94a3b8" text-anchor="middle">with 99.7% accuracy</text>
|
||||
<rect x="390" y="280" width="300" height="400" rx="16" fill="#1a2332" stroke="#3b82f630" stroke-width="1.5"/>
|
||||
<circle cx="540" cy="340" r="40" fill="#3b82f622" stroke="#3b82f6" stroke-width="2"/>
|
||||
<text x="540" y="345" font-family="system-ui, sans-serif" font-size="18" font-weight="700" fill="#3b82f6" text-anchor="middle">DarkWatch</text>
|
||||
<text x="540" y="400" font-family="system-ui, sans-serif" font-size="17" font-weight="600" fill="#f1f5f9" text-anchor="middle">Dark Web</text>
|
||||
<text x="540" y="432" font-family="system-ui, sans-serif" font-size="17" font-weight="600" fill="#f1f5f9" text-anchor="middle">Monitoring</text>
|
||||
<text x="540" y="460" font-family="system-ui, sans-serif" font-size="14" fill="#94a3b8" text-anchor="middle">24/7 scanning of</text>
|
||||
<text x="540" y="485" font-family="system-ui, sans-serif" font-size="14" fill="#94a3b8" text-anchor="middle">150+ marketplaces</text>
|
||||
<text x="540" y="510" font-family="system-ui, sans-serif" font-size="14" fill="#94a3b8" text-anchor="middle">for your data</text>
|
||||
<rect x="720" y="280" width="300" height="400" rx="16" fill="#1a2332" stroke="#22c55e30" stroke-width="1.5"/>
|
||||
<circle cx="870" cy="340" r="40" fill="#22c55e22" stroke="#22c55e" stroke-width="2"/>
|
||||
<text x="870" y="345" font-family="system-ui, sans-serif" font-size="18" font-weight="700" fill="#22c55e" text-anchor="middle">SpamShield</text>
|
||||
<text x="870" y="400" font-family="system-ui, sans-serif" font-size="17" font-weight="600" fill="#f1f5f9" text-anchor="middle">Spam Call &</text>
|
||||
<text x="870" y="432" font-family="system-ui, sans-serif" font-size="17" font-weight="600" fill="#f1f5f9" text-anchor="middle">Text Blocking</text>
|
||||
<text x="870" y="460" font-family="system-ui, sans-serif" font-size="14" fill="#94a3b8" text-anchor="middle">AI-powered filtering</text>
|
||||
<text x="870" y="485" font-family="system-ui, sans-serif" font-size="14" fill="#94a3b8" text-anchor="middle">of spam calls</text>
|
||||
<text x="870" y="510" font-family="system-ui, sans-serif" font-size="14" fill="#94a3b8" text-anchor="middle">and text messages</text>
|
||||
<rect x="405" y="760" width="270" height="52" rx="26" fill="#3b82f6"/>
|
||||
<text x="540" y="793" font-family="system-ui, sans-serif" font-size="18" font-weight="600" fill="#f1f5f9" text-anchor="middle">Join the Waitlist</text>
|
||||
|
||||
<text x="540" y="870" font-family="system-ui, sans-serif" font-size="15" fill="#64748b" text-anchor="middle">Three critical protections, one powerful platform</text>
|
||||
<text x="540" y="900" font-family="system-ui, sans-serif" font-size="14" fill="#64748b" text-anchor="middle">Start free. Launching soon.</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.4 KiB |
BIN
assets/ads/meta_d_191_1200x628.png
Normal file
|
After Width: | Height: | Size: 124 KiB |
60
assets/ads/meta_d_191_1200x628.svg
Normal file
@@ -0,0 +1,60 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="628" viewBox="0 0 1200 628">
|
||||
<defs>
|
||||
<radialGradient id="shieldGlow" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#3b82f630"/>
|
||||
<stop offset="100%" stop-color="#3b82f600"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="bgD" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#0a0f1e"/>
|
||||
<stop offset="60%" stop-color="#0d1a30"/>
|
||||
<stop offset="100%" stop-color="#0a0f1e"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#3b82f6"/>
|
||||
<stop offset="100%" stop-color="#06b6d4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="shieldGradD" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="#3b82f6"/>
|
||||
<stop offset="100%" stop-color="#06b6d4"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="1200" height="628" fill="url(#bgD)"/>
|
||||
<rect width="1200" height="5" fill="url(#brandBar)"/>
|
||||
|
||||
<!-- Digital shield overlay -->
|
||||
<circle cx="600" cy="314" r="238.64000000000001" fill="url(#shieldGlow)"/>
|
||||
<g transform="translate(600, 284)">
|
||||
<path d="M-60,-55 L60,-55 L65,15 Q65,55 35,75 L0,90 L-35,75 Q-65,55 -65,15 Z" fill="none" stroke="url(#shieldGradD)" stroke-width="3" opacity="0.8"/>
|
||||
<path d="M-25,-5 L0,25 L30,-15" fill="none" stroke="#22c55e" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</g>
|
||||
|
||||
<!-- Family figures (simplified) -->
|
||||
|
||||
<!-- Grandparent L -->
|
||||
<circle cx="490" cy="319" r="22" fill="#33415580"/>
|
||||
<rect x="475" y="344" width="30" height="50" rx="8" fill="#33415560"/>
|
||||
|
||||
<!-- Parent L -->
|
||||
<circle cx="550" cy="304" r="25" fill="#47556980"/>
|
||||
<rect x="532" y="332" width="36" height="65" rx="10" fill="#47556960"/>
|
||||
|
||||
<!-- Child -->
|
||||
<circle cx="615" cy="314" r="18" fill="#64748b80"/>
|
||||
<rect x="602" y="334" width="26" height="40" rx="8" fill="#64748b60"/>
|
||||
|
||||
<!-- Parent R -->
|
||||
<circle cx="680" cy="304" r="25" fill="#47556980"/>
|
||||
<rect x="662" y="332" width="36" height="65" rx="10" fill="#47556960"/>
|
||||
|
||||
<!-- Grandparent R -->
|
||||
<circle cx="740" cy="319" r="22" fill="#33415580"/>
|
||||
<rect x="725" y="344" width="30" height="50" rx="8" fill="#33415560"/>
|
||||
|
||||
|
||||
<text x="600" y="468" font-family="system-ui, sans-serif" font-size="32" font-weight="700" fill="#f1f5f9" text-anchor="middle">Protect Your Whole Family</text>
|
||||
<text x="600" y="513" font-family="system-ui, sans-serif" font-size="17" fill="#94a3b8" text-anchor="middle">AI voice clone detection + dark web monitoring + spam blocking</text>
|
||||
<text x="600" y="543" font-family="system-ui, sans-serif" font-size="17" fill="#94a3b8" text-anchor="middle">for up to unlimited family members on Premium</text>
|
||||
|
||||
<rect x="485" y="568" width="230" height="46" rx="23" fill="#3b82f6"/>
|
||||
<text x="600" y="595" font-family="system-ui, sans-serif" font-size="17" font-weight="600" fill="#f1f5f9" text-anchor="middle">Protect My Family</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
BIN
assets/ads/meta_d_1x1_1080x1080.png
Normal file
|
After Width: | Height: | Size: 130 KiB |
60
assets/ads/meta_d_1x1_1080x1080.svg
Normal file
@@ -0,0 +1,60 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1080" height="1080" viewBox="0 0 1080 1080">
|
||||
<defs>
|
||||
<radialGradient id="shieldGlow" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#3b82f630"/>
|
||||
<stop offset="100%" stop-color="#3b82f600"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="bgD" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#0a0f1e"/>
|
||||
<stop offset="60%" stop-color="#0d1a30"/>
|
||||
<stop offset="100%" stop-color="#0a0f1e"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#3b82f6"/>
|
||||
<stop offset="100%" stop-color="#06b6d4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="shieldGradD" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="#3b82f6"/>
|
||||
<stop offset="100%" stop-color="#06b6d4"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="1080" height="1080" fill="url(#bgD)"/>
|
||||
<rect width="1080" height="5" fill="url(#brandBar)"/>
|
||||
|
||||
<!-- Digital shield overlay -->
|
||||
<circle cx="540" cy="540" r="410.4" fill="url(#shieldGlow)"/>
|
||||
<g transform="translate(540, 510)">
|
||||
<path d="M-60,-55 L60,-55 L65,15 Q65,55 35,75 L0,90 L-35,75 Q-65,55 -65,15 Z" fill="none" stroke="url(#shieldGradD)" stroke-width="3" opacity="0.8"/>
|
||||
<path d="M-25,-5 L0,25 L30,-15" fill="none" stroke="#22c55e" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</g>
|
||||
|
||||
<!-- Family figures (simplified) -->
|
||||
|
||||
<!-- Grandparent L -->
|
||||
<circle cx="430" cy="545" r="22" fill="#33415580"/>
|
||||
<rect x="415" y="570" width="30" height="50" rx="8" fill="#33415560"/>
|
||||
|
||||
<!-- Parent L -->
|
||||
<circle cx="490" cy="530" r="25" fill="#47556980"/>
|
||||
<rect x="472" y="558" width="36" height="65" rx="10" fill="#47556960"/>
|
||||
|
||||
<!-- Child -->
|
||||
<circle cx="555" cy="540" r="18" fill="#64748b80"/>
|
||||
<rect x="542" y="560" width="26" height="40" rx="8" fill="#64748b60"/>
|
||||
|
||||
<!-- Parent R -->
|
||||
<circle cx="620" cy="530" r="25" fill="#47556980"/>
|
||||
<rect x="602" y="558" width="36" height="65" rx="10" fill="#47556960"/>
|
||||
|
||||
<!-- Grandparent R -->
|
||||
<circle cx="680" cy="545" r="22" fill="#33415580"/>
|
||||
<rect x="665" y="570" width="30" height="50" rx="8" fill="#33415560"/>
|
||||
|
||||
|
||||
<text x="540" y="920" font-family="system-ui, sans-serif" font-size="32" font-weight="700" fill="#f1f5f9" text-anchor="middle">Protect Your Whole Family</text>
|
||||
<text x="540" y="965" font-family="system-ui, sans-serif" font-size="17" fill="#94a3b8" text-anchor="middle">AI voice clone detection + dark web monitoring + spam blocking</text>
|
||||
<text x="540" y="995" font-family="system-ui, sans-serif" font-size="17" fill="#94a3b8" text-anchor="middle">for up to unlimited family members on Premium</text>
|
||||
|
||||
<rect x="425" y="1020" width="230" height="46" rx="23" fill="#3b82f6"/>
|
||||
<text x="540" y="1047" font-family="system-ui, sans-serif" font-size="17" font-weight="600" fill="#f1f5f9" text-anchor="middle">Protect My Family</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
BIN
assets/ads/meta_d_45_1080x1350.png
Normal file
|
After Width: | Height: | Size: 132 KiB |
60
assets/ads/meta_d_45_1080x1350.svg
Normal file
@@ -0,0 +1,60 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1080" height="1350" viewBox="0 0 1080 1350">
|
||||
<defs>
|
||||
<radialGradient id="shieldGlow" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#3b82f630"/>
|
||||
<stop offset="100%" stop-color="#3b82f600"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="bgD" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#0a0f1e"/>
|
||||
<stop offset="60%" stop-color="#0d1a30"/>
|
||||
<stop offset="100%" stop-color="#0a0f1e"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="brandBar" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0%" stop-color="#3b82f6"/>
|
||||
<stop offset="100%" stop-color="#06b6d4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="shieldGradD" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="#3b82f6"/>
|
||||
<stop offset="100%" stop-color="#06b6d4"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="1080" height="1350" fill="url(#bgD)"/>
|
||||
<rect width="1080" height="5" fill="url(#brandBar)"/>
|
||||
|
||||
<!-- Digital shield overlay -->
|
||||
<circle cx="540" cy="675" r="410.4" fill="url(#shieldGlow)"/>
|
||||
<g transform="translate(540, 645)">
|
||||
<path d="M-60,-55 L60,-55 L65,15 Q65,55 35,75 L0,90 L-35,75 Q-65,55 -65,15 Z" fill="none" stroke="url(#shieldGradD)" stroke-width="3" opacity="0.8"/>
|
||||
<path d="M-25,-5 L0,25 L30,-15" fill="none" stroke="#22c55e" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</g>
|
||||
|
||||
<!-- Family figures (simplified) -->
|
||||
|
||||
<!-- Grandparent L -->
|
||||
<circle cx="430" cy="680" r="22" fill="#33415580"/>
|
||||
<rect x="415" y="705" width="30" height="50" rx="8" fill="#33415560"/>
|
||||
|
||||
<!-- Parent L -->
|
||||
<circle cx="490" cy="665" r="25" fill="#47556980"/>
|
||||
<rect x="472" y="693" width="36" height="65" rx="10" fill="#47556960"/>
|
||||
|
||||
<!-- Child -->
|
||||
<circle cx="555" cy="675" r="18" fill="#64748b80"/>
|
||||
<rect x="542" y="695" width="26" height="40" rx="8" fill="#64748b60"/>
|
||||
|
||||
<!-- Parent R -->
|
||||
<circle cx="620" cy="665" r="25" fill="#47556980"/>
|
||||
<rect x="602" y="693" width="36" height="65" rx="10" fill="#47556960"/>
|
||||
|
||||
<!-- Grandparent R -->
|
||||
<circle cx="680" cy="680" r="22" fill="#33415580"/>
|
||||
<rect x="665" y="705" width="30" height="50" rx="8" fill="#33415560"/>
|
||||
|
||||
|
||||
<text x="540" y="1190" font-family="system-ui, sans-serif" font-size="32" font-weight="700" fill="#f1f5f9" text-anchor="middle">Protect Your Whole Family</text>
|
||||
<text x="540" y="1235" font-family="system-ui, sans-serif" font-size="17" fill="#94a3b8" text-anchor="middle">AI voice clone detection + dark web monitoring + spam blocking</text>
|
||||
<text x="540" y="1265" font-family="system-ui, sans-serif" font-size="17" fill="#94a3b8" text-anchor="middle">for up to unlimited family members on Premium</text>
|
||||
|
||||
<rect x="425" y="1290" width="230" height="46" rx="23" fill="#3b82f6"/>
|
||||
<text x="540" y="1317" font-family="system-ui, sans-serif" font-size="17" font-weight="600" fill="#f1f5f9" text-anchor="middle">Protect My Family</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |