#!/usr/bin/env python3
"""
Thumb YouTube v2_A — Borrello vídeo "Câncer, depressão e divórcio na mesma casa"
Ajuste pedido pelo Renato:
  - NÃO cortar a cabeça do Borrello (v1_A cortava topo do cabelo)
  - Foto menor, com respiro em volta
Mantém: fundo, textos, selo, gesto do dedo apontando.
"""
import base64, os, pathlib
from playwright.sync_api import sync_playwright

BASE = pathlib.Path("/opt/mia/workspace/clientes/francisco_borrello/youtube_video3")
FOTOS = pathlib.Path("/tmp/borrello_optimized")

def img_to_b64(path):
    with open(path, "rb") as f:
        return "data:image/png;base64," + base64.b64encode(f.read()).decode()

def html_para_png(html, destino, largura=1280, altura=720):
    with sync_playwright() as p:
        browser = p.chromium.launch()
        page = browser.new_page(viewport={"width": largura, "height": altura})
        page.set_content(html, wait_until="networkidle")
        page.screenshot(path=str(destino), clip={"x": 0, "y": 0, "width": largura, "height": altura})
        browser.close()
    return destino

BASE_CSS = """
@import url('https://fonts.googleapis.com/css2?family=Anton&family=Bebas+Neue&family=Montserrat:wght@800;900&display=swap');
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { width: 1280px; height: 720px; overflow: hidden; }
body {
  font-family: 'Anton', 'Bebas Neue', sans-serif;
  color: #fff;
  position: relative;
  background: #0a0a0a;
}
.wrap {
  position: relative;
  width: 1280px;
  height: 720px;
  overflow: hidden;
}
.bg {
  position: absolute; inset: 0;
  background:
    radial-gradient(ellipse at 20% 40%, rgba(180,20,20,0.55) 0%, transparent 55%),
    radial-gradient(ellipse at 90% 90%, rgba(90,10,10,0.75) 0%, transparent 60%),
    linear-gradient(135deg, #1a0505 0%, #050505 55%, #1a0505 100%);
}
.bg::after {
  content:'';
  position: absolute; inset: 0;
  background-image:
    repeating-linear-gradient(45deg, rgba(255,255,255,0.015) 0 2px, transparent 2px 6px);
  mix-blend-mode: overlay;
}
.vignette {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at center, transparent 45%, rgba(0,0,0,0.75) 100%);
  pointer-events: none;
}
.foto {
  position: absolute;
  filter: drop-shadow(0 0 40px rgba(0,0,0,0.85)) contrast(1.08) saturate(0.9);
  z-index: 3;
}
.txt {
  position: absolute;
  z-index: 4;
  font-family: 'Anton', sans-serif;
  line-height: 0.92;
  text-transform: uppercase;
  letter-spacing: -1px;
  text-shadow:
    0 4px 0 #000,
    0 6px 20px rgba(0,0,0,0.9),
    0 0 40px rgba(0,0,0,0.9);
}
.selo {
  position: absolute;
  top: 32px;
  right: 32px;
  z-index: 5;
  background: #ffcc00;
  color: #111;
  font-family: 'Montserrat', sans-serif;
  font-weight: 900;
  font-size: 22px;
  letter-spacing: 4px;
  padding: 10px 18px;
  border-radius: 4px;
  box-shadow: 0 6px 0 rgba(0,0,0,0.5);
  transform: rotate(-3deg);
}
"""

def render_A_v2():
    foto = img_to_b64(FOTOS / "_MG_9299.png")
    # Foto v1: height 820, bottom -50, right -100 (cortava cabeça)
    # Foto v2: menor (~650px), ancorada com respiro em cima E embaixo,
    # deslocada pra direita mas sem sair muito do frame.
    html = f"""<!doctype html><html><head><meta charset='utf-8'>
    <style>{BASE_CSS}
    .foto-A {{
      right: -40px;
      bottom: 20px;
      height: 650px;
      width: auto;
    }}
    .overlay-dark-A {{
      position: absolute; inset: 0;
      background: linear-gradient(90deg, rgba(0,0,0,0.55) 0%, rgba(0,0,0,0.3) 45%, transparent 65%);
      z-index: 2;
    }}
    .txt-A {{
      left: 44px; top: 60px;
      max-width: 720px;
      font-size: 108px;
      color: #fff;
    }}
    .word1-A {{ color: #ff2a2a; display:block; }}
    .word2-A {{ color: #ffcc00; display:block; }}
    .word3-A {{ color: #ff2a2a; display:block; }}
    .sub-A {{
      position: absolute; left: 44px; top: 480px;
      font-family: 'Montserrat', sans-serif;
      font-weight: 900;
      font-size: 38px;
      color: #fff;
      background: #d40000;
      padding: 12px 26px;
      letter-spacing: 3px;
      z-index: 4;
      box-shadow: 0 8px 0 rgba(0,0,0,0.7);
      transform: rotate(-1.5deg);
    }}
    .sub2-A {{
      position: absolute; left: 46px; top: 590px;
      font-family: 'Montserrat', sans-serif;
      font-weight: 900;
      font-size: 30px;
      color: #ffcc00;
      letter-spacing: 4px;
      z-index: 4;
      text-shadow: 0 3px 0 #000, 0 0 20px rgba(0,0,0,0.9);
      max-width: 640px;
    }}
    .sub2-A .alert {{
      display: inline-block;
      margin-right: 8px;
      color: #ffcc00;
    }}
    </style></head><body>
    <div class='wrap'>
      <div class='bg'></div>
      <img class='foto foto-A' src='{foto}'/>
      <div class='overlay-dark-A'></div>
      <div class='vignette'></div>
      <div class='txt txt-A'>
        <span class='word1-A'>CÂNCER,</span>
        <span class='word2-A'>DEPRESSÃO,</span>
        <span class='word3-A'>DIVÓRCIO</span>
      </div>
      <div class='sub-A'>NA MESMA CASA</div>
      <div class='sub2-A'><span class='alert'>&#9888;</span>NÃO É COINCIDÊNCIA</div>
      <div class='selo'>ALERTA</div>
    </div>
    </body></html>"""
    return html_para_png(html, BASE / "thumb_v2_A.png")

if __name__ == "__main__":
    os.makedirs(BASE, exist_ok=True)
    a = render_A_v2(); print("v2_A ok:", a)
