Evolution Flow Slide (HyperFrames)
언제 쓰나
- 기존 상태와 개선 상태를 한 화면에서 대비할 때
- 입력 → 결과처럼 가운데 변화 축이 핵심일 때
- before/after 비교를 단순 나열이 아니라 인과 흐름으로 보여주고 싶을 때
HTML 구조
<div id="s-N" class="scene clip"
data-start="..." data-duration="6" data-track-index="0">
<div class="eyebrow">개선</div>
<div class="scene-title">검색 경험이 어떻게 바뀌었나</div>
<div class="flow">
<div class="flow-col" id="s-N-before">
<div class="flow-label">기존</div>
<div class="flow-heading">리스트 중심</div>
<ul class="flow-list">
<li>결과 목록이 길게 이어진다</li>
<li>먼저 읽어야 할 답이 눈에 띄지 않는다</li>
</ul>
</div>
<div class="flow-arrow" id="s-N-arrow">→</div>
<div class="flow-col after" id="s-N-after">
<div class="flow-label">개선</div>
<div class="flow-heading">답 중심</div>
<ul class="flow-list">
<li>핵심 답이 먼저 보인다</li>
<li>다음 클릭이 자연스럽게 이어진다</li>
</ul>
</div>
</div>
</div>
CSS 핵심
.flow — display: grid; grid-template-columns: 1fr 120px 1fr; gap: 40px; margin-top: 48–56px; flex: 1; max-height: 620px
.flow-col — 카드, background: rgba(255,255,255,0.05); border: 1px solid rgba(...); border-radius: 24px; padding: 44px 40px; display: flex; flex-direction: column
.flow-col.after — 악센트 색 테두리/배경 그라디언트로 "도착 상태" 강조
.flow-label — 배지 스타일 (24–28px, letter-spacing 3px, padding 8px 20px, border-radius 999px), .flow-col.after .flow-label은 accent 배경 + 대비 글자색
.flow-heading — 44–56px, weight 700, line-height 1.2
.flow-list li — 26–32px, weight 400, line-height 1.4, padding-left: 28px, ::before { content: "—" }
.flow-arrow — display: flex; align-items: center; justify-content: center; font-size: 80px; font-weight: 200; color: accent
- 이미지가 필요하면
.flow-col 안에 .flow-image { aspect-ratio: 16/9 } 추가
GSAP 엔트런스
const start = 39.2;
tl.from("#s-N .eyebrow", { y: -15, opacity: 0, duration: 0.5, ease: "power3.out" }, start + 0.2);
tl.from("#s-N .scene-title", { y: 40, opacity: 0, duration: 0.7, ease: "expo.out" }, start + 0.4);
tl.from("#s-N-before", { x: -40, opacity: 0, duration: 0.7, ease: "power3.out" }, start + 0.9);
tl.from("#s-N-arrow", { scale: 0.5, opacity: 0, duration: 0.5, ease: "back.out(1.7)" }, start + 1.3);
tl.from("#s-N-after", { x: 40, opacity: 0, duration: 0.7, ease: "power3.out" }, start + 1.4);
- 왼쪽 패널이 먼저, 화살표, 오른쪽 패널 순으로 흐름이 읽히게
- 화살표는
back.out으로 튕기듯 등장해 리듬 차별화
- 요소 전체를 크게 흔들지 않고, 흐름의 방향이 읽히는 이동 + 순차 등장에 집중
마크다운 감지 규칙 (생성기 구축 시)
# [개선] 검색 경험이 어떻게 바뀌었나
<< 기존 검색
- 결과 목록이 길게 이어진다
- 먼저 읽어야 할 답이 눈에 띄지 않는다
==
>> 개선된 검색
- 핵심 답이 먼저 보인다
- 다음 클릭이 자연스럽게 이어진다
<< 로 시작하는 블록이 왼쪽 패널, >> 가 오른쪽 패널
== 는 레이아웃 전환 신호일 뿐, 그 아래에는 내용을 쓰지 않는다
- 배지:
<< [기존] 타이틀 형식으로 대괄호 안이 flow-label, 나머지가 flow-heading
이미지를 섞으려면 각 블록 안에 를 넣는다:
<< 기존 가입

- 입력 단계가 길다
>> 개선된 가입

