사이트 2차 수정, 신규 페이지 추가

This commit is contained in:
2026-06-03 13:29:01 +09:00
parent 7c7042f860
commit 111e0b05a4
22 changed files with 1493 additions and 60 deletions
+30
View File
@@ -2,11 +2,41 @@
// 커피챗 신청 — 클라이언트 검증 + 완료 화면 (원본 바닐라 JS → Vue 반응형 이식)
import { reactive, ref, nextTick } from 'vue'
const config = useRuntimeConfig()
const siteUrl = String(config.public.siteUrl || '').replace(/\/$/, '')
useSeo({
title: '커피챗 신청 | 이너탭(innertab)',
description:
'정식 지원 전에 이너탭 담당자와 가볍게 이야기 나눠보세요. 약 30분 내외, 온·오프라인으로 진행되는 커피챗을 신청할 수 있습니다.',
path: '/coffee-chat',
keywords:
'이너탭, innertab, 커피챗, 채용 상담, 커리어 상담, 채용, 면담 신청, 입사 지원, 스타트업 채용',
})
// 구조화 데이터(JSON-LD) — 연락/신청 페이지(ContactPage) + 빵부스러기
useHead({
script: [
{
type: 'application/ld+json',
innerHTML: JSON.stringify({
'@context': 'https://schema.org',
'@type': 'ContactPage',
name: '커피챗 신청 | 이너탭(innertab)',
description: '이너탭 담당자와의 비공식 커피챗(채용 전 면담) 신청 페이지',
url: `${siteUrl}/coffee-chat`,
isPartOf: { '@type': 'WebSite', name: '이너탭 innertab', url: siteUrl },
about: { '@type': 'Organization', name: '이너탭', alternateName: 'innertab', url: siteUrl },
breadcrumb: {
'@type': 'BreadcrumbList',
itemListElement: [
{ '@type': 'ListItem', position: 1, name: '홈', item: `${siteUrl}/` },
{ '@type': 'ListItem', position: 2, name: '커피챗', item: `${siteUrl}/coffee-chat` },
],
},
}),
},
],
})
// 폼 상태
File diff suppressed because it is too large Load Diff
+294 -51
View File
@@ -1,5 +1,11 @@
<script setup lang="ts">
// 메인(채용 홈) — Hero / About / 브랜드 / Growth / People / CTA
// 연혁 행 우측에 붙일 이미지 — assets 이미지는 import해야 Vite가 URL로 변환
import imgUsa from '~/assets/images/img-usa.svg'
import imgHongkong from '~/assets/images/img-hongkong.svg'
import imgBrand from '~/assets/images/img-brand.svg'
const config = useRuntimeConfig()
const siteUrl = String(config.public.siteUrl || '').replace(/\/$/, '')
@@ -8,6 +14,8 @@ useSeo({
description:
'이너탭(innertab)은 2023년 창립 이후 꾸준히 성장하는 D2C 스타트업입니다. 셀라이트·리큐어리 등 다양한 브랜드로 고객에게 꼭 필요한 해답을 제공합니다. 함께 성장할 동료를 찾습니다.',
path: '/',
keywords:
'이너탭, innertab, D2C, 스타트업, 채용, 브랜드, 셀라이트, 리큐어리, 조직문화, 커리어, 함께 성장, 채용 중',
})
// 조직 구조화 데이터(JSON-LD) — 검색엔진의 회사 정보 인식
@@ -34,9 +42,35 @@ useHead({
sameAs: ['https://selite.kr', 'https://retriq.co.kr'],
}),
},
{
// 웹사이트 정보 — 검색결과의 사이트명 인식
type: 'application/ld+json',
innerHTML: JSON.stringify({
'@context': 'https://schema.org',
'@type': 'WebSite',
name: '이너탭 innertab',
alternateName: '이너탭 채용',
url: siteUrl,
inLanguage: 'ko-KR',
publisher: { '@type': 'Organization', name: '이너탭', url: siteUrl },
}),
},
],
})
// Growth 배경 영상 — 슬로우 모션 적용 (재생 속도 0.5배)
const growthVideo = ref<HTMLVideoElement | null>(null)
const GROWTH_PLAYBACK_RATE = 0.5 // 슬로우 배율 (1 = 원본 속도)
onMounted(() => {
if (!growthVideo.value) return
// playbackRate는 새 소스가 로드될 때 초기화되므로 메타데이터 로드 시점에도 재설정
const applyRate = () => {
if (growthVideo.value) growthVideo.value.playbackRate = GROWTH_PLAYBACK_RATE
}
applyRate()
growthVideo.value.addEventListener('loadedmetadata', applyRate)
})
// 브랜드 타일 데이터
interface BrandTile {
name: string
@@ -44,11 +78,12 @@ interface BrandTile {
feature?: boolean
link?: string // 외부 링크 URL (없으면 출시예정)
comingSoon?: boolean // 출시예정 여부
cuteFont?: boolean // 동글동글한 귀여운 폰트(Jua) 적용 여부
}
const brands: BrandTile[] = [
{ name: 'selite', img: '/images/img-selite.png', link: 'https://selite.kr' },
{ name: 'recurely', img: '/images/img-recurely.png', link: 'https://retriq.co.kr' },
{ name: 'nyangtea', img: '/images/img-nyangtea.png', comingSoon: true },
{ name: "s'elite", img: '/images/img-selite.png', link: 'https://selite.kr' },
{ name: 'RETRIQ', img: '/images/img-recurely.png', link: 'https://retriq.co.kr' },
{ name: '냥티', img: '/images/img-nyangtea.png', comingSoon: true, cuteFont: true },
]
// 성장 지표 데이터
@@ -58,23 +93,42 @@ interface Stat {
unit: string
desc: string
}
// 연 매출 성장률 — 상단 단독 카드: 좌→우로 커지고 진해지는 겹친 구체 3개 다이어그램
const revenueTitle = '연 매출 성장률'
const revenueDesc = '고객의 믿음과 선택으로 이너탭은 꾸준히 성장해왔습니다.'
interface RevenueOrb {
year: string
value?: number // 숫자 매출 (CountUp 카운트 애니메이션)
unit?: string
text?: string // 숫자 대신 표시할 텍스트 (예: 창립)
plus?: boolean // 마지막 구체에 + 배지 표시
}
const revenueOrbs: RevenueOrb[] = [
{ year: '2023년', text: '창립' },
{ year: '2024년', value: 55, unit: '억' },
{ year: '2026년', value: 150, unit: '억', plus: true },
]
// 나머지 지표 — 매출 성장률 카드 아래에 3개 나란히 배치
const stats: Stat[] = [
{ title: '운영 브랜드', value: 5, unit: '개', desc: '서로 다른 문제를 해결하기 위해\n각기 다른 브랜드를 정교하게 설계했습니다.' },
{ title: '누적 매출', value: 150, unit: '억', desc: '고객의 믿음과 선택으로\n이너탭은 꾸준히 성장해왔습니다.' },
{ title: '연 평균 성장률', value: 320, unit: '%', desc: '끊임없는 도전과 실행으로\n이너탭은 더 빠르게 확장하고 있습니다.' },
{ title: '더 나은 일상을 연구한 시간', value: 1200, unit: '일', desc: '작은 변화가 만드는 큰 차이를\n매일 관찰하고 개선해왔습니다.' },
]
// 주요 연혁 — 년도 + 내용
// 주요 연혁 — 년도 + 내용 (+ 행 우측 이미지)
interface HistoryItem {
year: string
text: string
img?: string // 행 오른쪽 끝에 표시할 이미지 (없으면 미표시)
label?: string // 이미지 대신 표시할 텍스트 배지 (예: ITAB)
}
const history: HistoryItem[] = [
{ year: '2026', text: '일 최대 매출 4,500만원 달성' },
{ year: '2026', text: '미국 법인 설립' },
{ year: '2025', text: '홍콩 법인 설립' },
{ year: '2025', text: '한국 소비자 평가 대상 2회' },
{ year: '2026', text: '일 최대 매출 4,500만원 달성', label: 'ITAB' },
{ year: '2026', text: '미국 법인 설립', img: imgUsa },
{ year: '2025', text: '운영 브랜드 4개 달성' },
{ year: '2025', text: '홍콩 K-Beauty 진출', img: imgHongkong },
{ year: '2025', text: '한국 소비자 평가 대상 2연속 수상', img: imgBrand },
]
// 구성원 카드 — PEOPLE 섹션 비활성화로 함께 주석 처리 (재활성화 시 아래 + 템플릿 주석 해제)
@@ -105,15 +159,14 @@ const history: HistoryItem[] = [
source 우선순위: WebM(VP9, 작음) MP4(폴백) -->
<video
class="hero-video"
poster="/images/hero-poster.webp"
poster="/images/hero2-poster.jpg"
autoplay
muted
loop
playsinline
preload="auto"
>
<source src="/videos/hero.webm" type="video/webm" >
<source src="/videos/hero-opt.mp4" type="video/mp4" >
<source src="/videos/hero2.mp4" type="video/mp4" >
</video>
<div class="scroll-hint"><span>SCROLL</span><i /></div>
</section>
@@ -122,10 +175,10 @@ const history: HistoryItem[] = [
<section id="mission" class="about">
<div class="wrap">
<div class="inner">
<p v-reveal class="about-eyebrow">누군가의 매일을 낫게 만드는 </p>
<h2 v-reveal="{ delay: 100 }" class="m-title">고객만을 위한 <mark>해답</mark> 제공합니다.</h2>
<p v-reveal="{ delay: 220 }" class="about-eyebrow">누군가의 매일을 낫게 만드는 </p>
<h2 v-reveal="{ delay: 340 }" class="m-title">고객만을 위한 <mark>해답</mark> 제공합니다.</h2>
<p v-reveal="{ delay: 160 }" class="about-intro">
<p v-reveal="{ delay: 420 }" class="about-intro">
이너탭은 2023년 창립 이후 꾸준히 성장하고 있는 D2C 스타트업입니다.<br >
올리브 캡슐 올베라진, 밀크씨슬 브랜드 리필앤칸 액티브 <br >
다양한 비즈니스로 고객에게 다가가고 있습니다.
@@ -133,14 +186,14 @@ const history: HistoryItem[] = [
<!-- 미션 / 비전 라벨 + 영문 타이틀 + 국문 설명 (구분선 분리) -->
<dl class="mv-list">
<div v-reveal class="mv-row">
<div v-reveal="{ delay: 520 }" class="mv-row">
<dt class="mv-label">Mission</dt>
<dd class="mv-content">
<h3 class="mv-title">Build Better. Sell Bester</h3>
<p class="mv-desc">고객에게 필요한 제품을 만들고,<br > 가치를 누구보다 전달합니다.</p>
</dd>
</div>
<div v-reveal="{ delay: 100 }" class="mv-row">
<div v-reveal="{ delay: 640 }" class="mv-row">
<dt class="mv-label">Vision</dt>
<dd class="mv-content">
<h3 class="mv-title">Be the Brand Found on the Desks of People We Love</h3>
@@ -166,7 +219,7 @@ const history: HistoryItem[] = [
>
<img :src="brand.img" :alt="`${brand.name} 브랜드 이미지`" >
<div class="tile-overlay" />
<span class="tile-name">{{ brand.name }}</span>
<span class="tile-name" :class="{ 'tile-name--cute': brand.cuteFont }">{{ brand.name }}</span>
<!-- 출시예정 배지 / 외부링크 화살표 -->
<span v-if="brand.comingSoon" class="tile-badge">출시예정</span>
<span v-else class="tile-arrow" aria-hidden="true"></span>
@@ -180,6 +233,7 @@ const history: HistoryItem[] = [
<!-- 배경 영상 히어로와 동일하게 무한 반복 / poster·WebM·MP4 폴백 -->
<div class="growth-bg">
<video
ref="growthVideo"
class="growth-video"
poster="/images/growth-poster.webp"
autoplay
@@ -201,6 +255,55 @@ const history: HistoryItem[] = [
</div>
<div class="growth-layout">
<!-- 상단 : 매출 성장률(콘텐츠 ) + 주요 연혁(남는 채움) -->
<div class="growth-top">
<!-- 매출 성장률 콘텐츠(구체 클러스터) 크기만큼만 차지 -->
<div v-reveal class="gcard stat-card revenue-card">
<div class="gcard-title">{{ revenueTitle }}</div>
<!-- 겹친 구체 클러스터: 왼쪽이 작고 옅으며, 오른쪽으로 갈수록 커지고 진해짐 -->
<div class="orb-cluster">
<div
v-for="(orb, i) in revenueOrbs"
:key="orb.year"
class="stat-orb"
:class="`orb-${i + 1}`"
>
<span class="orb-label">
<span class="orb-year">{{ orb.year }}</span>
<span class="orb-value">
<!-- 숫자 매출이면 CountUp + 단위, 아니면 텍스트(창립 ) -->
<template v-if="orb.value !== undefined">
<CountUp :value="orb.value" /><small>{{ orb.unit }}</small><span v-if="orb.plus" class="plus">+</span>
</template>
<template v-else>{{ orb.text }}</template>
</span>
</span>
</div>
</div>
<!-- 카드 하단 설명 -->
<p class="revenue-desc">{{ revenueDesc }}</p>
</div>
<!-- 주요 연혁 매출 카드 남는 공간을 채움 -->
<div v-reveal="{ delay: 120 }" class="gcard history-card">
<div class="gcard-title">주요 연혁 내역</div>
<!-- 슬로건 연혁 카드에 메시지 부여 -->
<p class="history-slogan">끊임없는 도전으로 써내려간 성장의 기록</p>
<ul class="timeline">
<li v-for="(item, i) in history" :key="i" v-reveal="{ delay: 200 + i * 90 }">
<!-- 같은 년도가 연속되면 시각적으로 묶어 표기 -->
<span class="t-year">{{ item.year }}</span>
<span class="t-text">{{ item.text }}</span>
<!-- 오른쪽 이미지 (해당 항목에만) -->
<img v-if="item.img" :src="item.img" class="t-flag" :alt="`${item.text} 이미지`" >
<!-- 이미지가 없는 행은 텍스트 배지(ITAB ) 동일 높이 유지 -->
<span v-else-if="item.label" class="t-label">{{ item.label }}</span>
</li>
</ul>
</div>
</div>
<!-- 하단 : 나머지 지표 3개 나란히 (전체 ) -->
<div class="stat-grid">
<div
v-for="(stat, i) in stats"
@@ -220,21 +323,6 @@ const history: HistoryItem[] = [
</p>
</div>
</div>
<div v-reveal="{ delay: 120 }" class="gcard history-card">
<div class="gcard-title">주요 연혁 내역</div>
<!-- 슬로건 연혁 카드에 메시지 부여 -->
<p class="history-slogan">끊임없는 도전으로 써내려간 성장의 기록</p>
<ul class="timeline">
<li v-for="(item, i) in history" :key="i" v-reveal="{ delay: 200 + i * 90 }">
<!-- 같은 년도가 연속되면 시각적으로 묶어 표기 -->
<span class="t-year" :class="{ 'is-repeat': i > 0 && history[i - 1].year === item.year }">
{{ item.year }}
</span>
<span class="t-text">{{ item.text }}</span>
</li>
</ul>
</div>
</div>
</div>
</section>
@@ -295,6 +383,8 @@ const history: HistoryItem[] = [
.hero {
position: relative;
overflow: hidden;
/* 헤더(4.5rem)를 제외한 화면 높이를 가득 채움 — dvh로 모바일 주소창 변동 대응 */
height: calc(100dvh - 4.5rem);
/* 영상 로드 전 폴백 배경 — 흰 섹션으로 즉시 표시 */
background: var(--white);
}
@@ -302,10 +392,8 @@ const history: HistoryItem[] = [
.hero-video {
display: block;
width: 100%; /* 가로폭을 꽉 채움 */
height: auto; /* 높이는 원본 비율대로 — 가로폭만큼 커짐 */
aspect-ratio: 16 / 9; /* 원본 1280x720 비율 — 로드 전 높이 예약 */
max-height: 62.5rem; /* 최대 높이 제한 */
object-fit: cover; /* 높이 제한에 걸리면 늘어나지 않고 크롭 (poster에도 동일 적용) */
height: 100%; /* 섹션 높이(화면-헤더)를 가득 채움 */
object-fit: cover; /* 비율 유지하며 영역을 채우고 넘치는 부분은 크롭 (poster에도 동일 적용) */
/* 로드 시 살짝 확대된 상태에서 천천히 안착 (Ken Burns) */
animation: hero-settle 2.6s cubic-bezier(0.16, 1, 0.3, 1) both;
}
@@ -535,7 +623,7 @@ const history: HistoryItem[] = [
font-weight: 800;
letter-spacing: 0.01em;
line-height: 1;
text-transform: uppercase;
/* 표기는 데이터의 원본 대소문자 그대로 — s'elite 소문자 유지 */
font-size: clamp(1.125rem, 1.6vw, 1.5rem); /* 18~24px */
pointer-events: none;
text-shadow: 0 0.125rem 1rem rgba(0, 0, 0, 0.35);
@@ -545,6 +633,15 @@ const history: HistoryItem[] = [
font-size: clamp(1.75rem, 2.8vw, 2.625rem); /* 28~42px */
}
/* 냥티 등 동글동글하고 귀여운 폰트(Jua) 적용 타일명
— .btile .tile-name(클래스 2개)보다 우선순위가 높아야 하므로 동일하게 .btile 하위로 작성 */
.btile .tile-name--cute {
font-family: 'Jua', var(--font-display), sans-serif;
font-weight: 400; /* Jua는 단일 weight — 800 강제 시 가짜 볼드로 둥근 형태가 뭉개짐 */
letter-spacing: 0.02em;
font-size: clamp(1.375rem, 2vw, 1.875rem); /* 22~30px — 둥근 폰트 가독성 확보 위해 약간 확대 */
}
.btile .tile-arrow {
position: absolute;
right: clamp(1rem, 1.6vw, 1.375rem); /* 16~22px */
@@ -640,19 +737,138 @@ const history: HistoryItem[] = [
color: var(--ink);
}
/* 세로 스택 — 상단 행(매출+연혁) → 하단 행(지표 3개) */
.growth-layout {
display: grid;
grid-template-columns: 1.45fr 1fr;
display: flex;
flex-direction: column;
gap: clamp(1rem, 1.8vw, 1.5rem); /* 16~24px */
align-items: stretch;
}
/* 상단 행 — 매출 카드(콘텐츠 폭) + 연혁 카드(남는 폭 채움) */
.growth-top {
display: flex;
gap: clamp(1rem, 1.8vw, 1.5rem);
align-items: stretch; /* 두 카드 높이 맞춤 */
}
.stat-grid {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-columns: repeat(3, 1fr); /* 지표 3개 나란히 — 전체 폭이라 카드 폭 충분 */
gap: clamp(1rem, 1.8vw, 1.5rem);
}
/* ===== 연 매출 성장률 — 콘텐츠(구체 클러스터) 크기만큼만 폭 차지 ===== */
.revenue-card {
/* 제목(좌상단) + 구체 클러스터(아래) 세로 배치 */
display: flex;
flex-direction: column;
flex: 0 0 auto; /* 늘어/줄지 않고 콘텐츠 폭 유지 */
max-width: 100%; /* 좁은 화면에서 넘침 방지 */
}
/* 겹친 구체 클러스터 — 제목 아래 남는 공간을 채우고 그 안에서 세로 중앙 배치 */
.revenue-card .orb-cluster {
position: relative;
z-index: 0;
display: flex;
flex: 1; /* 카드가 늘어나도 남는 높이를 채움 → 구체가 윗단에 몰리지 않음 */
align-items: center; /* 늘어난 영역 안에서 구체를 세로 중앙 정렬 */
margin-top: clamp(0.75rem, 1.5vw, 1.25rem);
pointer-events: none;
}
/* 클러스터 내부 구체 — 단독 카드용 위치 규칙 무시(static)하고 흐름 배치 */
.revenue-card .orb-cluster .stat-orb {
position: static;
display: grid;
place-items: center; /* 내부 텍스트 중앙 정렬 */
flex: none;
aspect-ratio: 1;
border-radius: 50%;
/* 기존 단일 구체와 동일한 방사형 그라데이션 */
background: radial-gradient(
circle at 50% 42%,
rgba(255, 255, 255, 0.95),
rgba(255, 255, 255, 0.55) 54%,
rgba(255, 255, 255, 0) 78%
);
}
/* 좌→우로 커지는 구체 크기 */
.revenue-card .orb-1 {
width: clamp(6rem, 11vw, 9rem);
opacity: 0.5; /* 가장 옅게 */
}
.revenue-card .orb-2 {
width: clamp(7.5rem, 14vw, 11.5rem);
opacity: 0.74;
margin-left: clamp(-2.75rem, -4.5vw, -3.75rem); /* 앞 구체와 겹침 */
}
/* 마지막 구체 — 가장 크고 기존 단일 구체와 동일한 불투명도(opacity 미지정 = 1)
DOM 순서상 뒤에 있어 위에 그려지며 가장 진하게 앞으로 옴 */
.revenue-card .orb-3 {
width: clamp(9.5rem, 17vw, 14rem);
margin-left: clamp(-3.25rem, -5.5vw, -4.5rem);
}
/* 구체 내부 텍스트 라벨 — 연도(상단) + 큰 숫자 */
.revenue-card .orb-label {
position: relative;
z-index: 1;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
color: var(--ink);
line-height: 1.1;
}
.revenue-card .orb-year {
font-weight: 700;
font-size: clamp(0.8125rem, 1.3vw, 1.0625rem); /* 13~17px */
letter-spacing: -0.01em;
margin-bottom: 0.25em;
}
.revenue-card .orb-value {
font-weight: 800;
letter-spacing: -0.03em;
white-space: nowrap;
}
/* 숫자 크기도 구체 크기에 맞춰 좌→우로 확대 */
.revenue-card .orb-1 .orb-value {
font-size: clamp(1.375rem, 2.6vw, 2.125rem); /* 22~34px */
}
.revenue-card .orb-2 .orb-value {
font-size: clamp(1.75rem, 3.4vw, 2.75rem); /* 28~44px */
}
.revenue-card .orb-3 .orb-value {
font-size: clamp(2.25rem, 4.6vw, 3.5rem); /* 36~56px */
}
/* 단위(억) — 숫자보다 작게 */
.revenue-card .orb-value small {
font-size: 0.36em;
font-weight: 700;
margin-left: 0.15rem;
letter-spacing: 0;
}
/* 카드 하단 설명 — 구체 클러스터 아래 */
.revenue-card .revenue-desc {
position: relative;
z-index: 1;
margin-top: clamp(1rem, 2vw, 1.5rem);
font-size: 0.875rem; /* 14px */
color: var(--ink-soft);
line-height: 1.65;
}
.gcard {
position: relative;
background: rgba(255, 255, 255, 0.18);
@@ -742,6 +958,8 @@ const history: HistoryItem[] = [
.history-card {
display: flex;
flex-direction: column;
flex: 1 1 0; /* 매출 카드 옆 남는 폭을 모두 채움 */
min-width: 0;
}
/* 연혁 슬로건 — 제목 아래 메시지 */
@@ -758,13 +976,16 @@ const history: HistoryItem[] = [
margin-top: clamp(1.25rem, 2.5vw, 1.875rem); /* 20~30px */
display: flex;
flex-direction: column;
flex: 1; /* 카드 높이가 늘어날 때 항목 간격을 채워 균형 유지 */
justify-content: center;
}
.timeline li {
display: flex;
gap: 1rem; /* 16px */
align-items: baseline;
padding: clamp(0.9375rem, 1.6vw, 1.1875rem) 0; /* 15~19px */
align-items: center; /* 텍스트와 이미지를 세로 중앙 정렬 */
padding: 0; /* 행 상하 여백 제거 */
min-height: clamp(2.625rem, 3.9vw, 3.375rem); /* 이미지 높이와 동일 — 이미지 없는 행도 균일 */
border-top: 0.0625rem solid rgba(40, 50, 70, 0.1);
}
@@ -784,11 +1005,6 @@ const history: HistoryItem[] = [
line-height: 1.4;
}
/* 직전 항목과 같은 년도면 흐리게 → 같은 해 묶음으로 인식 */
.timeline .t-year.is-repeat {
opacity: 0.28;
}
.timeline .t-text {
font-size: 0.9375rem; /* 15px */
color: var(--ink);
@@ -796,6 +1012,32 @@ const history: HistoryItem[] = [
line-height: 1.4;
}
/* 행 오른쪽 끝 이미지 — 비율이 달라도 동일한 정사각 박스로 통일 */
.timeline .t-flag {
flex: none;
margin-left: auto; /* 우측 끝단으로 밀착 */
align-self: center;
width: clamp(2.625rem, 3.9vw, 3.375rem); /* 42~54px — 가로/세로 동일 (직전 대비 75%) */
height: clamp(2.625rem, 3.9vw, 3.375rem);
border-radius: 0.25rem; /* 4px — 사각 이미지 모서리 살짝 둥글게 */
object-fit: contain; /* 박스 안에서 비율 유지하며 맞춤(왜곡 없음) */
}
/* 이미지 대신 들어가는 텍스트 배지(ITAB) — 이미지와 동일한 높이로 행 높이 통일 */
.timeline .t-label {
flex: none;
margin-left: auto; /* 우측 끝단으로 밀착 */
display: grid;
place-items: center;
height: clamp(2.625rem, 3.9vw, 3.375rem); /* t-flag와 동일 높이 */
font-family: var(--font-display);
font-weight: 700;
font-size: clamp(1.25rem, 2vw, 1.625rem); /* 20~26px */
letter-spacing: 0.04em;
color: var(--brand); /* 브랜드 컬러 */
line-height: 1;
}
/* ===================== PEOPLE ===================== */
.people {
padding: clamp(4.5rem, 11vw, 9.375rem) 0; /* 72~150px */
@@ -933,8 +1175,9 @@ const history: HistoryItem[] = [
/* ===================== 반응형 ===================== */
@media (max-width: 56.25rem) {
/* 900px */
.growth-layout {
grid-template-columns: 1fr;
/* 상단 행: 좁은 화면에서는 매출/연혁 카드를 세로로 쌓고 전체 폭 사용 */
.growth-top {
flex-direction: column;
}
.brand-bento {