#!/usr/bin/env python3
"""DMark Carousel v5 — Judul 1 kalimat, wrap, rata kiri, nggak numpuk
Judul: 140px Poppins Bold — 1 baris atau wrap natural
Deskripsi: 35px Poppins Regular
"""

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

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

W, H = 1080, 1350
ORANGE = (255, 102, 0)
WHITE = (255, 255, 255)
DARK = (40, 40, 40)
LIGHT_ORANGE = (255, 237, 224)
SOFT_ORANGE = (255, 215, 180)
GRID = (255, 245, 235)

FONT_DIR = os.path.expanduser("~/.fonts")
JUDUL = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 140)
DESK = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 35)
SMALL = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 22)
NUM = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-SemiBold.ttf"), 50)
CTA = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-SemiBold.ttf"), 32)
LABEL = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 28)

def wrap(draw, text, font, max_w):
    lines = []
    for para in text.split("\n"):
        words = para.split()
        cur = ""
        for w in words:
            test = cur + " " + w if cur else w
            if draw.textbbox((0,0), test, font=font)[2] > max_w and cur:
                lines.append(cur)
                cur = w
            else:
                cur = test
        if cur: lines.append(cur)
    return lines

def dl(draw, text, x, y, font, fill, max_w=920, ls=1.35):
    """Rata kiri, wrap"""
    lines = wrap(draw, text, font, max_w)
    cy = y
    for line in lines:
        draw.text((x, cy), line, font=font, fill=fill)
        lh = draw.textbbox((0,0), line, font=font)[3] - draw.textbbox((0,0), line, font=font)[1]
        cy += int(lh * ls)
    return cy

def dc(draw, text, y, font, fill, max_w=920):
    lines = wrap(draw, text, font, max_w)
    lh_list = [(line, draw.textbbox((0,0), line, font=font)[3] - draw.textbbox((0,0), line, font=font)[1]) for line in lines]
    total = sum(lh+6 for _, lh in lh_list)
    cy = y - total//2
    for line, lh in lh_list:
        lw = draw.textbbox((0,0), line, font=font)[2]
        draw.text(((W-lw)//2, cy), line, font=font, fill=fill)
        cy += lh+6

def logo(draw, bg):
    c = (255,200,150) if bg == ORANGE else ORANGE
    draw.text((50, 45), "DMark  Creative", font=SMALL, fill=c)

def line_grid(draw):
    for y in range(0, H, 120):
        draw.line([(0,y),(W,y)], fill=GRID, width=1)

# ===== SLIDE 1: COVER =====
img = Image.new("RGB", (W, H), ORANGE)
draw = ImageDraw.Draw(img)
logo(draw, ORANGE)
dl(draw, "Digital Marketing untuk Klinik & RS", 90, 200, JUDUL, WHITE)
dl(draw, "Strategi tepat menjangkau pasien di era digital", 90, 560, LABEL, SOFT_ORANGE)
dc(draw, "dmark.id", H-100, SMALL, WHITE)
img.save(os.path.join(OUT_DIR, "01_cover.png"))

# ===== SLIDE 2: MENGAPA =====
img = Image.new("RGB", (W, H), WHITE)
draw = ImageDraw.Draw(img)
line_grid(draw)
logo(draw, WHITE)
dl(draw, "Mengapa Klinik & RS Perlu Digital Marketing?", 90, 120, JUDUL, ORANGE)
poin = [
    ("01", "90% pasien cari informasi kesehatan online"),
    ("02", "Milenial & Gen Z pilih RS via review digital"),
    ("03", "Lebih efisien & kompetitif dari media konvensional"),
]
py = 450
for num, desc in poin:
    draw.text((90, py), num, font=NUM, fill=ORANGE)
    py = dl(draw, desc, 90, py+65, DESK, DARK, 880, 1.5) + 50
img.save(os.path.join(OUT_DIR, "02_mengapa.png"))

# ===== SLIDE 3: STRATEGI 1 =====
img = Image.new("RGB", (W, H), ORANGE)
draw = ImageDraw.Draw(img)
logo(draw, ORANGE)
dl(draw, "Strategi Konten Edukasi & Branding", 90, 180, JUDUL, WHITE)
items3 = [
    "▸  Artikel SEO untuk layanan medis",
    "▸  Testimoni pasien (video & teks)",
    "▸  Infografis informatif & mudah dibagikan",
    "▸  Konten edukatif di IG/FB",
]
py = 520
for pt in items3:
    py = dl(draw, pt, 90, py, DESK, SOFT_ORANGE, 920, 1.6) + 25
img.save(os.path.join(OUT_DIR, "03_strategi1.png"))

# ===== SLIDE 4: STRATEGI 2 =====
img = Image.new("RGB", (W, H), WHITE)
draw = ImageDraw.Draw(img)
line_grid(draw)
logo(draw, WHITE)
dl(draw, "Strategi Google & Sosial Media Ads", 90, 180, JUDUL, ORANGE)
items4 = [
    "▸  Google Ads untuk keyword kesehatan",
    "▸  Meta Ads targeting lokasi & demografis",
    "▸  Remarketing pasien potensial",
    "▸  Landing page optimal + booking online",
]
py = 520
for pt in items4:
    py = dl(draw, pt, 90, py, DESK, DARK, 920, 1.6) + 25
img.save(os.path.join(OUT_DIR, "04_strategi2.png"))

# ===== SLIDE 5: CTA =====
img = Image.new("RGB", (W, H), ORANGE)
draw = ImageDraw.Draw(img)
logo(draw, ORANGE)
dc(draw, "Siap Kembangkan Klinik atau RS Anda?", 350, JUDUL, WHITE)
dc(draw, "Konsultasi GRATIS bersama tim DMark Creative", 600, LABEL, SOFT_ORANGE)
dc(draw, "Kami siapkan strategi digital marketing yang tepat untuk Anda", 670, DESK, SOFT_ORANGE)

# Tombol WA
btn_w, btn_h = 440, 72
btn_x = (W - btn_w)//2
btn_y = 800
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 + 22, btn_y + btn_h//2 - 8), "Hubungi Kami", font=CTA, fill=ORANGE, anchor="mm")
# WA icon
cx, cwy = btn_x + 52, btn_y + btn_h//2
for ang in range(360):
    rad = math.radians(ang)
    px = int(cx + 17 * math.cos(rad))
    py = int(cwy + 17 * math.sin(rad))
    if 0 <= px < W and 0 <= py < H:
        img.putpixel((px, py), (37, 211, 102))
dc(draw, "dmark.id", H-60, SMALL, WHITE)
img.save(os.path.join(OUT_DIR, "05_cta.png"))

print(f"✅ v5 selesai! File di: {OUT_DIR}")
for f in sorted(os.listdir(OUT_DIR)):
    print(f"  {f}")