- 핵심 입력만 남았다
작성 원칙
- 왼쪽은 출발 상태, 오른쪽은 도착 상태만 적는다
- 좌우 불릿은 같은 개수로 맞출 필요는 없지만, 대응 관계가 느껴지게 쓴다
- 좌우 타이틀은 명사형보다 상태형이 더 읽기 좋다 ("리스트 중심" / "답 중심")
- 이미지가 있더라도 핵심 메시지는 불릿으로 다시 명시한다
- 변화 이유나 과정 설명이 필요하면 이 타입 안에 우겨 넣지 말고 다음 슬라이드로 분리
이미지가 없을 때
.flow-col 안에 이미지 슬롯 생략 — 카드 자체가 충분한 시각 단위 역할
- 별도의 placeholder 컴포넌트는 필요 없음
비권장 상황
- 그냥 이미지 한 장과 설명 몇 줄이면 충분할 때 →
split 또는 title-image
- 시간 순서가 4단계 이상으로 길게 이어질 때 →
steps
- 3개 이상을 동시 비교할 때 →
compare
1---2name: hyperframes-slide-work-evolution-flow3description: HyperFrames 컴포지션의 evolution-flow 슬라이드 전용 스킬. 왼쪽 상태에서 오른쪽 상태로 무엇이 어떻게 바뀌었는지를 2열 + 화살표 흐름으로 설명하는 슬라이드를 HTML + GSAP으로 설계하거나 수정할 때 사용.4---56# Evolution Flow Slide (HyperFrames)78## 언제 쓰나910- 기존 상태와 개선 상태를 한 화면에서 대비할 때11- 입력 → 결과처럼 가운데 변화 축이 핵심일 때12- before/after 비교를 단순 나열이 아니라 인과 흐름으로 보여주고 싶을 때1314## HTML 구조1516```html17<div id="s-N" class="scene clip"18 data-start="..." data-duration="6" data-track-index="0">19 <div class="eyebrow">개선</div>20 <div class="scene-title">검색 경험이 어떻게 바뀌었나</div>21 <div class="flow">22 <div class="flow-col" id="s-N-before">23 <div class="flow-label">기존</div>24 <div class="flow-heading">리스트 중심</div>25 <ul class="flow-list">26 <li>결과 목록이 길게 이어진다</li>27 <li>먼저 읽어야 할 답이 눈에 띄지 않는다</li>28 </ul>29 </div>30 <div class="flow-arrow" id="s-N-arrow">→</div>31 <div class="flow-col after" id="s-N-after">32 <div class="flow-label">개선</div>33 <div class="flow-heading">답 중심</div>34 <ul class="flow-list">35 <li>핵심 답이 먼저 보인다</li>36 <li>다음 클릭이 자연스럽게 이어진다</li>37 </ul>38 </div>39 </div>40</div>41```4243## CSS 핵심4445- `.flow` — `display: grid; grid-template-columns: 1fr 120px 1fr; gap: 40px; margin-top: 48–56px; flex: 1; max-height: 620px`46- `.flow-col` — 카드, `background: rgba(255,255,255,0.05); border: 1px solid rgba(...); border-radius: 24px; padding: 44px 40px; display: flex; flex-direction: column`47- `.flow-col.after` — 악센트 색 테두리/배경 그라디언트로 "도착 상태" 강조48- `.flow-label` — 배지 스타일 (24–28px, letter-spacing 3px, padding 8px 20px, border-radius 999px), `.flow-col.after .flow-label`은 accent 배경 + 대비 글자색49- `.flow-heading` — 44–56px, weight 700, line-height 1.250- `.flow-list li` — 26–32px, weight 400, line-height 1.4, `padding-left: 28px`, `::before { content: "—" }`51- `.flow-arrow` — `display: flex; align-items: center; justify-content: center; font-size: 80px; font-weight: 200; color: accent`52- 이미지가 필요하면 `.flow-col` 안에 `.flow-image { aspect-ratio: 16/9 }` 추가5354## GSAP 엔트런스5556```js57const start = 39.2;58tl.from("#s-N .eyebrow", { y: -15, opacity: 0, duration: 0.5, ease: "power3.out" }, start + 0.2);59tl.from("#s-N .scene-title", { y: 40, opacity: 0, duration: 0.7, ease: "expo.out" }, start + 0.4);60tl.from("#s-N-before", { x: -40, opacity: 0, duration: 0.7, ease: "power3.out" }, start + 0.9);61tl.from("#s-N-arrow", { scale: 0.5, opacity: 0, duration: 0.5, ease: "back.out(1.7)" }, start + 1.3);62tl.from("#s-N-after", { x: 40, opacity: 0, duration: 0.7, ease: "power3.out" }, start + 1.4);63```6465- 왼쪽 패널이 먼저, 화살표, 오른쪽 패널 순으로 흐름이 읽히게66- 화살표는 `back.out`으로 튕기듯 등장해 리듬 차별화67- 요소 전체를 크게 흔들지 않고, 흐름의 방향이 읽히는 이동 + 순차 등장에 집중6869## 마크다운 감지 규칙 (생성기 구축 시)7071```markdown72# [개선] 검색 경험이 어떻게 바뀌었나7374<< 기존 검색75- 결과 목록이 길게 이어진다76- 먼저 읽어야 할 답이 눈에 띄지 않는다7778==7980>> 개선된 검색81- 핵심 답이 먼저 보인다82- 다음 클릭이 자연스럽게 이어진다83```8485- `<<` 로 시작하는 블록이 왼쪽 패널, `>>` 가 오른쪽 패널86- `==` 는 레이아웃 전환 신호일 뿐, 그 아래에는 내용을 쓰지 않는다87- 배지: `<< [기존] 타이틀` 형식으로 대괄호 안이 flow-label, 나머지가 flow-heading8889이미지를 섞으려면 각 블록 안에 ``를 넣는다:9091```markdown92<< 기존 가입9394- 입력 단계가 길다9596>> 개선된 가입9798- 핵심 입력만 남았다99```100101## 작성 원칙102103- 왼쪽은 출발 상태, 오른쪽은 도착 상태만 적는다104- 좌우 불릿은 같은 개수로 맞출 필요는 없지만, 대응 관계가 느껴지게 쓴다105- 좌우 타이틀은 명사형보다 **상태형**이 더 읽기 좋다 ("리스트 중심" / "답 중심")106- 이미지가 있더라도 핵심 메시지는 불릿으로 다시 명시한다107- 변화 이유나 과정 설명이 필요하면 이 타입 안에 우겨 넣지 말고 다음 슬라이드로 분리108109## 이미지가 없을 때110111- `.flow-col` 안에 이미지 슬롯 생략 — 카드 자체가 충분한 시각 단위 역할112- 별도의 placeholder 컴포넌트는 필요 없음113114## 비권장 상황115116- 그냥 이미지 한 장과 설명 몇 줄이면 충분할 때 → `split` 또는 `title-image`117- 시간 순서가 4단계 이상으로 길게 이어질 때 → `steps`118- 3개 이상을 동시 비교할 때 → `compare`