{# ───────────────────────────────────────────────────────────────────────────── Visual Provenance — figma_to_html_agent/blocks/1171281191/ (frame 14) ───────────────────────────────────────────────────────────────────────────── Frame 14 = "주체별 기대효과" (cards-3col-persona, 2601×1927 px, scale 0.49213). 3 컬럼 카드 : 발주자 / 시공자 / 설계자 각 persona 별 *목표* + bullet 7 개 안팎. 본 partial 은 `figma_to_html_agent/blocks/1171281191/index.html` (184 lines) 을 base 로 Phase Z 규약 (Jinja slot + token CSS + slide-base wrap) adapt. 본 commit (Track A 1/16 second refinement, F2 re-do post-Codex round 22 catch) : asset-promotion policy = per-asset case-by-case (round 13 §2.3 + round 24 합의). strict CSS-only over-generalization (first refinement `2fcd8bb`) 정정. PROMOTED — RASTER (Phase Z `copy_assets()` 가 figma_to_html_agent/blocks/1171281191/ assets/ → {run_dir}/assets/three_persona_benefits/ 복사) : - col_bg_texture (4a17cd1d...png) — 3 컬럼 BG 텍스처. CSS noise/gradient 근사 보다 fidelity 보존. - bottom photo client (d2c070f2...png) — 발주자 카드 하단 사진 - bottom photo constructor (2a6a58e7...png) — 시공자 카드 하단 사진 - bottom photo designer (39113493...png) — 설계자 카드 하단 사진 - badge outer client (77f31997...png) — 발주자 round badge outer ring - badge inner client (e64c967d...png) — 발주자 round badge inner disk - badge outer constructor (1550ec75...png) - badge inner constructor (85beaf9d...png) - badge outer designer (9ac089fa...png) - badge inner designer (4b534ccf...png) → 10 raster (1 BG + 3 photos + 6 badge). Codex round 24 tightening : badge = default promote (asset-capable path 검증). PROMOTED — CSS (Figma 색/디자인 의도 → CSS 으로 충분) : - 발주자 accent color : Figma TEXT #285b4a (dark green) — index.html L80 - 시공자 accent color : Figma TEXT #445a2f (olive) — index.html L81 - 설계자 accent color : Figma TEXT #743002 (red-brown) — index.html L82 - col-overlay tint : #d6e7c4 / #e1efe1 / #d0c0ad (opacity-80 — solid 색, CSS equivalent) - title gradient : #000 → #883700 (F13 zone-title 와 동일 family) - bullet check marker : ✓ unicode (실제 png 6896d5c2 와 동등) NOT PROMOTED (MDX 무관 + Figma 데코) : - 한자/장식 텍스트 (Figma 안 deco) — index.html 에도 없음. N/A. ADAPTED : - Figma 65/50/40px → token-fixed (zone-title 13 / sub-title 12 / caption / body 11) - Figma 396×397 absolute round badge → flex card-header 안 round image - Figma `zoom: 0.49213` absolute positioning → Phase Z flex column (zone fit) - Figma 7 bullets absolute layout → flex column gap auto spacing ───────────────────────────────────────────────────────────────────────────── min_height_px derivation (round 13 §2.2 — derive + confirm) : Figma frame 1927 px @ scale 0.49213 → 948 px adapted (full Figma fit). Phase Z slide-body ≤ 585 px → adaptive content fit. Content density (3 col × 7 bullets + badge + photo) → F29 (345) 보다 약간 ↑. Derived = 320 (badge 30 + bullet body ~210 + photo strip ~50 + padding 30). Confirm via smoke + V2 validation (MDX 02 sample run). ───────────────────────────────────────────────────────────────────────────── slots : title, personas[].{label, body, color_class} - color_class ∈ {client, constructor, designer} (role_order 따라) - body = list[{text:str, indent:int}] (parse_quadrant_item 출력) - persona suffix "목표" = frame 의 visual 언어 (slot 미사용, partial 노출) ───────────────────────────────────────────────────────────────────────────── Asset path runtime resolution : Phase Z `copy_assets(template_id, run_dir)` (phase_z2_pipeline.py:746) copies figma_to_html_agent/blocks/1171281191/assets/ → {run_dir}/assets/three_persona_benefits/ → partial 의 src="assets/three_persona_benefits/.png" 가 runtime 에서 resolve. #}
{{ slot_payload.title }}
{% for persona in slot_payload.personas %}
{# badge — raster outer/inner + CSS text overlay #}
{% if persona.color_class == "client" %} {% elif persona.color_class == "constructor" %} {% elif persona.color_class == "designer" %} {% endif %}
{{ persona.label | safe }} 목표
{# body — bullets with CSS check marker #}
{% if persona.body %} {% for line in persona.body %}
{{ line.text | safe }}
{% endfor %} {% endif %}
{# bottom photo — per persona 실사 사진 #}
{% if persona.color_class == "client" %} {% elif persona.color_class == "constructor" %} {% elif persona.color_class == "designer" %} {% endif %}
{% endfor %}