#!/usr/bin/env python3
"""StudioSoft Healthcare Carousel — hc06 Klinik Kecil Butuh Digital Marketing
Resolusi: 1080×1350 (4:5 portrait)
BG: Hijau teal #0F766E
Teks: Putih #FFFFFF
Font: Poppins
Safe zone: 65px margin
5 slide: cover, mitos, alasan, langkah, cta
"""
from PIL import Image, ImageDraw, ImageFont
import os

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

W, H = 1080, 1350
TEAL = (15, 118, 110)      # #0F766E
DARK = (6, 78, 59)         # accent #064E3B
WHITE = (255, 255, 255)
M = 65

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

B150 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 150)
B130 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 130)
B110 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 110)
B90 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 90)
B50 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 50)
B30 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 30)
SB40 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-SemiBold.ttf"), 40)
SB36 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-SemiBold.ttf"), 36)
REG36 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 36)
REG32 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 32)
REG28 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 28)
REG24 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 24)
REG20 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 20)


def fh(drw, text, font):
    b = drw.textbbox((0, 0), text, font=font)
    return b[3] - b[1]


def fw(drw, text, font):
    return drw.textbbox((0, 0), text, font=font)[2]


def header_footer(d, num, tag):
    d.text((M, 30), "STUDIOSOFT", font=B30, fill=WHITE)
    d.text((W - M, 30), f"{num}/5", font=REG24, fill=WHITE, anchor="rt")
    d.text((M, H - 50), "studiosoft.id", font=REG20, fill=WHITE)
    d.text((W - M, H - 50), tag, font=REG20, fill=WHITE, anchor="rt")


def slide_cover():
    img = Image.new("RGB", (W, H), TEAL)
    d = ImageDraw.Draw(img)
    header_footer(d, "1", "#KlinikDigital")

    d.text((M, 250), "KLINIK", font=B150, fill=WHITE)
    d.text((M, 410), "KECIL,", font=B110, fill=WHITE)
    d.text((M, 540), "POTENSI", font=B110, fill=WHITE)
    d.text((M, 670), "BESAR", font=B150, fill=WHITE)

    y = 900
    for i in range(6):
        dx = M + i * 30
        d.line([(dx, y), (dx + 18, y)], fill=WHITE, width=3)

    d.text((M, y + 30), "Digital marketing bukan cuma\nuntuk RS besar", font=REG32, fill=WHITE)
    p = os.path.join(OUT_DIR, "01_cover.png")
    img.save(p, "PNG")
    print(f"✅ {p}")
    return p


def slide_mitos():
    img = Image.new("RGB", (W, H), TEAL)
    d = ImageDraw.Draw(img)
    header_footer(d, "2", "#KlinikDigital")

    d.text((M, 120), "MITOS &", font=B90, fill=WHITE)
    d.text((M, 230), "FAKTA", font=B90, fill=WHITE)

    items = [
        ("MITOS", '"Klinik kecil cukup pasien datang saja"'),
        ("FAKTA", "Klinik kecil justru paling diuntungkan digital marketing"),
        ("MITOS", '"Butuh budget besar untuk iklan"'),
        ("FAKTA", "Bisa mulai dari Rp0 — Google Business Profile gratis"),
    ]
    y = 380
    for label, text in items:
        d.text((M, y), label, font=B50, fill=WHITE)
        y += 60
        d.text((M + 8, y), text, font=REG28, fill=WHITE)
        y += 130

    d.text((M, H - 120), "Jangan remehkan kekuatan digital untuk klinik Anda", font=SB36, fill=WHITE)
    p = os.path.join(OUT_DIR, "02_mitos.png")
    img.save(p, "PNG")
    print(f"✅ {p}")
    return p


def slide_alasan():
    img = Image.new("RGB", (W, H), TEAL)
    d = ImageDraw.Draw(img)
    header_footer(d, "3", "#KlinikDigital")

    d.text((M, 130), "KENAPA KLINIK", font=B90, fill=WHITE)
    d.text((M, 240), "KECIL DIUNTUNGKAN?", font=B90, fill=WHITE)

    items = [
        ("✅", "Biaya mulai lebih rendah"),
        ("🎯", "Jangkauan lebih tepat sasaran"),
        ("⚡", "Hasil lebih cepat terasa"),
        ("🆓", "Bisa mulai dari gratis (GBP, IG, SEO)"),
        ("🤝", "Kedekatan & kepercayaan pasien"),
    ]
    y = 420
    for emoji, text in items:
        d.text((M, y), f"{emoji}  {text}", font=REG32, fill=WHITE)
        y += 130

    p = os.path.join(OUT_DIR, "03_alasan.png")
    img.save(p, "PNG")
    print(f"✅ {p}")
    return p


def slide_langkah():
    img = Image.new("RGB", (W, H), TEAL)
    d = ImageDraw.Draw(img)
    header_footer(d, "4", "#KlinikDigital")

    d.text((M, 130), "LANGKAH", font=B90, fill=WHITE)
    d.text((M, 240), "MULAI", font=B90, fill=WHITE)

    steps = [
        ("1", "Optimasi Google Business Profile"),
        ("2", "Rutin konten edukasi di IG & FB"),
        ("3", "Website mobile-friendly + info dokter"),
        ("4", "Kumpulkan ulasan pasien"),
        ("5", "Ukur hasil & optimasi terus"),
    ]
    y = 390
    for num, desc in steps:
        d.text((M, y), num, font=B50, fill=WHITE)
        d.text((M + 70, y + 8), desc, font=SB36, fill=WHITE)
        y += 150

    p = os.path.join(OUT_DIR, "04_langkah.png")
    img.save(p, "PNG")
    print(f"✅ {p}")
    return p


def slide_cta():
    img = Image.new("RGB", (W, H), TEAL)
    d = ImageDraw.Draw(img)
    header_footer(d, "5", "#KlinikDigital")

    title = "MULAI DARI\nSATU LANGKAH\nHARI INI"
    y = 260
    for line in title.split("\n"):
        d.text((M, y), line, font=B110, fill=WHITE)
        y += 130

    y += 60
    d.text((M, y), "Partner Pertumbuhan Bisnis Berbasis Data", font=SB36, fill=WHITE)
    y += 110
    d.text((M, y), "Konsultasi GRATIS", font=B50, fill=WHITE)
    d.text((M, y + 80), "www.studiosoft.id", font=REG36, fill=WHITE)

    p = os.path.join(OUT_DIR, "05_cta.png")
    img.save(p, "PNG")
    print(f"✅ {p}")
    return p


def generate_all():
    print("🎨 StudioSoft Healthcare Carousel — Klinik Kecil Digital Marketing")
    print("=" * 45)
    paths = [slide_cover(), slide_mitos(), slide_alasan(), slide_langkah(), slide_cta()]
    print(f"\n✅ {len(paths)} slide generated in {OUT_DIR}")
    return paths


if __name__ == "__main__":
    generate_all()
