{# ───────────────────────────────────────────────────────────────────────────── Visual Provenance — figma_to_html_agent/blocks/1171281198/ (frame 20) ───────────────────────────────────────────────────────────────────────────── Frame 20 = "디지털 전환(DX)은 S/W가 필수다" (cards-3-header). Figma 원본 = 상단 dark green banner ("디지털 전환(DX)은 S/W가 필수다" green/white mix) + 좌측 DX circular area + 우측 3 perspective cards (BIM 전면설계 / 디지털 전환 S/W / 고부가가치 산업전환). 본 partial = Track A frame 5 (Codex round 45 accepted, V4 LE tier strongest). builder 재사용 = `quadrant_flat_slots` (F11 cards-3-category pattern). 새 builder/parser 0. 3-layer architecture (matrix §0) : - V4 = matching authority — V4 ranked this frame light_edit for 03-1 + 01-1. - figma_to_html (1171281198) = source/evidence — 386-line index.html + assets/. - Phase Z = runtime — 본 commit adds catalog + partial + smoke fixture. PROMOTED — CSS (verbatim from figma_to_html_agent/blocks/1171281198/index.html) : - 3 column header bg : two-stop vertical adaptation of upstream horizontal banner gradient end-stops — start `rgb(15, 50, 30)` (upstream :54, stop 0%), end `rgb(60, 52, 34)` (upstream :64, stop 100%). Adaptation surface = direction (90deg → 180deg) + stop count (11 → 2); colors verbatim. - header text white bold + green accent (white #fff verbatim, see upstream :202 `color: #ffffff`) - title gradient (#000 → #883700, F13/F14/F12/F11/F18 zone-title family; shared zone-title token, not from this frame) - card border + bullet markers : `#1d4d3e` (upstream :208 `.card-title-1` `-webkit-text-stroke: 1.5px #1d4d3e`). Replaces earlier eyeballed `#296B55` approximation (IMP-49 #78 u1). NOT PROMOTED (P1 case-by-case, compact zone fit) : - 상단 dark green banner (Figma 의 큰 visual 영역, MDX 의 *title 만* 핵심) - 좌측 DX circular area (multi-image + center text + decor — Figma 의 main rhetorical anchor 단 compact zone 에서 표현 불가). title 의 gradient 로 의도 보존 - 한자/장식/배경 텍스처 — Figma source evidence 보존, 미 promote ADAPTED : - Figma 90/65/40px → token-fixed (zone-title 13 / sub-title 12 / caption / body 11) - 1280×426 absolute positioning + zoom → Phase Z 3-column grid - 3 perspective cards (header + body) → flex column ───────────────────────────────────────────────────────────────────────────── min_height_px derivation : 3 col × (header 30 + body 3-bullets × 25) + title 30 + padding 30 = ~195 + safety buffer (longer label / 5+ bullets) 125 = **320**. F12/F11/F18 class. ───────────────────────────────────────────────────────────────────────────── slots : - title : section.title - perspective_1/2/3_label : 3 column headers - perspective_1/2/3_body : list[{text, indent}] : 3 column bullets ───────────────────────────────────────────────────────────────────────────── 4-class failure taxonomy : - class 1 readiness : builder reuse `quadrant_flat_slots` + `quadrant_item`. contract + partial + smoke fixture. - class 2 content-fit : header label 짧게 (single line). body 3-5 bullets per column (zone fit). 6+ bullets 시 watch. #}
{{ slot_payload.title }}
{# 3 columns — quadrant_flat_slots produces perspective_N_label / perspective_N_body for N=1..3 #}
{{ slot_payload.perspective_1_label | safe }}
{# IMP-36 (Gitea #65 u6) P2 — inline `--max-body-lines` per column; code composes (Phase Z guardrail #7), defensive fallback to 3 matches the CSS default. #}
{% if slot_payload.perspective_1_body %} {% for line in slot_payload.perspective_1_body %}
{{ line.text | safe }}
{% endfor %} {% endif %}
{{ slot_payload.perspective_2_label | safe }}
{% if slot_payload.perspective_2_body %} {% for line in slot_payload.perspective_2_body %}
{{ line.text | safe }}
{% endfor %} {% endif %}
{{ slot_payload.perspective_3_label | safe }}
{% if slot_payload.perspective_3_body %} {% for line in slot_payload.perspective_3_body %}
{{ line.text | safe }}
{% endfor %} {% endif %}