From 7aedf072031714e0ef07c1a25016e3090a72bc3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=84=B1=EA=B2=BD?= Date: Fri, 13 Mar 2026 10:13:26 +0900 Subject: [PATCH] =?UTF-8?q?=ED=8F=B0=ED=8A=B8=20=EC=88=98=EC=A0=95,=20UI?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EB=B0=8F=20=EB=8C=80=EC=8B=9C=EB=B3=B4?= =?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.css | 486 +++++++++---------- src/components/Footer.tsx | 3 +- src/components/SocialPostingModal.tsx | 14 +- src/locales/en.json | 3 +- src/locales/ko.json | 9 +- src/pages/Analysis/AnalysisResultSection.tsx | 10 +- src/pages/Analysis/GeometricChart.tsx | 34 +- src/pages/Dashboard/CompletionContent.tsx | 2 +- src/pages/Dashboard/DashboardContent.tsx | 91 ++-- 9 files changed, 313 insertions(+), 339 deletions(-) diff --git a/index.css b/index.css index 227d64b..d3fb75d 100644 --- a/index.css +++ b/index.css @@ -670,7 +670,7 @@ } .sidebar-item-label { - font-size: var(--text-sm); + font-size: 16px; font-weight: 700; white-space: nowrap; } @@ -802,7 +802,7 @@ position: relative; z-index: 1; padding: 4px 0; - font-size: 11px; + font-size: 14px; font-weight: 600; letter-spacing: 0.03em; color: rgba(255, 255, 255, 0.4); @@ -2083,7 +2083,7 @@ } .comp2-title-row { - padding: 0 0 16px; + padding: 16px; text-align: center; flex-shrink: 0; } @@ -2098,7 +2098,7 @@ } .comp2-page-subtitle { - font-size: 14px; + font-size: 16px; font-weight: 400; color: #9BCACC; line-height: 1.29; @@ -2313,7 +2313,7 @@ } .comp2-info-label { - font-size: 12px; + font-size: 14px; font-weight: 400; color: #9BCACC; line-height: 1.29; @@ -2362,7 +2362,7 @@ } .comp2-filesize { - font-size: 12px; + font-size: 14px; font-weight: 400; color: #9BCACC; line-height: 1.29; @@ -2386,9 +2386,9 @@ } .comp2-meta-label { - font-size: 12px; + font-size: 16px; font-weight: 400; - color: #E5F1F2; + color: #9BCACC; line-height: 1.29; } @@ -2406,7 +2406,7 @@ } .comp2-lyrics-text { - font-size: 12px; + font-size: 16px; font-weight: 400; color: #E5F1F2; line-height: 1.625; @@ -2500,7 +2500,7 @@ flex: 1; height: 40px; border-radius: 8px; - font-size: 12px; + font-size: 14px; font-weight: 600; letter-spacing: -0.006em; line-height: 1.19; @@ -3269,15 +3269,19 @@ } /* ===================================================== - Brand Intelligence v2 (피그마 디자인 기반) + Brand Intelligence v2 ===================================================== */ .bi2-page { + display: flex; + width: 100%; min-height: 100vh; - background: linear-gradient(to bottom, #002224, #01191a); - color: #E5F1F2; padding-top: 64px; padding-bottom: 160px; + flex-direction: column; + align-items: center; + background: linear-gradient(to bottom, #002224, #01191a); + color: #E5F1F2; font-family: 'Pretendard', sans-serif; overflow-x: auto; } @@ -3333,11 +3337,22 @@ /* 타이틀 영역 */ .bi2-page-title-section { display: flex; + max-width: 1440px; + padding: 68px 16px 50px 16px; flex-direction: column; + justify-content: center; align-items: center; gap: 24px; - padding: 8px 0 40px; + align-self: stretch; + margin: 0 auto; +} + +.bi2-page-divider { + height: 0; + width: calc(100% - 32px); max-width: 1440px; + border: none; + border-top: 1px solid var(--Color-teal-500, #067C80); margin: 0 auto; } @@ -3357,39 +3372,44 @@ display: flex; flex-direction: column; align-items: center; - gap: 8px; + gap: 20px; + align-self: stretch; } .bi2-main-title { - font-size: 48px; - font-weight: 600; - color: #FFFFFF; - letter-spacing: -0.006em; - line-height: 1.19; + color: var(--Color-white, #FFF); text-align: center; + font-family: Pretendard; + font-size: 48px; + font-style: normal; + font-weight: 600; + line-height: normal; + letter-spacing: -0.288px; + align-self: stretch; } .bi2-subtitle { - font-size: 14px; + font-size: 21px; font-weight: 400; color: #E5F1F2; letter-spacing: -0.006em; line-height: 1.19; text-align: center; + align-self: stretch; } /* 메인 컨테이너 */ .bi2-main-container { + display: flex; max-width: 1440px; min-width: 1000px; - margin: 0 auto; - background: #013032; - border: 1px solid #034A4D; - border-radius: 40px; - padding: 32px 32px 112px; - display: flex; + padding: 68px 32px 112px 32px; flex-direction: column; + justify-content: center; + align-items: flex-start; gap: 88px; + align-self: stretch; + margin: 0 auto; } /* 매장 헤더 */ @@ -3400,33 +3420,42 @@ } .bi2-store-name { - font-size: 30px; - font-weight: 700; - color: #FFFFFF; - letter-spacing: -0.006em; - line-height: 1.3; + color: var(--Color-white, #FFF); + font-family: Pretendard; + font-size: 40px; + font-style: normal; + font-weight: 600; + line-height: 130%; /* 52px */ + letter-spacing: -0.24px; } .bi2-store-address { - font-size: 14px; - font-weight: 400; - color: #9BCACC; - line-height: 1.29; + color: var(--Color-teal-200, #9BCACC); + font-family: Pretendard; + font-size: 16px; + font-style: normal; + font-weight: 600; + line-height: 22px; /* 137.5% */ + letter-spacing: -0.096px; } /* 섹션 공통 */ .bi2-section { display: flex; flex-direction: column; - gap: 16px; + align-items: flex-start; + gap: 20px; + align-self: stretch; } .bi2-section-title { - font-size: 20px; - font-weight: 700; - color: #E5F1F2; - letter-spacing: -0.006em; - line-height: 1.3; + color: var(--Color-white, #FFF); + font-family: Pretendard; + font-size: 28px; + font-style: normal; + font-weight: 600; + line-height: 130%; /* 36.4px */ + letter-spacing: -0.168px; } /* 브랜드 정체성 카드 */ @@ -3454,25 +3483,34 @@ } .bi2-label-sm { - font-size: 14px; - font-weight: 400; - color: #E5F1F2; - line-height: 1.29; + color: var(--Color-teal-50, #E5F1F2); + /* Body_600 */ + font-family: Pretendard; + font-size: 16px; + font-style: normal; + font-weight: 600; + line-height: 22px; /* 137.5% */ + letter-spacing: -0.096px; } .bi2-core-value { + color: var(--Color-mint-50, #F4FFFC); + font-family: Pretendard; font-size: 24px; + font-style: normal; font-weight: 700; - color: #F4FFFC; - letter-spacing: -0.006em; - line-height: 1.3; + line-height: 130%; /* 31.2px */ + letter-spacing: -0.144px; } .bi2-category-text { - font-size: 14px; - font-weight: 400; - color: #E5F1F2; - line-height: 1.29; + color: var(--Color-teal-50, #E5F1F2); + font-family: Pretendard; + font-size: 18px; + font-style: normal; + font-weight: 600; + line-height: 22px; /* 122.222% */ + letter-spacing: -0.108px; } .bi2-identity-divider { @@ -3494,23 +3532,26 @@ } .bi2-body-text { + color: var(--Color-teal-100, #CEE5E6); + font-family: Pretendard; font-size: 18px; + font-style: normal; font-weight: 400; - color: #CEE5E6; - line-height: 1.6; - letter-spacing: -0.006em; + line-height: 160%; /* 28.8px */ + letter-spacing: -0.108px; } /* 셀링 포인트 카드 */ .bi2-selling-card { display: flex; - align-items: center; + padding: 16px 20px; justify-content: center; - gap: clamp(20px, 4vw, 80px); - background: #034245; - border: 1px solid #034A4D; + align-items: center; + gap: 100px; + align-self: stretch; border-radius: 20px; - padding: 16px 32px; + border: 1px solid var(--Color-teal-700, #034A4D); + background: var(--Color-teal-750, #01393B); } .bi2-selling-chart { @@ -3525,8 +3566,8 @@ @media (max-width: 768px) { .bi2-radar-container svg { - width: min(95vw, 420px) !important; - height: min(95vw, 420px) !important; + width: min(95vw, 440px) !important; + height: min(95vw, 360px) !important; } .bi2-radar-label-text { @@ -3593,24 +3634,29 @@ display: flex; align-items: stretch; gap: 16px; + width: 100%; } .bi2-persona-card { - flex: 1; - background: #034245; - border: 1px solid #034A4D; - border-radius: 20px; - padding: 20px; display: flex; + padding: 20px; flex-direction: column; + align-items: stretch; gap: 16px; + flex: 1 0 0; + align-self: stretch; + border-radius: 20px; + border: 1px solid var(--Color-teal-700, #034A4D); + background: var(--Color-teal-750, #01393B); } .bi2-persona-header { display: flex; - flex-direction: column; - gap: 8px; padding-bottom: 8px; + flex-direction: column; + align-items: flex-start; + gap: 4px; + align-self: stretch; } .bi2-persona-info { @@ -3620,27 +3666,33 @@ } .bi2-persona-name { - font-size: 18px; + color: var(--Color-teal-50, #E5F1F2); + font-family: Pretendard; + font-size: 20px; + font-style: normal; font-weight: 700; - color: #E5F1F2; - letter-spacing: -0.006em; - line-height: 1.3; + line-height: 130%; /* 26px */ + letter-spacing: -0.12px; } .bi2-persona-age { + color: var(--Color-teal-200, #9BCACC); + /* 14_600 */ + font-family: Pretendard; font-size: 14px; - font-weight: 400; - color: #9BCACC; - line-height: 1.29; + font-style: normal; + font-weight: 600; + line-height: 18px; /* 128.571% */ } .bi2-persona-desc { + color: var(--Color-teal-100, #CEE5E6); + /* 14_600 */ + font-family: Pretendard; font-size: 14px; - font-weight: 400; - color: #CEE5E6; - line-height: 1.29; - word-break: keep-all; - overflow-wrap: break-word; + font-style: normal; + font-weight: 600; + line-height: 18px; /* 128.571% */ } .bi2-persona-divider { @@ -3656,29 +3708,33 @@ } .bi2-persona-detail.grow { - flex: 1; + display: flex; + padding: 0 4px; + align-items: flex-start; + gap: 4px; + align-self: stretch; } .bi2-label-xs { + color: var(--Color-teal-100, #CEE5E6); + font-family: Pretendard; font-size: 14px; - font-weight: 400; - color: #CEE5E6; - line-height: 1.29; - white-space: nowrap; - flex-shrink: 0; + font-style: normal; + font-weight: 600; + line-height: 18px; /* 128.571% */ } .bi2-persona-detail-text { - font-size: 16px; - font-weight: 600; - color: #E5F1F2; - line-height: 26px; - letter-spacing: -0.006em; - white-space: pre-line; - text-align: right; - word-break: keep-all; - overflow-wrap: break-word; flex: 1; + color: var(--Color-teal-50, #E5F1F2); + text-align: right; + font-family: Pretendard; + font-size: 16px; + font-style: normal; + font-weight: 600; + line-height: 26px; + letter-spacing: -0.096px; + white-space: pre-line; } /* 추천 타겟 키워드 */ @@ -3689,16 +3745,23 @@ } .bi2-keyword-subtitle { - font-size: 14px; - font-weight: 400; - color: #9BCACC; - line-height: 1.29; + color: var(--Color-teal-200, #9BCACC); + /* Body_600 */ + font-family: Pretendard; + font-size: 16px; + font-style: normal; + font-weight: 600; + line-height: 22px; /* 137.5% */ + letter-spacing: -0.096px; } .bi2-keyword-tags { display: flex; - flex-wrap: wrap; + align-items: flex-start; + align-content: flex-start; gap: 8px; + align-self: stretch; + flex-wrap: wrap; } .bi2-keyword-pill { @@ -3768,8 +3831,8 @@ .bi2-main-container { min-width: unset; margin: 0 16px; - padding: 24px 20px 80px; - gap: 48px; + padding: 24px 0px 80px; + gap: 64px; border-radius: 24px; } @@ -3779,8 +3842,12 @@ } .bi2-persona-grid { + display: flex; flex-direction: column; - } + align-items: flex-start; + gap: 20px; + align-self: stretch; + } .bi2-identity-bottom { flex-direction: column; @@ -3788,11 +3855,18 @@ } .bi2-main-title { - font-size: 28px; - } + color: var(--Color-white, #FFF); + text-align: center; + font-family: Pretendard; + font-size: 45px; + font-style: normal; + font-weight: 600; + line-height: normal; + letter-spacing: -0.288px; + } .bi2-store-name { - font-size: 24px; + font-size: 32px; } .bi2-selling-name { @@ -5664,6 +5738,7 @@ /* Dashboard Container */ .dashboard-container { width: 100%; + min-width: 375px; padding: 0.75rem; display: flex; flex-direction: column; @@ -5704,35 +5779,17 @@ } .dashboard-title { - font-size: var(--text-lg); + font-size: 32px; font-weight: 700; letter-spacing: -0.025em; } -@media (min-width: 640px) { - .dashboard-title { - font-size: var(--text-xl); - } -} - -@media (min-width: 768px) { - .dashboard-title { - font-size: 1.5rem; - } -} - .dashboard-description { - font-size: 15px; + font-size: 16px; color: var(--color-text-gray-500); margin-top: 0.125rem; } -@media (min-width: 640px) { - .dashboard-description { - font-size: 15px; - } -} - /* Stats Grid */ .stats-grid { flex-shrink: 0; @@ -5787,65 +5844,29 @@ } .stat-label { - font-size: 8px; + font-size: 14px; font-weight: 700; color: var(--color-text-gray-400); text-transform: uppercase; letter-spacing: 0.1em; } -@media (min-width: 640px) { - .stat-label { - font-size: 9px; - } -} - -@media (min-width: 768px) { - .stat-label { - font-size: 10px; - } -} - .stat-value { - font-size: var(--text-lg); + font-size: 24px; font-weight: 700; color: var(--color-text-white); line-height: 1.25; } -@media (min-width: 640px) { - .stat-value { - font-size: var(--text-xl); - } -} - -@media (min-width: 768px) { - .stat-value { - font-size: 1.5rem; - } -} - -@media (min-width: 1024px) { - .stat-value { - font-size: var(--text-3xl); - } -} - .stat-trend { display: inline-flex; align-items: center; gap: 2px; - font-size: 8px; + font-size: 12px; color: var(--color-mint); font-weight: 500; } -@media (min-width: 640px) { - .stat-trend { - font-size: 9px; - } -} - /* Chart Card */ .chart-card { flex: 1; @@ -5903,18 +5924,6 @@ letter-spacing: 0.1em; } -@media (min-width: 640px) { - .chart-title { - font-size: 9px; - } -} - -@media (min-width: 768px) { - .chart-title { - font-size: 10px; - } -} - .chart-legend { display: flex; gap: 0.375rem; @@ -5929,16 +5938,10 @@ } .chart-legend-text { - font-size: 8px; + font-size: 14px; color: var(--color-text-gray-400); } -@media (min-width: 640px) { - .chart-legend-text { - font-size: 9px; - } -} - .chart-container { flex: 1; position: relative; @@ -5967,12 +5970,6 @@ box-shadow: 0 20px 25px -5px rgba(166, 255, 234, 0.2); } -@media (min-width: 640px) { - .chart-badge-value { - font-size: 10px; - } -} - .chart-badge-line { width: 2px; height: 0.5rem; @@ -6034,15 +6031,15 @@ } .dashboard-last-updated { - font-size: 8px; + font-size: 12px; color: var(--color-text-gray-500); display: none; } -@media (min-width: 640px) { +@media (min-width: 768px) { .dashboard-last-updated { display: block; - font-size: 9px; + font-size: 12px; } } @@ -6112,19 +6109,12 @@ } .dashboard-section-title { - font-size: var(--text-sm); + font-size: 24px; font-weight: 600; color: var(--color-text-white); margin-bottom: 0.5rem; } -@media (min-width: 768px) { - .dashboard-section-title { - font-size: var(--text-base); - margin-bottom: 0.75rem; - } -} - /* Chart Legend Dual (for YoY comparison) */ .chart-legend-dual { display: flex; @@ -6189,7 +6179,7 @@ @media (min-width: 640px) { .platform-tab { padding: 0.5rem 1rem; - font-size: var(--text-sm); + /* font-size: var(--text-sm); */ gap: 0.5rem; } } @@ -6231,7 +6221,7 @@ padding: 0.375rem 0.875rem; background-color: transparent; color: var(--color-text-gray-400); - font-size: var(--text-sm); + font-size: 16px; white-space: nowrap; font-weight: 600; cursor: pointer; @@ -6334,30 +6324,12 @@ gap: 0.25rem; } -@media (min-width: 640px) { - .metric-card-value { - font-size: var(--text-2xl); - } -} - -@media (min-width: 768px) { - .metric-card-value { - font-size: 1.75rem; - } -} - .metric-card-unit { font-size: var(--text-xs); color: var(--color-text-gray-500); font-weight: 400; } -@media (min-width: 640px) { - .metric-card-unit { - font-size: var(--text-sm); - } -} - .metric-card-trend { display: flex; align-items: center; @@ -6366,12 +6338,6 @@ font-weight: 500; } -@media (min-width: 640px) { - .metric-card-trend { - font-size: var(--text-xs); - } -} - .metric-card-trend.up { color: var(--color-mint); } @@ -6394,9 +6360,10 @@ /* YoY Chart */ .yoy-chart-card { + min-width: 351px; background-color: var(--color-bg-card); border-radius: var(--radius-xl); - padding: 0.75rem; + padding: 0.5rem; border: 1px solid var(--color-border-white-5); box-shadow: var(--shadow-xl); margin-bottom: 0.75rem; @@ -6695,14 +6662,14 @@ @media (min-width: 768px) { .top-content-card { - padding: 1.5rem; + padding: 1rem; } } .top-content-list { display: flex; flex-direction: column; - gap: 0.75rem; + gap: 0.5rem; } .top-content-item { @@ -6768,7 +6735,8 @@ } .top-content-title { - font-size: var(--text-xs); + max-width: 215px; + font-size: 14px; font-weight: 600; color: var(--color-text-white); white-space: nowrap; @@ -6776,12 +6744,6 @@ text-overflow: ellipsis; } -@media (min-width: 640px) { - .top-content-title { - font-size: var(--text-sm); - } -} - .top-content-stats { display: flex; gap: 0.75rem; @@ -6791,31 +6753,19 @@ display: flex; align-items: center; gap: 0.25rem; - font-size: 10px; + font-size: 12px; color: var(--color-text-gray-400); } -@media (min-width: 640px) { - .top-content-stat { - font-size: var(--text-xs); - } -} - .top-content-stat svg { color: var(--color-text-gray-500); } .top-content-date { - font-size: 9px; + font-size: 12px; color: var(--color-text-gray-500); } -@media (min-width: 640px) { - .top-content-date { - font-size: 10px; - } -} - /* Audience Section */ .audience-section { margin-bottom: 0.75rem; @@ -6856,7 +6806,7 @@ } .audience-card-title { - font-size: var(--text-sm); + font-size: 20px; font-weight: 600; color: var(--color-text-gray-300); margin-bottom: 1rem; @@ -6876,7 +6826,7 @@ } .audience-bar-label { - font-size: var(--text-xs); + font-size: 14px; color: var(--color-text-gray-400); width: 60px; flex-shrink: 0; @@ -6898,7 +6848,7 @@ } .audience-bar-value { - font-size: var(--text-xs); + font-size: 14px; color: var(--color-text-white); width: 36px; text-align: right; @@ -6949,7 +6899,7 @@ display: flex; align-items: center; gap: 0.375rem; - font-size: var(--text-xs); + font-size: 14px; color: var(--color-text-gray-400); } @@ -7620,6 +7570,7 @@ align-items: center; gap: 1.25rem; flex-shrink: 0; + font-size: 14px; } .sound-column > *:not(.btn-generate-sound):not(.error-message-new):not(.status-message-new) { @@ -7674,7 +7625,7 @@ border: 1px solid rgba(255, 255, 255, 0.05); border-radius: 8px; color: var(--color-text-white); - font-size: var(--text-sm); + font-size: 14px; font-weight: 600; cursor: pointer; transition: all var(--transition-normal); @@ -7959,7 +7910,7 @@ background: transparent; border: none; color: var(--color-text-white); - font-size: var(--text-sm); + font-size: 16px; font-family: inherit; resize: none; outline: none; @@ -8097,7 +8048,7 @@ } /* Responsive Styles for Sound Studio */ -@media (max-width: 639px) { +@media (min-width: 768px) { .progress-indicator { width: 100%; } @@ -8108,7 +8059,7 @@ .sound-type-btn { padding: 0.75rem 0.5rem; - font-size: var(--text-xs); + font-size: 14px; } .genre-row { @@ -8117,7 +8068,7 @@ .genre-btn { padding: 0.5rem 0.75rem; - font-size: var(--text-xs); + font-size: 14px; } } @@ -8143,6 +8094,7 @@ flex: 1; width: auto; min-height: 0; + font-size: 14px; } .lyrics-column { @@ -9593,7 +9545,7 @@ } .social-posting-title { - font-size: 1.125rem; + font-size: 24px; font-weight: 600; color: #FFFFFF; margin: 0; @@ -9726,7 +9678,7 @@ } .social-posting-video-specs { - font-size: 0.75rem; + font-size: 14px; color: rgba(255, 255, 255, 0.5); margin: 0; } @@ -9739,7 +9691,7 @@ } .social-posting-label { - font-size: 0.8rem; + font-size: 16px; font-weight: 500; color: rgba(255, 255, 255, 0.8); } @@ -9757,7 +9709,7 @@ border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 8px; color: #FFFFFF; - font-size: 0.875rem; + font-size: 14px; font-family: 'Pretendard', sans-serif; transition: border-color 0.2s; } @@ -9836,7 +9788,7 @@ } .social-posting-radio .radio-label { - font-size: 0.85rem; + font-size: 14px; color: rgba(255, 255, 255, 0.8); } diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx index 93ea975..d0ae582 100644 --- a/src/components/Footer.tsx +++ b/src/components/Footer.tsx @@ -8,10 +8,11 @@ const Footer: React.FC = () => {