수정: - compare-2col-badge, compare-detail-gradient, hero-icon-cards 개선 신규 블록: - cards: category-strip-table, system-2col-center, hero-icon-cards_1 - emphasis: checklist-dark - visuals: cycle-orbit - new/: cards-3col-persona, compare-vs-rows, cycle-3way-intersect 등 8개 - redesign/: card_hero-icon-cards_1 - svg/: arc_left, arrow_conclusion, arrow_down, line_divider - BEPs: process-product-2col SVG + 테스트 catalog.yaml 전면 재정비 (슬롯 스키마, height_cost, 카테고리 정리) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
173 lines
6.1 KiB
HTML
173 lines
6.1 KiB
HTML
<!-- 분할 패널: 좌측 카테고리 + 우측 번호 설명 -->
|
||
<!--
|
||
📋 split-panel-numbered
|
||
─────────────────
|
||
용도: 좌측 카테고리별 항목 + 우측 번호 설명 2단 배치
|
||
슬롯:
|
||
title_icon — 아이콘 이미지
|
||
title (HTML — <span class="model">, <span class="sub">)
|
||
left_bg_color — 좌측 셰브론 배경 CSS gradient (기본값 제공)
|
||
categories[] (name, color, items[])
|
||
mid_arrow_img — 중간 화살표 이미지
|
||
right_items[] (number, text, badge_img)
|
||
arrow_img — 우측 화살표 이미지
|
||
Figma 원본: Frame 1171281202 (node 45:27, 1863×834)
|
||
수학적 계산:
|
||
scale = 1280 / 1863 = 0.68706
|
||
title: Model=70px gradient(#cc5200→#883700), sub=50px gradient(#296b55→#000) (MCP 확인)
|
||
cat bar: 단색 #417d38, #008e52, #008970 (픽셀 분석, MCP=이미지)
|
||
right bar: #e8ede3 단색 (픽셀 분석)
|
||
left-bg: 셰브론 형태 + alpha gradient (픽셀 분석)
|
||
CSS 요소: title gradient text, cat bars, right bars, left-bg, mid-deco
|
||
이미지 요소: title icon, 3D badge(일러스트), arrow(아이콘), mid arrow
|
||
-->
|
||
<div class="block-spn">
|
||
{% if title_icon or title %}
|
||
<div class="spn-header">
|
||
{% if title_icon %}<div class="spn-title-icon"><img src="{{ title_icon | default('svg/icon_title.png') }}" alt=""></div>{% endif %}
|
||
{% if title %}<div class="spn-title">{{ title|safe }}</div>{% endif %}
|
||
</div>
|
||
{% endif %}
|
||
|
||
<div class="spn-body">
|
||
<!-- 좌측 패널 -->
|
||
<div class="spn-left">
|
||
<div class="spn-left-bg"></div>
|
||
<div class="spn-categories">
|
||
{% for cat in categories %}
|
||
<div class="spn-cat">
|
||
<div class="spn-cat-bar" style="background: {{ cat.color|default('#417d38') }};"></div>
|
||
<div class="spn-cat-title">{{ cat.name }}</div>
|
||
<div class="spn-cat-items">
|
||
{% for item in cat.items %}
|
||
<div class="spn-cat-item">· {{ item }}</div>
|
||
{% endfor %}
|
||
</div>
|
||
</div>
|
||
{% endfor %}
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 중간 장식 -->
|
||
<div class="spn-mid">
|
||
<div class="spn-mid-deco"></div>
|
||
{% if mid_arrow_img %}<img src="{{ mid_arrow_img | default('svg/arrow_mid.png') }}" class="spn-mid-arrow" alt="">{% endif %}
|
||
</div>
|
||
|
||
<!-- 우측 패널 -->
|
||
<div class="spn-right">
|
||
{% for item in right_items %}
|
||
<div class="spn-row">
|
||
{% if item.badge_img %}<div class="spn-badge"><img src="{{ item.badge_img }}" alt=""></div>
|
||
{% elif loop.index <= 5 %}<div class="spn-badge"><img src="svg/badge_num_0{{ loop.index }}.png" alt=""></div>{% endif %}
|
||
<div class="spn-row-bar">
|
||
<div class="spn-row-text">{{ item.text }}</div>
|
||
{% if arrow_img %}<img src="{{ arrow_img | default('svg/arrow_right.png') }}" class="spn-row-arrow" alt="">{% endif %}
|
||
</div>
|
||
</div>
|
||
{% endfor %}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<style>
|
||
.block-spn {
|
||
display: flex; flex-direction: column;
|
||
width: 100%; height: 100%;
|
||
word-break: keep-all;
|
||
}
|
||
|
||
.spn-header { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
|
||
.spn-title-icon { flex: none; width: 26px; height: 27px; }
|
||
.spn-title-icon img { width: 100%; height: 100%; object-fit: contain; }
|
||
|
||
/* title: MCP 확인 gradient text */
|
||
.spn-title { font-weight: 900; line-height: 1.1; white-space: nowrap; }
|
||
.spn-title .model {
|
||
font-size: 34px;
|
||
background-image: linear-gradient(180deg, #cc5200 0%, #883700 100%);
|
||
-webkit-background-clip: text; background-clip: text; color: transparent;
|
||
}
|
||
.spn-title .sub {
|
||
font-size: 24px;
|
||
background-image: linear-gradient(180deg, #296b55 0%, #000 100%);
|
||
-webkit-background-clip: text; background-clip: text; color: transparent;
|
||
}
|
||
|
||
.spn-body { display: flex; flex: 1; }
|
||
|
||
/* 좌측: 셰브론 배경 (CSS clip-path + gradient) */
|
||
.spn-left { position: relative; flex: 52; overflow: hidden; }
|
||
.spn-left-bg {
|
||
position: absolute; inset: 0;
|
||
background: linear-gradient(90deg,
|
||
rgba(192,213,208,0.19) 0%, rgba(195,214,209,0.66) 50%, rgba(211,227,226,1) 95%);
|
||
clip-path: polygon(0 0, 82% 0, 100% 50%, 82% 100%, 0 100%);
|
||
border-radius: 20px 0 0 20px;
|
||
}
|
||
|
||
.spn-categories {
|
||
position: relative; z-index: 1;
|
||
display: flex; flex-direction: column;
|
||
justify-content: space-between; flex: 1;
|
||
padding: 8px 16px;
|
||
}
|
||
.spn-cat { display: flex; flex-direction: column; }
|
||
|
||
/* cat bar: CSS 단색 (픽셀 분석, Figma=이미지) */
|
||
.spn-cat-bar {
|
||
height: 34px; border-radius: 5px;
|
||
background: linear-gradient(90deg, currentColor 0%, currentColor 85%, transparent 100%);
|
||
margin-bottom: 4px;
|
||
}
|
||
.spn-cat-title {
|
||
position: relative; z-index: 1; margin-top: -30px;
|
||
font-size: 20px; font-weight: 700; color: #fff;
|
||
text-shadow: 0 0 4px rgba(0,0,0,0.5);
|
||
padding-left: 12px; line-height: 34px;
|
||
}
|
||
.spn-cat-items { padding: 4px 12px; }
|
||
.spn-cat-item {
|
||
font-size: 16px; font-weight: 500; color: #000;
|
||
line-height: 1.6; text-shadow: 0 0 4px rgba(0,0,0,0.5);
|
||
}
|
||
|
||
/* 중간 장식: CSS radial-gradient */
|
||
.spn-mid {
|
||
position: relative; flex: none; width: 8%;
|
||
display: flex; align-items: center; justify-content: center;
|
||
}
|
||
.spn-mid-deco {
|
||
position: absolute; inset: 10% 0;
|
||
background: radial-gradient(ellipse 60% 50% at 100% 50%,
|
||
rgba(217,217,217,0.8) 0%, rgba(217,217,217,0.13) 60%, transparent 100%);
|
||
}
|
||
.spn-mid-arrow { position: relative; z-index: 1; width: 50px; height: 108px; object-fit: contain; }
|
||
|
||
/* 우측: 번호 + 설명 */
|
||
.spn-right {
|
||
flex: 40; display: flex; flex-direction: column;
|
||
justify-content: space-between; padding: 4px 0;
|
||
}
|
||
.spn-row { display: flex; align-items: center; gap: 4px; }
|
||
|
||
/* badge: 3D 큐브 일러스트 → 이미지 유지 */
|
||
.spn-badge { flex: none; width: 42px; height: 44px; z-index: 2; }
|
||
.spn-badge img { width: 100%; height: 100%; object-fit: contain; }
|
||
|
||
/* right bar: CSS #e8ede3 (픽셀 분석) */
|
||
.spn-row-bar {
|
||
flex: 1; display: flex; align-items: center;
|
||
min-height: 48px; padding: 8px 16px;
|
||
background: #e8ede3; border-radius: 10px;
|
||
}
|
||
.spn-row-text {
|
||
flex: 1; font-size: 18px; font-weight: 500;
|
||
color: #11231d; line-height: 1.4;
|
||
}
|
||
.spn-row-arrow {
|
||
flex: none; width: 22px; height: 21px;
|
||
transform: rotate(180deg); object-fit: contain;
|
||
}
|
||
</style>
|