#!/usr/bin/env python3
"""StudioSoft Healthcare Carousel — hc24 Testimoni & Review Pasien Online untuk RS/Klinik
Resolusi: 1080×1350 (4:5 portrait)
BG: Biru royal #1E3A8A
Teks: Putih #FFFFFF
Accent: Cyan #22D3EE
Font: Poppins
Safe zone: 65px margin (teks min 20px dari tepi)
Aturan: BG biru => font WAJIB PUTIH (FIXED)
5 slide: cover, kenapa, isi, langkah, cta
"""
from PIL import Image, ImageDraw, ImageFont
import os

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

W, H = 1080, 1350
BLUE = (30, 58, 138)       # #1E3A8A
CYAN = (34, 211, 238)      # #22D3EE accent
WHITE = (255, 255, 255)
M = 65                      # margin/safe zone

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)
B70 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 70)
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)
SB28 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-SemiBold.ttf"), 28)
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 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), BLUE)
    d = ImageDraw.Draw(img)
    header_footer(d, "1", "#TestimoniRS")

    d.text((M, 150), "KATA", font=B130, fill=WHITE)
    d.text((M, 320), "PASIEN", font=B130, fill=CYAN)
    d.text((M, 490), "JADI", font=B110, fill=WHITE)
    d.text((M, 630), "KUNCI", font=B130, fill=WHITE)

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

    d.text((M, y + 30), "Testimoni & ulasan rakyat percaya sebelum memilih fasyankes", font=REG28, fill=WHITE)
    p = os.path.join(OUT_DIR, "01_cover.png")
    img.save(p, "PNG")
    print(f"OK {p}")
    return p


def slide_kenapa():
    img = Image.new("RGB", (W, H), BLUE)
    d = ImageDraw.Draw(img)
    header_footer(d, "2", "#TestimoniRS")

    d.text((M, 100), "KENAPA", font=B110, fill=WHITE)
    d.text((M, 230), "PERCAYA?", font=B130, fill=CYAN)

    items = [
        "1. Pasien mencari ulasan sebelum datang",
        "2. Review nyata lebih dipercaya dari brosur",
        "3. Testimoni membangun citra RS/klinik",
        "4. Ulasan baik = rekomendasi dari mulut ke mulut",
    ]
    y = 420
    for s in items:
        d.text((M, y), s, font=SB36, fill=WHITE)
        y += 150

    d.text((M, 1030), "Kepercayaan tumbuh dari cerita pasien yang puas", font=REG32, fill=WHITE)

    p = os.path.join(OUT_DIR, "02_kenapa.png")
    img.save(p, "PNG")
    print(f"OK {p}")
    return p


def slide_isi():
    img = Image.new("RGB", (W, H), BLUE)
    d = ImageDraw.Draw(img)
    header_footer(d, "3", "#TestimoniRS")

    d.text((M, 100), "ISI", font=B130, fill=WHITE)
    d.text((M, 260), "REVIEW", font=B130, fill=CYAN)

    items = [
        ("Jujur & spesifik", "cerita nyata, bukan kata manis belaka"),
        ("Sesuai layanan", "ulasan yang relevan dengan pasien target"),
        ("Lokasi & proses", "kemudahan daftar, antre, hingga pulang"),
        ("Tindak lanjut", "balas ulasan, tangani keluhan dengan baik"),
    ]
    y = 500
    for t1, t2 in items:
        d.text((M, y), t1, font=SB36, fill=CYAN)
        y += 55
        d.text((M, y), t2, font=REG28, fill=WHITE)
        y += 105

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


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

    d.text((M, 110), "MULAI", font=B130, fill=WHITE)
    d.text((M, 260), "DULU", font=B130, fill=CYAN)

    items = [
        ("1", "Rutin minta ulasan setelah pasien selesai dirawat."),
        ("2", "Tampilkan testimoni terbaik di website & media sosial."),
        ("3", "Balas setiap ulasan, termasuk yang kurang baik, secara sopan."),
        ("4", "Pantau skor ulasan dan jadikan bahan perbaikan layanan."),
    ]
    y = 440
    for num, text in items:
        d.text((M, y), num, font=B50, fill=WHITE)
        d.text((M + 70, y + 6), text, font=REG28, fill=WHITE)
        y += 178

    d.text((M, 1150), "Ulasan yang dikelola baik menjadi aset pemasaran paling jujur", font=REG28, fill=WHITE)

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


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

    title = "JADIKAN"
    y = 160
    d.text((M, y), title, font=B110, fill=WHITE)
    y += 130

    d.text((M, y), "KATA", font=B130, fill=CYAN)
    d.text((M, y + 140), "PASIEN", font=B130, fill=WHITE)

    y2 = y + 340
    d.text((M, y2), "Kepercayaan pasien dimulai dari ulasan yang Anda kelola", font=SB36, fill=WHITE)
    y2 += 110
    d.text((M, y2), "Konsultasi Gratis", font=B50, fill=WHITE)
    d.text((M, y2 + 80), "www.studiosoft.id", font=REG36, fill=WHITE)

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


def generate_all():
    print("StudioSoft Healthcare Carousel — Testimoni & Review Pasien Online")
    print("=" * 45)
    paths = [slide_cover(), slide_kenapa(), slide_isi(), slide_langkah(), slide_cta()]
    print(f"OK {len(paths)} slide generated in {OUT_DIR}")
    return paths


if __name__ == "__main__":
    generate_all()
