
    5)i>                        d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
mZmZ dd	d	d	d
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 ddZddZy	)uG  H4. 그래디언트 카드 — Satori CSS gradient 배경 + Satori 한글.

용도: 미니멀, 매거진 스타일.
배경: Satori CSS gradient (외부 API 호출 0건).
텍스트: Satori 한글 (100% 정확).

외부 호출 0 — 가장 빠르고 가벼운 패턴.

IDS Phase 1 §3.2.1 / §0.2 Hybrid Pattern Standard 준수.
    )annotations)Path   )default_gradient)render_h4_procedural)KOREAN_FONT_STACKas_intrender_html_to_png)i8  iF  N)sizedesign_tokensbackground_pathprompt_hintc          
         ~~|\  }}t        |      }|j                  j                  dd       |xs i }	t        | ||||t	        |	            S )u3  H4 그래디언트 카드를 렌더링한다.

    Args:
        title: 한글 헤드라인.
        body: 한글 본문.
        output_path: 출력 PNG 경로.
        size: (width, height) 픽셀.
        design_tokens: 디자인 토큰 dict (`gradient_theme`: navy/warm/mint/rose/mono,
            또는 `gradient`: 직접 CSS gradient 문자열).
        background_path: H4에서 사용하지 않음 (시그니처 일관성용).
        prompt_hint: H4에서 사용하지 않음 (시그니처 일관성용).

    Returns:
        저장된 PNG 경로.
    T)parentsexist_ok)widthheightr   )r   parentmkdirr   dict)
titlebodyoutput_pathr   r   r   r   r   r   tokenss
             D/home/jay/workspace/skills/hybrid-image/patterns/h4_gradient_card.pyrenderr      sb    2 	ME6{#KTD9 bF6l     c               b   |xs i }|j                  d      }t        |t              r|j                         r|}n&t        |j                  dd            }	t	        |	      }t        |j                  dd            }
t        |j                  dd            }t        |j                  dd	            }t        |j                  d
      d      }t        |j                  d      d      }d| d| d| dt         d| d| d|
 dt        |        d| d| dt        |       d}t        ||||      S )uI   Legacy Satori HTML render path (task-2421). 보존용 (호출처 없음).gradientgradient_themenavytitle_colorz#fafaf8
body_colorz#d4d8e0accent_colorz#d4a853
title_sizeP   	body_size&   z7<div style="display:flex; flex-direction:column; width:zpx; height:zpx; background:z; font-family:z; padding:96px; box-sizing:border-box; justify-content:center; word-break:keep-all;"><div style="display:flex; width:80px; height:6px; background:z3; margin-bottom:48px;"></div><div style="font-size:zpx; font-weight:700; color:z); line-height:1.25; margin-bottom:32px;">z</div><div style="font-size:z
px; color:z&; line-height:1.55; max-width:880px;">z</div></div>)r   r   )	get
isinstancestrstripr   r	   r   _escr
   )r   r   r   r   r   r   r   custom_gradientgradient_cssthemer"   r#   r$   r%   r'   htmls                   r   _legacy_html_renderr2   ?   sQ     bFjj,O/3'O,A,A,C&FJJ/89'.fjj	:;KVZZi89Jvzz.)<=L

<0"5Jvzz+.3I{6( +"^ $() * #^ $!!+ -F;- !!*:j\ B//3Dzl ;	 	  dKuVLLr   c                    | j                  dd      j                  dd      j                  dd      j                  dd      S )	u%   HTML 이스케이프 (한글 보존).&z&amp;<z&lt;>z&gt;"z&quot;)replace)texts    r   r-   r-   d   s;     	S'"	f		f		h		r   )r   r+   r   r+   r   z
Path | strr   ztuple[int, int]r   zdict[str, object] | Noner   zPath | str | Noner   z
str | Nonereturnr   )r   r+   r   r+   r   r   r   intr   r;   r   r   r:   r   )r9   r+   r:   r+   )__doc__
__future__r   pathlibr   _backgroundsr   _pil_renderr   _satorir   r	   r
   r   r2   r-    r   r   <module>rC      s   	 #  * - B B ).2)-"''
' '
 ' ,' '' ' 
'T"M""M,/"M@D"MIM"MJr   