#!/usr/bin/env python3
"""DMark FB Carousel — Branding & Otomasi
Link artikel: https://www.dmark.id/branding-dan-otomasi-duet-strategis/
"""

from PIL import Image, ImageDraw, ImageFont
import os, math

OUT_DIR = os.path.expanduser("~/.openclaw/workspace-atun/dmark_branding_otomasi")
os.makedirs(OUT_DIR, exist_ok=True)

W, H = 1080, 1350
ORANGE = (249, 115, 22)
WHITE = (255, 255, 255)

FONT_DIR = os.path.expanduser("~/.fonts")

# Fonts
B170 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 170)
B140 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 140)
B128 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 128)
B85  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 85)
B65  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 65)
B44  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 44)
B30  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 30)
B24  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 24)
SB28 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-SemiBold.ttf"), 28)
R36  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 36)
R32  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 32)
R22  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 22)
R20  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 20)

M = 65  # margin rata semua sisi

def header(d, page_label):
    d.text((M, M), "DMARK", font=B24, fill=WHITE)
    d.text((W - M, M), page_label, font=R22, fill=WHITE, anchor="rt")

def footer(d, hashtag=""):
    d.text((M, H - 65), "www.dmark.id", font=R20, fill=WHITE)
    if hashtag:
        d.text((W - M, H - 65), hashtag, font=R20, fill=WHITE, anchor="rt")

def auto_wrap(text, font, max_w):
    """Wrap text to fit max_w, returns lines."""
    words = text.split()
    lines = []
    current = ""
    for w in words:
        test = current + " " + w if current else w
        bb = ImageDraw.Draw(Image.new("RGB", (1,1))).textbbox((0,0), test, font=font)
        if bb[2] - bb[0] <= max_w:
            current = test
        else:
            if current:
                lines.append(current)
            current = w
    if current:
        lines.append(current)
    return lines

def divider_dashed(d, y, w=320):
    x = M
    dw, gw = 14, 10
    while x < M + w:
        xe = min(x + dw, M + w)
        d.line([(x, y), (xe, y)], fill=WHITE, width=2)
        x += dw + gw

# ============ SLIDE 1: COVER ============
img = Image.new("RGB", (W, H), ORANGE)
draw = ImageDraw.Draw(img)
header(draw, "01/06")

# Judul tengah vertikal
draw.text((M, 320), "BRANDING +", font=B128, fill=WHITE)
divider_dashed(draw, 510, 300)
draw.text((M, 540), "OTOMASI", font=B128, fill=WHITE)

draw.text((M, 740), "Duet strategis yang bikin bisnis", font=R36, fill=WHITE)
draw.text((M, 800), "Anda tumbuh 2x lipat.", font=R36, fill=WHITE)

# Checklist
items = ["Branding kuat tanpa sistem → lambat"]
items2 = ["Sistem rapi tanpa brand → nggak diingat"]
draw.text((M, 920), "\u2611", font=R32, fill=WHITE)
draw.text((M + 48, 922), items[0], font=R32, fill=WHITE)
draw.text((M, 975), "\u2611", font=R32, fill=WHITE)
draw.text((M + 48, 977), items2[0], font=R32, fill=WHITE)

footer(draw, "#BrandStrategy #OtomasiBisnis #DMARK")
img.save(os.path.join(OUT_DIR, "01_cover.png"))

# ============ SLIDE 2: BRAND SAJA TIDAK CUKUP ============
img = Image.new("RGB", (W, H), ORANGE)
draw = ImageDraw.Draw(img)
header(draw, "02/06")

draw.text((M, 135), "KENAPA BRANDING", font=B85, fill=WHITE)
draw.text((M, 240), "SAJA TIDAK CUKUP?", font=B85, fill=WHITE)
divider_dashed(draw, 360, 250)

draw.text((M, 420), "Brand udah keren, tapi di belakang:", font=R36, fill=WHITE)

issues = [
    "Manual ngirim invoice satu per satu",
    "Ngetik ulang data dari WA ke spreadsheet",
    "Lupa follow-up calon pelanggan",
    "Bikin laporan copy-paste 5 sumber",
]
y = 510
for issue in issues:
    draw.text((M, y), "\u2611", font=R32, fill=WHITE)
    draw.text((M + 48, y + 2), issue, font=R32, fill=WHITE)
    y += 55

draw.text((M, y + 20), "Brand keren di depan, tim kelelahan di", font=R36, fill=WHITE)
draw.text((M, y + 80), "belakang. Pelayanan melambat.", font=R36, fill=WHITE)

footer(draw, "#Branding #Otomasi #DigitalMarketing")
img.save(os.path.join(OUT_DIR, "02_branding_tidak_cukup.png"))

# ============ SLIDE 3: 3 AREA KRUSIAL (Customer Journey) ============
img = Image.new("RGB", (W, H), ORANGE)
draw = ImageDraw.Draw(img)
header(draw, "03/06")

draw.text((M, 100), "3 AREA KRUSIAL", font=B85, fill=WHITE)
draw.text((M, 205), "#1: Customer Journey", font=B65, fill=WHITE)
divider_dashed(draw, 320, 200)

