#!/usr/bin/env python3
"""#40 감정 증폭 자막 (Selective Amplification Typography) — Cannes Lions 2025 스타일 리쿠르팅 배너"""

import shutil
from pathlib import Path

from playwright.sync_api import sync_playwright
from gen_config import WORKSPACE_ROOT, CORE_METRIC_MIN_PX, CTA_MIN_PX, SUBHEAD_MIN_PX
_CTA_PX = CTA_MIN_PX
_SIZE_44PX = 44
_SIZE_52PX = 52
_SUBHEAD_PX = SUBHEAD_MIN_PX
_METRIC_PX = CORE_METRIC_MIN_PX
_SIZE_112PX = 112

OUTPUT_PATH = WORKSPACE_ROOT / "output/meta-ads/concept-catalog/40-cannes-selective-amplification/sample.png"
COPY_PATH = WORKSPACE_ROOT / "output/meta-ads/concept-catalog/40-cannes-selective-amplification.png"

HTML_CONTENT = """<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
  @font-face {
    font-family: 'Pretendard';
    src: url('/home/jay/.local/share/fonts/Pretendard/Pretendard-Thin.woff2') format('woff2');
    font-weight: 100;
  }
  @font-face {
    font-family: 'Pretendard';
    src: url('/home/jay/.local/share/fonts/Pretendard/Pretendard-Light.woff2') format('woff2');
    font-weight: 300;
  }
  @font-face {
    font-family: 'Pretendard';
    src: url('/home/jay/.local/share/fonts/Pretendard/Pretendard-Regular.woff2') format('woff2');
    font-weight: 400;
  }
  @font-face {
    font-family: 'Pretendard';
    src: url('/home/jay/.local/share/fonts/Pretendard/Pretendard-Medium.woff2') format('woff2');
    font-weight: 500;
  }
  @font-face {
    font-family: 'Pretendard';
    src: url('/home/jay/.local/share/fonts/Pretendard/Pretendard-SemiBold.woff2') format('woff2');
    font-weight: 600;
  }
  @font-face {
    font-family: 'Pretendard';
    src: url('/home/jay/.local/share/fonts/Pretendard/Pretendard-Bold.woff2') format('woff2');
    font-weight: 700;
  }
  @font-face {
    font-family: 'Pretendard';
    src: url('/home/jay/.local/share/fonts/Pretendard/Pretendard-ExtraBold.woff2') format('woff2');
    font-weight: 800;
  }
  @font-face {
    font-family: 'Pretendard';
    src: url('/home/jay/.local/share/fonts/Pretendard/Pretendard-Black.woff2') format('woff2');
    font-weight: 900;
  }
  * { margin: 0; padding: 0; box-sizing: border-box; }
  body { width: 1080px; height: 1080px; overflow: hidden; }
</style>
</head>
<body>
<div style="width:1080px;height:1080px;position:relative;font-family:'Pretendard',sans-serif;background:radial-gradient(ellipse at center,#0F1A2E 0%,#050A12 100%);">

  <!-- T.O.P 사업단 -->
  <div style="position:absolute;top:86px;left:0;right:0;text-align:center;font-size:40px;font-weight:500;color:#8A94A8;letter-spacing:0.12em;">T.O.P 사업단</div>

  <!-- 상단 일반 텍스트 -->
  <div style="position:absolute;top:340px;left:0;right:0;text-align:center;font-size:52px;font-weight:300;color:#5A6070;">지금 당신에게 필요한 건</div>

  <!-- 강조 단어 3개 — 핵심 행 -->
  <div style="position:absolute;top:430px;left:0;right:0;display:flex;align-items:baseline;justify-content:center;gap:24px;">
    <span style="font-size:112px;font-weight:900;color:#FFFFFF;">자유</span>
    <span style="font-size:64px;font-weight:300;color:#5A6070;">·</span>
    <span style="font-size:96px;font-weight:900;color:#00C8FF;">수입</span>
    <span style="font-size:64px;font-weight:300;color:#5A6070;">·</span>
    <span style="font-size:96px;font-weight:900;color:#F4A01C;">성장</span>
  </div>

  <!-- 하단 일반 텍스트 -->
  <div style="position:absolute;top:600px;left:0;right:0;text-align:center;font-size:52px;font-weight:300;color:#5A6070;">입니다.</div>

  <!-- 보조 메시지 -->
  <div style="position:absolute;top:740px;left:0;right:0;text-align:center;font-size:64px;font-weight:700;color:#FFFFFF;">2026년 7월, 게임이 바뀝니다</div>

  <!-- 부가 정보 -->
  <div style="position:absolute;top:840px;left:0;right:0;text-align:center;font-size:44px;font-weight:500;color:#8A94A8;">신입 최대 1,000만원 · 경력직 50%</div>

  <!-- CTA -->
  <div style="position:absolute;top:940px;left:0;right:0;text-align:center;">
    <span style="display:inline-block;font-size:44px;font-weight:700;color:#050A12;background:#00C8FF;padding:14px 44px;border-radius:6px;">지금 상담 신청하기 →</span>
  </div>

</div>
</body>
</html>"""


def main():
    OUTPUT_PATH.parent.mkdir(parents=True, exist_ok=True)

    # HTML 임시 파일 생성
    html_tmp = OUTPUT_PATH.parent / "_tmp_concept40.html"
    html_tmp.write_text(HTML_CONTENT, encoding="utf-8")

    print("[1/3] Playwright로 HTML 렌더링 시작...")
    with sync_playwright() as p:
        browser = p.chromium.launch()
        try:
            page = browser.new_page(viewport={"width": 1080, "height": 1080})
            page.goto(f"file://{html_tmp.resolve()}", wait_until="networkidle")
            # 폰트 로딩 대기
            page.wait_for_timeout(2000)
            page.screenshot(path=str(OUTPUT_PATH), type="png", clip={"x": 0, "y": 0, "width": 1080, "height": 1080})
            print(f"  [캡처 완료] {OUTPUT_PATH}")
        finally:
            browser.close()

    # 임시 HTML 제거
    html_tmp.unlink(missing_ok=True)

    print("[2/3] 복사본 생성...")
    shutil.copy2(OUTPUT_PATH, COPY_PATH)
    print(f"  [복사 완료] {COPY_PATH}")

    size_kb = OUTPUT_PATH.stat().st_size / 1024
    print(f"[3/3] 완료! 파일 크기: {size_kb:.0f} KB")
    print(f"  sample.png : {OUTPUT_PATH}")
    print(f"  copy.png   : {COPY_PATH}")


if __name__ == "__main__":
    main()
