#!/usr/bin/env python3
"""DEFINITIVO: mesma arte (cena + frase fluindo), mas cada trecho ancorado ao seu
tile com FOLGA da emenda (col A dir, B centro, C esq) -> nenhuma palavra cruza o
corte. Le como frase unica. Verificacao automatica das emendas."""
import subprocess
from pathlib import Path
from PIL import Image, ImageFilter
import numpy as np
P=Path(__file__).parent; CENAS=P.parent/"cenas"
CHROME="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
W,H,N=1080,1350,3; PW=W*N; PAD=90   # folga da emenda
mono=Image.open(CENAS/"hero-monolitos.png").convert("RGB")
mono.crop((40,0,1180,1024)).resize((1560,1350),Image.LANCZOS).filter(ImageFilter.UnsharpMask(2,50,2)).save(P/"df-esq.png")
nb=Image.open(CENAS/"bancada-notebook-mao.png").convert("RGB")
nb.crop((360,0,1536,1024)).resize((1660,1350),Image.LANCZOS).filter(ImageFilter.UnsharpMask(2,45,2)).save(P/"df-dir.png")
HTML=f'''<!DOCTYPE html><html><head><meta charset="UTF-8"><style>
*{{margin:0;padding:0;box-sizing:border-box}}
body{{width:{PW}px;height:{H}px;position:relative;overflow:hidden;background:#05070B;
 font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;color:#F4F0E8}}
.ceu{{position:absolute;inset:0;background:
 radial-gradient(1500px 900px at 540px 400px,rgba(226,177,90,.13),transparent 66%),
 radial-gradient(1400px 1000px at 1620px 560px,rgba(240,201,126,.12),transparent 60%),
 radial-gradient(1500px 900px at 2700px 400px,rgba(90,120,200,.10),transparent 66%),
 linear-gradient(180deg,#0A0E16,#0B0F14 55%,#05070B)}}
.esq{{position:absolute;left:0;top:0;width:1560px;height:1350px;-webkit-mask-image:linear-gradient(90deg,black 44%,transparent 80%)}}
.dir{{position:absolute;right:0;top:0;width:1660px;height:1350px;-webkit-mask-image:linear-gradient(270deg,black 42%,transparent 80%)}}
.scrim{{position:absolute;left:0;top:430px;width:{PW}px;height:470px;
 background:linear-gradient(rgba(5,7,11,0),rgba(5,7,11,.6) 42%,rgba(5,7,11,.6) 58%,rgba(5,7,11,0))}}
.row{{position:absolute;display:flex;width:{PW}px}}
.c{{width:{W}px;padding:0 {PAD}px;font-weight:700;letter-spacing:-1px;line-height:1;
 white-space:nowrap;text-shadow:0 4px 34px rgba(0,0,0,.95),0 2px 10px rgba(0,0,0,.92)}}
.cA{{text-align:right}} .cB{{text-align:center}} .cC{{text-align:left}}
.ouro{{background:linear-gradient(100deg,#F0C97E,#D9A64B);-webkit-background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 4px 30px rgba(0,0,0,.95))}}
.sub{{position:absolute;width:{PW}px;text-align:center;top:905px;font-size:34px;font-weight:600;letter-spacing:2px;color:#E2B15A;text-shadow:0 3px 20px rgba(0,0,0,.95)}}
.selo{{position:absolute;transform:translateX(-50%);text-align:center;bottom:70px;font-size:30px;letter-spacing:3px;color:rgba(244,240,232,.6)}}
</style></head><body>
<div class="ceu"></div><img class="esq" src="df-esq.png"><img class="dir" src="df-dir.png">
<div class="scrim"></div>
<div class="row" style="top:512px">
 <div class="c cA" style="font-size:96px">NÓS NÃO</div>
 <div class="c cB" style="font-size:96px">USAMOS</div>
 <div class="c cC" style="font-size:96px">IA.</div></div>
<div class="row" style="top:672px">
 <div class="c cA ouro" style="font-size:82px">NÓS</div>
 <div class="c cB ouro" style="font-size:82px">ORQUESTRAMOS</div>
 <div class="c cC ouro" style="font-size:82px">INTELIGÊNCIAS.</div></div>
<div class="sub">sem hype · com senso</div>
<div class="selo" style="left:540px">@iacomsenso</div>
<div class="selo" style="left:1620px">IA com Senso</div>
<div class="selo" style="left:2700px">iacomsenso.com.br</div>
</body></html>'''
(P/"def.html").write_text(HTML)
subprocess.run([CHROME,"--headless","--disable-gpu",f"--screenshot={P}/def.png",
 f"--window-size={PW},{H}","--hide-scrollbars","--force-device-scale-factor=1",f"file://{P}/def.html"],capture_output=True)
pan=Image.open(P/"def.png"); arr=np.array(pan.convert("L"))
def claro(xc,b=70,thr=150): return float((arr[300:1000,xc-b:xc+b]>thr).mean())
s1,s2=claro(1080),claro(2160)
print(f"emenda 1080={s1:.3f} 2160={s2:.3f} -> {'SEGURO' if s1<0.008 and s2<0.008 else 'REVISAR'}")
nomes=["A-esq","B-centro","C-dir"]
for i in range(N): pan.crop((i*W,0,(i+1)*W,H)).convert("RGB").save(P/f"df-{nomes[i]}.jpg",quality=92)
gap=8; g=Image.new("RGB",(3*430+2*gap+40,538+40),(0,0,0))
for i in range(N): g.paste(Image.open(P/f"df-{nomes[i]}.jpg").resize((430,538),Image.LANCZOS),(20+i*(430+gap),20))
g.save(P/"df-GRADE.png"); print("def gerado")