draw.text((M, 370), "\u2611 Saat pertama kenal brand", font=R32, fill=WHITE)
draw.text((M + 48, 372), "Chatbot otomatis sapa & kasih info", font=R32)
draw.text((M, 430), "\u2611 Saat mau beli", font=R32, fill=WHITE)
draw.text((M + 48, 457), "Sistem kirim quote/invoice otomatis", font=R32, fill=WHITE)
draw.text((M, 510), "\u2611 Setelah beli", font=R32, fill=WHITE)
draw.text((M + 48, 537), "Follow-up, review, rekomendasi produk", font=R32, fill=WHITE)

draw.text((M, 620), "Setiap touchpoint berjalan mulus &", font=R36, fill=WHITE)
draw.text((M, 680), "konsisten — memperkuat brand", font=R36, fill=WHITE)
draw.text((M, 740), "experience pelanggan.", font=R36, fill=WHITE)

footer(draw, "#CustomerJourney #BrandExperience #DMARK")
img.save(os.path.join(OUT_DIR, "03_customer_journey.png"))

# ============ SLIDE 4: KONSISTENSI KOMUNIKASI & DATA ============
img = Image.new("RGB", (W, H), ORANGE)
draw = ImageDraw.Draw(img)
header(draw, "04/06")

draw.text((M, 100), "#2: Konsistensi", font=B85, fill=WHITE)
draw.text((M, 195), "Komunikasi Brand", font=B85, fill=WHITE)
divider_dashed(draw, 310, 200)

draw.text((M, 370), "Otomasi jaga brand voice di semua kanal:", font=R36, fill=WHITE)

items4 = [
    "Email marketing sesuai brand guidelines",
    "Posting terjadwal ke media sosial",
    "Newsletter format seragam",
    "Follow-up pelanggan on-brand",
]
y4 = 460
for itm in items4:
    draw.text((M, y4), "\u2611", font=R32, fill=WHITE)
    draw.text((M + 48, y4 + 2), itm, font=R32, fill=WHITE)
    y4 += 55

# #3
y5 = y4 + 30
draw.text((M, y5), "#3: Data buat Keputusan Strategis", font=B65, fill=WHITE)

items5 = [
    "Tahu asal pelanggan & konten terlaris",
    "Ukur efektivitas kampanye real-time",
    "Deteksi tren sebelum kompetitor",
]
y6 = y5 + 90
for itm in items5:
    draw.text((M, y6), "\u2611", font=R32, fill=WHITE)
    draw.text((M + 48, y6 + 2), itm, font=R32, fill=WHITE)
    y6 += 55

footer(draw, "#KonsistensiBrand #DataDriven #DMARK")
img.save(os.path.join(OUT_DIR, "04_konsistensi_data.png"))

# ============ SLIDE 5: CARA MULAI ============
img = Image.new("RGB", (W, H), ORANGE)
draw = ImageDraw.Draw(img)
header(draw, "05/06")

draw.text((M, 100), "GIMANA CARA", font=B85, fill=WHITE)
draw.text((M, 195), "MULAINYA?", font=B85, fill=WHITE)
divider_dashed(draw, 310, 200)

steps = [
    ("1", "Audit sistem", "Cari proses manual yang makan waktu"),
    ("2", "Otomatiskan", "Prioritas yang paling menyita waktu"),
    ("3", "Strategi Branding", "Setelah sistem rapi, investasi ke brand"),
    ("4", "Evaluasi", "Pantau dampak dan optimasi lanjutan"),
]

ys = 390
for num, title, desc in steps:
    draw.text((M, ys), num, font=B44, fill=WHITE)
    draw.text((M + 70, ys + 2), title, font=SB28, fill=WHITE)
    draw.text((M + 70, ys + 40), desc, font=R32, fill=WHITE)
    ys += 110

draw.text((M, 940), "Mulai dari langkah kecil yang langsung", font=R36, fill=WHITE)
draw.text((M, 1000), "terasa dampaknya.", font=R36, fill=WHITE)

footer(draw, "#TipsBisnis #StrategiBranding #DMARK")
img.save(os.path.join(OUT_DIR, "05_cara_mulai.png"))

# ============ SLIDE 6: CTA ============
img = Image.new("RGB", (W, H), ORANGE)
draw = ImageDraw.Draw(img)
header(draw, "06/06")

draw.text((M, 150), "DUET INI", font=B128, fill=WHITE)
divider_dashed(draw, 340, 250)
draw.text((M, 370), "BISA BIKIN", font=B128, fill=WHITE)
draw.text((M, 550), "BISNIS LO", font=B128, fill=WHITE)
draw.text((M, 730), "TUMBUH 2X", font=B128, fill=WHITE)
draw.text((M, 860), "LIPAT", font=B128, fill=WHITE)

draw.text((M, 1020), "Konsultasi gratis strategi branding", font=R36, fill=WHITE)
draw.text((M, 1080), "& pertumbuhan bisnis Anda.", font=R36, fill=WHITE)

# CTA Button
btn_w, btn_h = 420, 72
btn_x = M
btn_y = 1170
draw.rounded_rectangle([btn_x, btn_y, btn_x+btn_w, btn_y+btn_h], radius=36, fill=WHITE)
draw.text((btn_x + btn_w//2, btn_y + btn_h//2 - 2), "Hubungi Kami", font=B30, fill=ORANGE, anchor="mm")

footer(draw, "#KonsultasiGratis #DMARK #BrandingStrategy")
img.save(os.path.join(OUT_DIR, "06_cta.png"))

print(f"✅ 6 slide selesai di: {OUT_DIR}")
for f in sorted(os.listdir(OUT_DIR)):
    print(f"  {f}")
