#!/usr/bin/env python3
"""DMark FB — Single Slide (2026-08-09) — Artikel 3229
Template: DMark BG Orange — 1080x1350 4:5, bg #F97316, text putih, Poppins
Artikel: Mengapa StudioSoft Menjadi Digital Marketing Agency Terbaik untuk Pertumbuhan Brand
1 slide saja.
"""
from PIL import Image, ImageDraw, ImageFont
import os

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

W, H = 1080, 1350
ORANGE = (249, 115, 22)
WHITE = (255, 255, 255)
S20 = 20
M = 65

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

J180 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 170)
J140 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 140)
SUB  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 36)
CHK  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 30)
B24  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 24)
R22  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 22)
R20  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 20)

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

def block_h(d, lines, font, ls=1.3):
    return sum(int(fh(d, l, font)*ls) for l in lines)

def draw_block(d, lines, font, x, y, ls=1.3):
    for line in lines:
        lh = fh(d, line, font)
        d.text((x, y), line, font=font, fill=WHITE)
        y += int(lh*ls)
    return y

def draw_checklist(d, items, x, y, font, ls=1.5):
    for item in items:
        d.text((x, y), "\u2611", font=font, fill=WHITE)
        d.text((x+48, y+2), item, font=font, fill=WHITE)
        y += int(fh(d,item,font)*ls)
    return y

def divider(d, y, width=320):
    x = M
    while x < M + width:
        e = min(x+14, M+width)
        d.line([(x,y),(e,y)], fill=WHITE, width=2)
        x += 24

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

def cy_from_total(d, total):
    hdr_bot = S20 + fh(d,"DMARK",B24)+20
    ftr_top = H - S20 - fh(d,"www.dmark.id",R20)-20
    return hdr_bot + (ftr_top - hdr_bot - total)//2

img = Image.new("RGB", (W,H), ORANGE)
d = ImageDraw.Draw(img)

# Header
d.text((M, S20), "DMARK", font=B24, fill=WHITE)
d.text((W-M, S20), "01/01", font=R22, fill=WHITE, anchor="rt")

title = ["DIGITAL", "MARKETING"]
subs = [
    "Bukan dari kebetulan, tapi dari",
    "strategi terukur & eksekusi",
    "konsisten. Data-driven, terarah,",
    "dan hasilnya bisa diukur.",
]
chks = [
    "SEO + konten + iklan satu paket",
    "Strategy First, eksekusi nyata",
    "Fokus pada pertumbuhan brand",
]

total = block_h(d, title, J180, 1.15)
total += 30 + 25 + 5 + 55
total += block_h(d, subs, SUB, 1.5)
total += 30 + 5 + 60
total += block_h(d, chks, CHK, 1.5)

sy = cy_from_total(d, total)
ty = sy
d.text((M, ty), "DIGITAL", font=J180, fill=WHITE)
ty += int(fh(d,"DIGITAL",J180)*1.15)
ty += 30
divider(d, ty, 320)
ty += 25
d.text((M, ty), "MARKETING", font=J180, fill=WHITE)
ty += int(fh(d,"MARKETING",J180)*1.15)
ty += 30
ty = draw_block(d, subs, SUB, M, ty, 1.5)
ty += 10
ty = draw_checklist(d, chks, M, ty, CHK, 1.5)

footer(d, "www.dmark.id", "#DigitalMarketing #Agency #PertumbuhanBrand #DMARK")

out = os.path.join(OUT_DIR, "01_dmark_fb_20260809.png")
img.save(out)
print("SAVED", out)
