"""Copertina dei reel di unboxing (1080x1920, contenuto nella fascia 3:4 della griglia, y 240-1680).

    python3 codice/unboxing.py masterland "MASTERLAND" foto/ML_unboxing.jpg "dall'editore" "gioco italiano" [--alto 180]

Scrive out/unboxing/<nome>_copertina.png. Layout deciso con Paolo il 22/9/2026 (proposta B):
foto sopra sfumata sui due bordi, occhiello ambra, titolo Bebas, due pillole, la riga
"A breve le nostre prime impressioni, dal tavolo." e @bg_perspective piccolo in grigio.
"""
import os, subprocess, sys
import slide

RIGA = "A breve le nostre prime impressioni,<br>dal tavolo."


def copertina(nome, titolo, foto, pillole=("dall'editore",), riga=RIGA, posizione="50% 45%", alto=0):
    """alto: dove comincia la foto (0 = dal bordo). Con una foto senza aria sopra la scatola, 150-200
    la fa stare intera nella fascia della griglia; sopra resta nero, con la sfumatura."""
    pill = "".join(
        f'<span style="border:3px solid {"#8a6a33" if i == 0 else "#5a5a5a"};border-radius:100px;padding:10px 24px;'
        f'font-size:30px;color:{"#E0A340" if i == 0 else "#d4d4d4"}">{p}</span>' for i, p in enumerate(pillole))
    # Geometria agganciata alla copertina dei caroselli (slide.py, .cop): la griglia mostra la fascia
    # 3:4 centrale, y 240-1680. Dentro la fascia: foto fino a 1380 (1140 visibili, come .cop .foto),
    # titolo 136px con il fondo a 1354 (26px sopra la fine della foto), banda nera da 300px.
    # La sfumatura in alto sta tutta sopra i 240: in griglia la foto è intera.
    html = f"""<!doctype html><html lang="it"><head><meta charset="utf-8"><link rel="stylesheet" href="{slide.FONT}/locale.css">
<style>body{{margin:0;width:1080px;height:1920px;background:#000;font-family:Inter,system-ui,sans-serif;color:#fff;overflow:hidden;-webkit-font-smoothing:antialiased}}
.occh{{font-size:32px;letter-spacing:.18em;text-transform:uppercase;color:#E0A340;font-weight:700;line-height:1}}
.tit{{font-family:'Bebas Neue',sans-serif;font-size:136px;line-height:.86;letter-spacing:.014em;margin-top:26px}}</style></head><body>
<div style="position:absolute;left:0;top:{alto}px;width:1080px;height:{1380 - alto}px;overflow:hidden">
 <img src="{os.path.abspath(foto)}" style="width:1080px;height:{1380 - alto}px;object-fit:cover;object-position:{posizione}">
 <div style="position:absolute;left:0;right:0;top:0;height:{max(60, 240 - alto)}px;background:linear-gradient(to bottom,rgba(0,0,0,.85),rgba(0,0,0,0))"></div>
 <div style="position:absolute;left:0;right:0;bottom:0;height:456px;background:linear-gradient(to top,rgba(0,0,0,.93),rgba(0,0,0,.74) 28%,rgba(0,0,0,.3) 62%,rgba(0,0,0,0))"></div>
</div>
<div style="position:absolute;left:64px;right:64px;bottom:566px">
 <div class="occh">Unboxing · appena arrivato</div>
 <div class="tit">{titolo}</div>
</div>
<div style="position:absolute;left:64px;right:64px;top:1380px;height:300px;display:flex;flex-direction:column">
 <div style="flex:1;display:flex;align-items:center;gap:16px">{pill}</div>
 <div style="flex:none;border-top:2px solid #383838;padding:36px 0 40px;font-size:32px;color:#bdbdbd;line-height:1.35">{riga}</div>
</div>
<div style="position:absolute;left:64px;top:1712px;font-size:26px;color:#6f6f6f">@bg_perspective</div>
</body></html>"""
    os.makedirs(slide.HTML, exist_ok=True)
    out = os.path.join(slide.BASE, "out", "unboxing"); os.makedirs(out, exist_ok=True)
    h = os.path.join(slide.HTML, f"unboxing_{nome}.html")
    with open(h, "w", encoding="utf-8") as f: f.write(html)
    p = os.path.join(out, f"{nome}_copertina.png")
    subprocess.run([slide.CHROME, "--headless", "--disable-gpu", "--hide-scrollbars", "--force-device-scale-factor=1",
                    "--window-size=1080,1920", "--virtual-time-budget=4000", f"--screenshot={p}", f"file://{h}"],
                   check=True, capture_output=True)
    return p


if __name__ == "__main__":
    args = sys.argv[1:]
    alto = int(args.pop(args.index("--alto") + 1)) if "--alto" in args else 0
    if "--alto" in args: args.remove("--alto")
    nome, titolo, foto, *pillole = args
    print(copertina(nome, titolo, foto, pillole or ("dall'editore",), alto=alto))
