/* ===================================================== Completion Page Components ===================================================== */ /* Completion Page Title */ .completion-title { font-size: 1.75rem; font-weight: 600; color: #E5F1F2; line-height: 1.19; letter-spacing: -0.006em; margin: 0 0 1.5rem 0; text-align: center; padding: 0 1rem; } @media (min-width: 768px) { .completion-title { font-size: 2.5rem; margin-bottom: 2rem; } } /* Completion Container - wrapper for the two cards */ .completion-container { margin: 0 auto 1.5rem auto; max-width: 1400px; width: calc(100% - 4rem); display: flex; flex-direction: column; gap: 1.5rem; flex: 1; min-height: 0; overflow-y: auto; overflow-x: hidden; } @media (min-width: 1024px) { .completion-container { flex-direction: row; gap: 2rem; max-width: 1400px; overflow: hidden; } } @media (min-width: 1280px) { .completion-container { max-width: 1600px; } } @media (max-width: 480px) { .completion-container { width: calc(100% - 2rem); gap: 1.25rem; } } @media (min-width: 481px) and (max-width: 767px) { .completion-container { width: calc(100% - 3rem); } } /* Completion Columns */ .completion-column { display: flex; flex-direction: column; } .completion-column-left { width: 100%; min-width: 0; flex-shrink: 0; } .completion-column-right { width: 100%; flex-shrink: 0; } @media (min-width: 1024px) { .completion-column-left { flex: 1; width: auto; } .completion-column-right { width: 400px; } } @media (min-width: 1280px) { .completion-column-right { width: 450px; } } /* Video Preview Card & Sharing Card - uses asset-column base + card styling */ .video-preview-card, .sharing-card { background-color: #01393B; border-radius: 40px; padding: 1.5rem; border: none; box-shadow: none; overflow: hidden; display: flex; flex-direction: column; gap: 1.25rem; flex-shrink: 0; } @media (min-width: 768px) { .video-preview-card, .sharing-card { padding: 2rem; } } @media (min-width: 1024px) { .video-preview-card { flex-shrink: 1; flex: 1; min-height: 0; } .video-preview-card, .sharing-card { padding: 2.5rem; } } /* Completion Video Wrapper */ .completion-video-wrapper { display: flex; flex-direction: column; } @media (min-width: 1024px) { .completion-video-wrapper { flex: 1; min-height: 0; } } /* Video Container for Completion - always 16:9 aspect ratio (horizontal letterbox) */ .video-preview-card .video-container { position: relative; aspect-ratio: 16 / 9; width: 100%; max-width: 100%; margin: 0 auto; background-color: #000; } @media (min-width: 768px) { .video-preview-card .video-container { max-width: 100%; } } @media (min-width: 1024px) { .video-preview-card .video-container { max-width: 100%; } } /* Video Overlay */ .video-overlay { position: absolute; bottom: 0; left: 0; right: 0; background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.7) 100%); padding: 1.5rem; pointer-events: none; } .video-overlay-content { display: flex; flex-direction: column; gap: 0.5rem; } .video-overlay-title { font-size: 1.25rem; font-weight: 800; color: #FFFFFF; line-height: 1.3; letter-spacing: -0.006em; text-align: center; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3); margin: 0; } .video-overlay-logo { font-size: 0.375rem; font-weight: 400; color: rgba(255, 255, 255, 0.6); line-height: 1.3; letter-spacing: -0.006em; text-align: center; align-self: flex-end; } /* AI Optimization Section */ .ai-optimization-section { display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 0.75rem; padding: 1rem; background-color: #002224; border-radius: 8px; } @media (min-width: 768px) { .ai-optimization-section { flex-direction: row; gap: 1.25rem; } } .ai-optimization-title { font-size: 0.875rem; font-weight: 600; color: #94FBE0; line-height: 1.19; letter-spacing: -0.006em; margin: 0; flex-shrink: 0; } .ai-optimization-tags { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.75rem; } @media (min-width: 768px) { .ai-optimization-tags { gap: 1.25rem; justify-content: flex-start; } } .ai-tag { display: flex; align-items: center; gap: 0.5rem; height: 20px; } .ai-tag-dot { width: 6px; height: 6px; background-color: #94FBE0; border-radius: 50%; flex-shrink: 0; } .ai-tag-text { font-size: 0.875rem; font-weight: 400; color: #E5F1F2; line-height: 1.19; letter-spacing: -0.006em; } /* Sharing Card Layout */ .sharing-card { justify-content: space-between; } .sharing-content { flex: 1; min-height: 0; display: flex; flex-direction: column; gap: 1.25rem; } .sharing-actions { display: flex; flex-direction: column; gap: 0.75rem; flex-shrink: 0; } /* Social List New */ .social-list-new { display: flex; flex-direction: column; gap: 0.5rem; } .completion-social-card { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: 1rem; background-color: #002224; border-radius: 8px; cursor: pointer; transition: all var(--transition-normal); } .completion-social-card:hover:not(.disabled) { background-color: #01393B; } .completion-social-card.disabled { opacity: 0.5; cursor: not-allowed; } .completion-social-info { display: flex; align-items: center; gap: 1rem; } .completion-social-logo { width: 32px; height: 32px; object-fit: cover; object-position: center; flex-shrink: 0; border-radius: 4px; background-color: transparent; } .completion-social-name { font-size: 0.875rem; font-weight: 400; color: #FFFFFF; line-height: 1.19; letter-spacing: -0.006em; } .completion-social-email { font-size: 0.75rem; font-weight: 400; color: #94FBE0; line-height: 1.19; letter-spacing: -0.006em; } /* Social Card - Text Layout */ .completion-social-text { display: flex; flex-direction: column; gap: 0.25rem; } .completion-social-channel { font-size: 0.75rem; font-weight: 400; color: #94FBE0; line-height: 1.19; letter-spacing: -0.006em; } /* Connected Account Display */ .completion-social-thumbnail { width: 36px; height: 36px; border-radius: 50%; object-fit: cover; flex-shrink: 0; border: 2px solid #94FBE0; } .completion-social-channel-name { font-size: 0.875rem; font-weight: 600; color: #FFFFFF; line-height: 1.2; } .completion-social-platform { font-size: 0.7rem; font-weight: 400; color: rgba(255, 255, 255, 0.5); line-height: 1.2; text-transform: uppercase; letter-spacing: 0.05em; } /* Social Card States */ .completion-social-card.connected { border: 1px solid rgba(166, 255, 234, 0.3); background-color: rgba(0, 34, 36, 0.8); } .completion-social-card.selected { border: 1px solid #94FBE0; background-color: rgba(148, 251, 224, 0.1); } /* Social Card Status */ .completion-social-status { font-size: 0.75rem; font-weight: 500; padding: 0.25rem 0.75rem; border-radius: 9999px; white-space: nowrap; } .completion-social-status.connected { color: #94FBE0; background-color: rgba(148, 251, 224, 0.15); display: flex; align-items: center; gap: 0.25rem; } .completion-social-status.connecting { color: #fbbf24; background-color: rgba(251, 191, 36, 0.15); } .completion-social-status.not-connected { color: #9ca3af; background-color: rgba(156, 163, 175, 0.15); } /* Social Card Actions */ .completion-social-actions { display: flex; align-items: center; gap: 0.5rem; } .completion-social-disconnect { font-size: 0.75rem; font-weight: 500; color: #f87171; background: transparent; border: none; cursor: pointer; padding: 0.25rem 0.5rem; border-radius: 4px; transition: all var(--transition-normal); } .completion-social-disconnect:hover { background-color: rgba(248, 113, 113, 0.15); } /* Completion Buttons */ .btn-completion-deploy { width: 100%; padding: 0.625rem 2.5rem; background-color: #AE72F9; border: none; border-radius: var(--radius-full); color: #FFFFFF; font-size: 0.875rem; font-weight: 600; cursor: pointer; transition: all var(--transition-normal); line-height: 1.19; letter-spacing: -0.006em; height: 48px; } .btn-completion-deploy:hover:not(:disabled) { background-color: #9B5FE0; } .btn-completion-deploy:disabled { opacity: 0.5; cursor: not-allowed; } .btn-completion-download { width: 100%; padding: 0.625rem 2.5rem; background-color: transparent; border: 1px solid #AE72F9; border-radius: var(--radius-full); color: #FFFFFF; font-size: 0.875rem; font-weight: 600; cursor: pointer; transition: all var(--transition-normal); line-height: 1.19; letter-spacing: -0.006em; height: 48px; } .btn-completion-download:hover:not(:disabled) { border-color: #9B5FE0; background-color: rgba(174, 114, 249, 0.1); } .btn-completion-download:disabled { opacity: 0.5; cursor: not-allowed; } /* ===================================================== Completion v2 (피그마 디자인 기반) ===================================================== */ .comp2-page { height: 100%; background: var(--color-bg-darker); display: flex; flex-direction: column; overflow: hidden; } .comp2-header { padding: 8px 32px; height: 64px; display: flex; align-items: center; flex-shrink: 0; } .comp2-back-btn { display: flex; align-items: center; gap: 4px; background-color: #462E64; color: #CFABFB; font-size: 0.875rem; font-weight: 600; padding: 0 1.25rem 0 0.5rem; height: 36px; border: 1px solid #694596; border-radius: 999px; cursor: pointer; white-space: nowrap; transition: background-color 0.2s; line-height: 1.19; letter-spacing: -0.006em; } .comp2-back-btn:hover { background-color: #5a3a80; } .comp2-container { width: calc(100% - 64px); max-width: 1440px; margin: 16px auto; background: #01393B; border-radius: 24px; padding: 24px; display: flex; flex-direction: column; flex: 1; min-height: 0; overflow: hidden; } .comp2-title-row { padding: 10px; text-align: center; flex-shrink: 0; } .comp2-page-title { font-size: 30px; font-weight: 700; color: #FFFFFF; letter-spacing: -0.006em; line-height: 1.3; margin-bottom: 8px; } .comp2-page-subtitle { font-size: 16px; font-weight: 400; color: #9BCACC; line-height: 1.29; } .comp2-grid { display: flex; gap: 24px; flex: 1; min-height: 0; overflow: hidden; } /* 영상 섹션 */ .comp2-video-section { flex: 0 0 60%; display: flex; flex-direction: column; min-width: 0; overflow: hidden; } .comp2-video-wrapper { background: #01191A; border-radius: 16px; position: relative; overflow: hidden; width: 100%; flex: 1; min-height: 0; } .comp2-video-player { width: 100%; height: 100%; object-fit: contain; cursor: pointer; background: #01191A; } .comp2-video-placeholder { width: 100%; height: 100%; background: #01191A; } .comp2-video-loading, .comp2-video-error { width: 100%; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 20px; } .comp2-loading-text { color: #9BCACC; margin-top: 16px; } .comp2-error-icon { width: 64px; height: 64px; color: #E15252; margin-bottom: 16px; } .comp2-error-text { color: #9BCACC; margin-bottom: 16px; text-align: center; } .comp2-retry-btn { padding: 10px 20px; background: rgba(174, 114, 249, 0.36); border-radius: 8px; color: #CFABFB; font-size: 14px; font-weight: 600; cursor: pointer; transition: opacity 0.2s; } .comp2-retry-btn:hover { opacity: 0.85; } /* 영상 컨트롤 */ .comp2-video-controls { position: absolute; bottom: 0; left: 0; right: 0; background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.7) 100%); padding: 24px 24px 16px; display: flex; flex-direction: column; gap: 16px; transition: opacity 0.3s ease; } .comp2-video-controls.visible { opacity: 1; pointer-events: auto; } .comp2-video-controls.hidden { opacity: 0; pointer-events: none; } .comp2-progress-bar { width: 100%; height: 8px; background: #034A4D; border-radius: 999px; overflow: hidden; } .comp2-progress-fill { height: 100%; background: #E5F1F2; border-radius: 999px; transition: width 0.1s linear; } .comp2-controls-row { display: flex; align-items: center; gap: 32px; } .comp2-play-btn { width: 32px; height: 32px; color: #FFFFFF; cursor: pointer; flex-shrink: 0; } .comp2-volume-control { display: flex; align-items: center; gap: 8px; flex: 1; } .comp2-volume-control svg { width: 32px; height: 32px; color: #FFFFFF; flex-shrink: 0; } .comp2-volume-bar { flex: 1; height: 4px; background: #034A4D; border-radius: 999px; overflow: hidden; } .comp2-volume-fill { width: 40%; height: 100%; background: #E5F1F2; border-radius: 999px; } .comp2-time-display { display: flex; align-items: center; gap: 4px; font-size: 16px; font-weight: 400; line-height: 1.375; letter-spacing: -0.006em; } .comp2-time-current { color: #E5F1F2; } .comp2-time-divider { color: #9BCACC; } .comp2-time-total { color: #9BCACC; } /* 정보 섹션 */ .comp2-info-section { flex: 1; display: flex; flex-direction: column; gap: 8px; position: relative; min-height: 0; border-left: 3px solid #067C80; padding-left: 16px; } .comp2-info-header { display: flex; align-items: center; flex-shrink: 0; } .comp2-info-label { font-size: 16px; font-weight: 400; color: #9BCACC; line-height: 1.29; } .comp2-info-content { flex: 1; display: flex; flex-direction: column; gap: 8px; overflow-y: auto; min-height: 0; padding-right: 4px; } /* 스크롤바 스타일링 */ .comp2-info-content::-webkit-scrollbar { width: 4px; } .comp2-info-content::-webkit-scrollbar-track { background: transparent; } .comp2-info-content::-webkit-scrollbar-thumb { background: #067C80; border-radius: 999px; } .comp2-info-content::-webkit-scrollbar-thumb:hover { background: #088a8e; } .comp2-file-info { display: flex; flex-direction: column; gap: 2px; } .comp2-filename { font-size: 20px; font-weight: 700; color: #FFFFFF; letter-spacing: -0.006em; line-height: 1.3; } .comp2-filesize { font-size: 14px; font-weight: 400; color: #9BCACC; line-height: 1.29; } .comp2-divider { width: 100%; height: 1px; background: #046266; } .comp2-meta-grid { display: flex; flex-direction: column; gap: 8px; flex: 1; } .comp2-meta-item { display: flex; } .comp2-meta-label { font-size: 16px; font-weight: 400; color: #9BCACC; line-height: 1.29; } .comp2-meta-divider { width: 100%; height: 1px; background: #046266; } .comp2-lyrics-section { display: flex; flex-direction: column; gap: 4px; flex: 1; } .comp2-lyrics-text { font-size: 16px; font-weight: 400; color: #E5F1F2; line-height: 1.625; letter-spacing: -0.006em; white-space: pre-line; flex: 1; margin: 0; } .comp2-lyrics-paragraphs { display: flex; flex-direction: column; gap: 1rem; flex: 1; } .comp2-lyrics-para-section { display: flex; flex-direction: column; gap: 0.3rem; } .comp2-lyrics-tag { font-size: 14px; font-weight: 700; color: #379599; letter-spacing: 0.05em; } /* 소셜 연결 섹션 */ .comp2-social-connect-section { display: flex; flex-direction: column; gap: 8px; flex: 1; } .comp2-social-header { display: flex; gap: 4px; } .comp2-social-label { font-size: 14px; font-weight: 400; color: #E5F1F2; line-height: 1.29; } .comp2-required-mark { font-size: 14px; font-weight: 400; color: #E15252; line-height: 1.29; } .comp2-social-buttons { display: flex; flex-direction: column; gap: 12px; } .comp2-social-connect-btn { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 10px 20px; background: rgba(148, 251, 224, 0.11); border-radius: 16px; cursor: pointer; transition: opacity 0.2s; } .comp2-social-connect-btn:hover { opacity: 0.85; } .comp2-social-connect-btn svg { flex-shrink: 0; } .comp2-social-connect-btn span { font-size: 14px; font-weight: 600; color: #76C9B3; letter-spacing: -0.006em; line-height: 1.19; text-align: center; } .comp2-error-message { font-size: 14px; color: #E15252; margin-top: 8px; } /* 하단 버튼 */ .comp2-buttons { display: flex; gap: 8px; flex-shrink: 0; margin-top: auto; } .comp2-btn { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 8px 12px; flex: 1; height: 40px; border-radius: 8px; font-size: 14px; font-weight: 600; letter-spacing: -0.006em; line-height: 1.19; text-align: center; cursor: pointer; transition: opacity 0.2s; white-space: nowrap; } .comp2-btn-secondary { background: rgba(174, 114, 249, 0.36); color: #CFABFB; } .comp2-btn-secondary:hover:not(:disabled) { opacity: 0.85; } .comp2-btn-secondary:disabled { opacity: 0.5; cursor: not-allowed; } .comp2-btn-primary { background: #AE72F9; color: #FFFFFF; } .comp2-btn-primary:hover:not(:disabled) { opacity: 0.85; } .comp2-btn-primary:disabled { opacity: 0.5; cursor: not-allowed; } /* 반응형 */ @media (max-width: 1024px) { .comp2-container { width: calc(100% - 32px); margin: 16px; padding: 16px; overflow-y: auto; } .comp2-grid { flex-direction: column; gap: 16px; overflow: visible; flex: none; height: auto; min-height: auto; } .comp2-video-section { flex: none; width: 100%; } .comp2-video-wrapper { flex: none; height: auto; } .comp2-video-player { height: auto; } .comp2-info-section { flex: none; border-left: none; padding-left: 0; border-top: 3px solid #067C80; padding-top: 16px; } .comp2-info-content { flex: none; height: auto; overflow: visible; min-height: auto; } .comp2-buttons { flex-direction: row; margin-top: 16px; } } /* ===================================================== Analysis Result Page Components ===================================================== */ /* Analysis Page Wrapper - 전체 레이아웃 */ .analysis-page-wrapper { display: flex; width: 100%; height: 100vh; height: 100dvh; background-color: #002224; color: white; } /* Analysis Page Main - 스크롤 가능한 메인 영역 */ .analysis-page-main { flex: 1; overflow-y: auto; overflow-x: hidden; height: 100%; } /* Analysis Container - 콘텐츠 래퍼 */ .analysis-container { width: 100%; min-height: 100%; color: var(--color-text-white); display: flex; flex-direction: column; align-items: center; background-color: #002224; box-sizing: border-box; padding: 0 16px 120px 16px; /* 고정 버튼 영역 확보 */ } @media (min-width: 768px) { .analysis-container { padding: 0 32px 120px 32px; } } /* Header Area (Back Button + Title) */ .analysis-header-area { width: 100%; max-width: 1440px; padding: 8px 0; box-sizing: border-box; } /* Analysis Header */ .analysis-header { width: 100%; display: flex; flex-direction: column; align-items: center; text-align: center; padding: 24px 0; } .analysis-icon { color: var(--color-purple); margin-bottom: 12px; } .analysis-icon svg { width: 40px; height: 40px; } /* Analysis Grid - 모바일: 세로 배치, 데스크톱: 가로 배치 */ .analysis-grid { width: 100%; max-width: 1440px; display: flex; flex-direction: column; gap: 24px; box-sizing: border-box; } /* 데스크톱(1024px 이상)에서 가로 배치 */ @media (min-width: 1024px) { .analysis-grid { flex-direction: row; align-items: flex-start; gap: 40px; padding: 0 200px; } } /* Brand Identity Card - 왼쪽 */ .brand-identity-card { background-color: #01393B; border-radius: 24px; padding: 24px; display: flex; flex-direction: column; gap: 24px; border: none; box-shadow: none; width: 100%; box-sizing: border-box; } @media (min-width: 768px) { .brand-identity-card { border-radius: 40px; padding: 32px; gap: 32px; } } @media (min-width: 1024px) { .brand-identity-card { flex: 1; } } .brand-header { display: flex; align-items: center; gap: 8px; } .brand-content { display: flex; flex-direction: column; gap: 16px; } .brand-name { font-size: 20px; font-weight: 700; color: #E5F1F2; letter-spacing: -0.006em; margin: 0; line-height: 1.2; } @media (min-width: 768px) { .brand-name { font-size: 24px; } } .brand-location { color: #6AB0B3; font-size: 14px; letter-spacing: -0.006em; margin: 0; line-height: 1.2; } .brand-subtitle { color: #6AB0B3; font-size: 14px; font-weight: 400; letter-spacing: -0.006em; } .brand-info { display: flex; flex-direction: row; align-items: center; gap: 4px; } /* Report Content */ .report-content { color: #CEE5E6; font-family: 'Pretendard', sans-serif; font-size: 15px; font-weight: 500; line-height: 1.5; letter-spacing: -0.006em; } @media (min-width: 768px) { .report-content { font-size: 17px; line-height: 1.45; } } /* Right Side Cards Container */ .analysis-cards-column { display: flex; flex-direction: column; gap: 24px; width: 100%; } /* 데스크톱(1024px 이상)에서만 sticky 적용 */ @media (min-width: 1024px) { .analysis-cards-column { flex: 1; position: sticky; top: 40px; align-self: flex-start; } } /* Feature Card for Analysis Page */ .analysis-cards-column .feature-card { background-color: #01393B; border-radius: 24px; padding: 24px; border: none; box-shadow: none; display: flex; flex-direction: column; gap: 24px; width: 100%; box-sizing: border-box; } @media (min-width: 768px) { .analysis-cards-column .feature-card { border-radius: 40px; padding: 32px; gap: 32px; } } /* Selling Points Card */ .selling-points-card { flex: 1; } /* Selling Points Grid - 모바일: 1열, 태블릿 이상: 2열 */ .selling-points-grid { display: grid; grid-template-columns: 1fr; gap: 8px; } @media (min-width: 640px) { .selling-points-grid { grid-template-columns: 1fr 1fr; gap: 0; } } /* Selling Point Item */ .selling-point-item { background-color: #034A4D; padding: 20px 16px; display: flex; flex-direction: column; gap: 12px; border-radius: 16px; } @media (min-width: 640px) { .selling-point-item { padding: 24px 20px; gap: 16px; border-radius: 0; } /* 첫 번째 행 왼쪽 */ .selling-point-item:nth-child(1) { border-radius: 16px 0 0 0; } /* 첫 번째 행 오른쪽 */ .selling-point-item:nth-child(2) { border-radius: 0 16px 0 0; } /* 마지막 행 왼쪽 */ .selling-point-item:nth-last-child(2):nth-child(odd) { border-radius: 0 0 0 16px; } /* 마지막 행 오른쪽 */ .selling-point-item:nth-last-child(1):nth-child(even) { border-radius: 0 0 16px 0; } } .selling-point-title { font-family: 'Pretendard', sans-serif; font-size: 14px; font-weight: 600; color: #6AB0B3; letter-spacing: -0.006em; line-height: 1; } .selling-point-content { display: flex; flex-direction: column; gap: 8px; } .selling-point-content p { font-family: 'Pretendard', sans-serif; font-size: 15px; font-weight: 500; color: #CEE5E6; letter-spacing: -0.006em; line-height: 1.2; margin: 0; } @media (min-width: 768px) { .selling-point-content p { font-size: 17px; line-height: 1; } } /* Keywords Card */ .keywords-card { flex-shrink: 0; } /* Tags Wrapper */ .tags-wrapper { display: flex; flex-wrap: wrap; gap: 8px; align-content: flex-start; } /* Feature Tag - 피그마: pill 형태 */ .feature-tag { padding: 8px 16px; background-color: #034A4D; border-radius: 999px; font-family: 'Pretendard', sans-serif; font-size: 15px; font-weight: 500; color: #CEE5E6; letter-spacing: -0.006em; border: none; } @media (min-width: 768px) { .feature-tag { font-size: 17px; } } /* Analysis Bottom Button - 화면 하단 고정 */ .analysis-bottom { position: fixed; bottom: 0; left: 0; right: 0; padding: 20px 16px; display: flex; justify-content: center; align-items: center; box-sizing: border-box; background: linear-gradient(to top, #002224 70%, transparent); z-index: 100; } @media (min-width: 768px) { .analysis-bottom { padding: 24px 32px; } } .analysis-bottom .btn-primary { width: 160px; height: 48px; padding: 10px 24px; background-color: #AE72F9; border-radius: 999px; font-family: 'Pretendard', sans-serif; font-size: 14px; font-weight: 600; color: #FFFFFF; letter-spacing: -0.006em; border: none; cursor: pointer; transition: background-color 0.2s ease; box-shadow: 0 4px 20px rgba(174, 114, 249, 0.4); } .analysis-bottom .btn-primary:hover { background-color: #9B5DE5; } /* ===================================================== Brand Intelligence Page Typography (3단계 체계) - Title: 24px (섹션 제목) - Body: 16px (본문) - Label: 14px (라벨, 태그) ===================================================== */ /* 페이지 헤더 */ .bi-page-header { text-align: center; margin-bottom: 48px; padding: 0 16px; } .bi-page-icon { display: flex; justify-content: center; margin-bottom: 20px; } .bi-star-icon { width: 48px; height: 48px; animation: twinkle 2.5s ease-in-out infinite; } @keyframes twinkle { 0%, 100% { opacity: 0.7; transform: scale(1); filter: drop-shadow(0 0 8px rgba(45, 212, 191, 0.4)); } 50% { opacity: 1; transform: scale(1.05); filter: drop-shadow(0 0 16px rgba(45, 212, 191, 0.7)); } } .bi-page-title { font-size: 32px; font-weight: 700; color: #FFFFFF; margin-bottom: 16px; letter-spacing: -0.02em; } .bi-page-desc { font-size: 16px; color: #6AB0B3; line-height: 1.6; max-width: 600px; margin: 0 auto; } .bi-page-desc .highlight { color: #2dd4bf; font-weight: 600; } /* 카드 공통 스타일 */ .bi-card { background-color: #01393B; border-radius: 24px; padding: 32px; border: 1px solid rgba(106, 176, 179, 0.1); } .bi-card-title { font-size: 18px; font-weight: 700; color: #FFFFFF; margin-bottom: 24px; } /* 섹션 라벨 */ .bi-section-label { font-size: 18px; font-weight: 700; color: #FFFFFF; margin-bottom: 8px; } /* 브랜드명 (대형) */ .bi-brand-name { font-size: 32px; font-weight: 700; color: #FFFFFF; margin-bottom: 12px; letter-spacing: -0.02em; } /* 주소/위치 정보 */ .bi-location { font-size: 16px; color: #6AB0B3; line-height: 1.5; display: flex; align-items: flex-start; gap: 8px; } .bi-location svg { flex-shrink: 0; margin-top: 2px; } /* 본문 텍스트 */ .bi-body-text { font-size: 16px; color: rgba(255, 255, 255, 0.9); line-height: 1.7; } /* 서브 섹션 제목 */ .bi-subsection-title { font-size: 14px; font-weight: 600; color: #2dd4bf; margin-bottom: 8px; } /* 값/내용 강조 */ .bi-value { font-size: 16px; font-weight: 600; color: #FFFFFF; line-height: 1.5; } .bi-value-large { font-size: 24px; font-weight: 700; color: #FFFFFF; line-height: 1.4; } /* 내부 카드/박스 */ .bi-inner-box { background-color: rgba(0, 34, 36, 0.5); border-radius: 16px; padding: 20px; border: 1px solid rgba(255, 255, 255, 0.05); } .bi-inner-box-accent { background: linear-gradient(to right, rgba(0, 34, 36, 0.5), rgba(1, 57, 59, 0.8)); border-left: 4px solid #2dd4bf; } /* 태그/뱃지 */ .bi-tag { font-size: 14px; padding: 6px 12px; background-color: rgba(45, 212, 191, 0.1); color: #2dd4bf; border-radius: 6px; font-weight: 500; } .bi-tag-outline { font-size: 16px; padding: 10px 20px; background-color: transparent; color: #FFFFFF; border: 1px solid rgba(106, 176, 179, 0.3); border-radius: 100px; } .bi-tag-outline:hover { border-color: rgba(45, 212, 191, 0.5); } /* USP 카드 */ .bi-usp-top { background: linear-gradient(to right, rgba(45, 212, 191, 0.1), rgba(174, 114, 249, 0.1)); border: 1px solid rgba(45, 212, 191, 0.3); border-radius: 16px; padding: 24px; margin-bottom: 24px; } .bi-usp-item { background-color: rgba(0, 34, 36, 0.4); border: 1px solid rgba(255, 255, 255, 0.05); border-radius: 16px; padding: 20px; } .bi-usp-category { font-size: 13px; font-weight: 500; color: #6AB0B3; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 8px; } .bi-usp-category-accent { color: #2dd4bf; } .bi-usp-description { font-size: 15px; font-weight: 400; color: rgba(255, 255, 255, 0.7); line-height: 1.5; } .bi-usp-badge { font-size: 14px; padding: 4px 12px; background-color: rgba(45, 212, 191, 0.2); color: #2dd4bf; border-radius: 4px; font-weight: 600; } .bi-usp-english-category { font-size: 13px; font-weight: 500; color: #6AB0B3; text-transform: uppercase; letter-spacing: 0.05em; } .bi-usp-korean-category { font-size: 20px; font-weight: 700; color: #FFFFFF; margin-bottom: 6px; } .bi-usp-score { font-size: 24px; font-weight: 700; color: #6AB0B3; } /* 페르소나 카드 */ .bi-persona-name { font-size: 16px; font-weight: 700; color: #FFFFFF; margin-bottom: 4px; } .bi-persona-age { font-size: 14px; color: #6AB0B3; } .bi-persona-trigger { font-size: 14px; color: rgba(255, 255, 255, 0.7); line-height: 1.5; border-top: 1px solid rgba(255, 255, 255, 0.05); padding-top: 12px; margin-top: 12px; } .bi-persona-trigger strong { color: #2dd4bf; font-weight: 600; } /* 레이더 차트 라벨 */ .bi-chart-label { font-size: 14px; fill: rgba(255, 255, 255, 0.9); font-weight: 600; } .bi-chart-sublabel { font-size: 13px; fill: rgba(255, 255, 255, 0.5); font-weight: 500; } /* 반응형 */ @media (min-width: 768px) { .bi-page-title { font-size: 40px; } .bi-page-desc { font-size: 18px; } .bi-brand-name { font-size: 36px; } } /* ===================================================== Brand Intelligence v2 ===================================================== */ .bi2-page { display: flex; width: 100%; min-height: 100vh; padding-bottom: 100px; flex-direction: column; align-items: center; background: linear-gradient(to bottom, #002224, #01191a); color: #E5F1F2; font-family: 'Pretendard', sans-serif; overflow-x: auto; } /* 헤더 */ .bi2-header { position: fixed; top: 0; left: 0; right: 0; display: flex; align-items: center; justify-content: flex-start; padding: 8px 1rem; height: 64px; z-index: 30; } @media (min-width: 768px) { .bi2-header { padding: 8px 2rem; } body:has(.sidebar.expanded) .bi2-header { left: 15rem; } body:has(.sidebar.collapsed) .bi2-header { left: 5rem; } } .bi2-back-btn { display: flex; align-items: center; gap: 4px; padding: 8px 20px 8px 8px; background: #462E64; border: 1px solid #694596; border-radius: 999px; color: #CFABFB; font-size: 14px; font-weight: 600; cursor: pointer; transition: opacity 0.2s; letter-spacing: -0.006em; } .bi2-back-btn:hover { opacity: 0.85; } /* 타이틀 영역 */ .bi2-page-title-section { display: flex; max-width: 1440px; padding: 50px 16px; flex-direction: column; justify-content: center; align-items: center; gap: 24px; 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; } .bi2-title-icon { width: 80px; height: 80px; } .bi2-star-icon { width: 80px; height: 80px; aspect-ratio: 1/1; animation: twinkle 2.5s ease-in-out infinite; } .bi2-title-text { display: flex; flex-direction: column; align-items: center; gap: 20px; align-self: stretch; } .bi2-main-title { 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: 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; padding: 68px 32px 112px 32px; flex-direction: column; justify-content: center; align-items: flex-start; gap: 88px; align-self: stretch; margin: 0 auto; } /* 매장 헤더 */ .bi2-store-header { display: flex; flex-direction: column; gap: 4px; } .bi2-store-name { 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 { 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; align-items: flex-start; gap: 20px; align-self: stretch; } .bi2-section-title { 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; } /* 브랜드 정체성 카드 */ .bi2-identity-card { background: #034245; border: 1px solid #94FBE0; border-radius: 20px; padding: 22px 24px; display: flex; flex-direction: column; gap: 22px; box-shadow: 0 0 40px rgba(148, 251, 224, 0.1); } .bi2-identity-top { display: flex; flex-direction: column; gap: 16px; } .bi2-identity-core { display: flex; flex-direction: column; gap: 4px; } .bi2-label-sm { 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; line-height: 130%; /* 31.2px */ letter-spacing: -0.144px; } .bi2-category-text { 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 { width: 100%; height: 1px; background: #067C80; } .bi2-identity-bottom { display: flex; gap: 40px; } .bi2-identity-col { flex: 1; display: flex; flex-direction: column; gap: 8px; } .bi2-body-text { color: var(--Color-teal-100, #CEE5E6); font-family: Pretendard; font-size: 18px; font-style: normal; font-weight: 400; line-height: 160%; /* 28.8px */ letter-spacing: -0.108px; } /* 셀링 포인트 카드 */ .bi2-selling-card { display: flex; padding: 16px 20px; justify-content: center; align-items: center; gap: 100px; align-self: stretch; border-radius: 20px; border: 1px solid var(--Color-teal-700, #034A4D); background: var(--Color-teal-750, #01393B); } .bi2-selling-chart { flex-shrink: 0; } .bi2-radar-container { display: flex; justify-content: center; align-items: center; } @media (max-width: 768px) { .bi2-radar-container svg { width: min(95vw, 440px) !important; height: min(95vw, 360px) !important; } .bi2-radar-label-text { display: none; } } .bi2-selling-list { display: flex; flex-direction: column; gap: 24px; } .bi2-selling-item { display: flex; align-items: center; gap: 16px; } .bi2-rank-badge { width: 20px; height: 20px; min-width: 20px; border-radius: 4px; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 600; letter-spacing: -0.006em; background: #206764; color: #94FBE0; } .bi2-rank-badge.top { background: #94FBE0; color: #002224; } .bi2-selling-item-text { display: flex; align-items: center; gap: 8px; } .bi2-selling-name { font-size: 20px; font-weight: 600; color: #E5F1F2; letter-spacing: -0.006em; line-height: 1.375; } .bi2-selling-desc { font-size: 14px; font-weight: 600; color: #9BCACC; letter-spacing: -0.006em; line-height: 1.29; } /* 고객 유형 카드 */ .bi2-persona-grid { display: flex; align-items: stretch; gap: 16px; width: 100%; } .bi2-persona-card { 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; padding-bottom: 8px; flex-direction: column; align-items: flex-start; gap: 4px; align-self: stretch; } .bi2-persona-info { display: flex; align-items: baseline; gap: 6px; } .bi2-persona-name { color: var(--Color-teal-50, #E5F1F2); font-family: Pretendard; font-size: 20px; font-style: normal; font-weight: 700; 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-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-style: normal; font-weight: 600; line-height: 18px; /* 128.571% */ } .bi2-persona-divider { width: 100%; height: 1px; background: #067C80; } .bi2-persona-detail { display: flex; gap: 16px; padding: 0 4px; } .bi2-persona-detail.grow { 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-style: normal; font-weight: 600; line-height: 18px; /* 128.571% */ } .bi2-persona-detail-text { 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; } /* 추천 타겟 키워드 */ .bi2-keyword-header { display: flex; flex-direction: column; gap: 8px; } .bi2-keyword-subtitle { 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; align-items: flex-start; align-content: flex-start; gap: 8px; align-self: stretch; flex-wrap: wrap; } .bi2-keyword-pill { display: flex; align-items: center; justify-content: center; padding: 8px 16px; background: #01393B; border-radius: 999px; font-size: 20px; font-weight: 600; color: #E5F1F2; letter-spacing: -0.006em; line-height: 1.375; } /* 하단 고정 버튼 */ .bi2-bottom-button-container { position: fixed; bottom: 32px; left: 0; right: 0; display: flex; justify-content: center; z-index: 50; pointer-events: none; } @media (min-width: 768px) { body:has(.sidebar.expanded) .bi2-bottom-button-container { left: 15rem; } body:has(.sidebar.collapsed) .bi2-bottom-button-container { left: 5rem; } } .bi2-generate-btn { pointer-events: auto; display: flex; align-items: center; gap: 8px; padding: 12px 48px; background: #A65EFF; color: #FFFFFF; font-size: 16px; font-weight: 700; border: none; border-radius: 999px; cursor: pointer; box-shadow: 0 4px 24px rgba(174, 114, 249, 0.4); transition: background-color 0.2s, transform 0.2s; } .bi2-generate-btn:hover { background: #8B3FE8; transform: scale(1.05); } /* 반응형 – 태블릿/모바일 (≤768px) */ @media (max-width: 768px) { .bi2-page { padding-bottom: 100px; } .bi2-main-container { min-width: unset; margin: 0 16px; padding: 24px 0px 80px; gap: 64px; border-radius: 24px; } .bi2-selling-card { flex-direction: column; gap: 32px; } .bi2-persona-grid { display: flex; flex-direction: column; align-items: flex-start; gap: 20px; align-self: stretch; } .bi2-identity-bottom { flex-direction: column; gap: 24px; } .bi2-main-title { 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: 32px; } .bi2-selling-name { font-size: 16px; } .bi2-keyword-pill { font-size: 16px; } } /* ===================================================== URL Input Content (GenerationFlow 내 URL 입력 단계) ===================================================== */ .url-input-container { width: 100%; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; background-color: var(--color-bg-darker); color: var(--color-text-white); padding: 80px 1rem 100px; position: relative; overflow: hidden; box-sizing: border-box; } .url-input-content { display: flex; flex-direction: column; align-items: center; z-index: 20; position: relative; margin-top: 50px; width: 100%; max-width: 375px; } .url-input-icon { color: #AE72F9; margin-bottom: 24px; } .url-input-logo { margin-bottom: 1rem; } .url-input-logo img { width: 350px; max-width: 100%; height: auto; } @media (min-width: 640px) { .url-input-logo img { width: 400px; } } @media (min-width: 768px) { .url-input-logo img { width: 500px; } } @media (min-width: 1024px) { .url-input-logo img { width: 554px; } } .url-input-title { font-family: 'Pretendard', sans-serif; font-size: 40px; font-weight: 600; color: #E5F1F2; letter-spacing: -0.006em; margin: 0 0 8px 0; line-height: 1.2; } .url-input-subtitle { font-family: 'Pretendard', sans-serif; font-size: 14px; font-weight: 400; color: #9BCACC; letter-spacing: -0.006em; margin: 0 0 40px 0; } .url-input-form { width: 100%; display: flex; flex-direction: column; gap: 10px; } .url-input-wrapper { display: flex; align-items: stretch; width: 100%; background-color: #01393B; border: 1px solid #034A4D; border-radius: 12px; overflow: visible; position: relative; } .url-input-field { flex: 1; width: 100%; padding: 16px 20px; background-color: transparent; border: none; font-family: 'Pretendard', sans-serif; font-size: 16px; color: #E5F1F2; outline: none; text-align: left; } .url-input-field::placeholder { color: #6AB0B3; } .url-input-button { margin: auto; max-width: 400px; width: 100%; padding: 11px 16px; border-radius: 12px; background-color: #AE72F9; color: #ffffff; font-weight: 600; font-size: 16px; letter-spacing: -0.006em; box-shadow: 0px 4px 24px 0px rgba(174, 114, 249, 0.4); transition: all var(--transition-normal); border: none; cursor: pointer; animation: button-glow 1.5s ease-in-out infinite; } .url-input-button:hover:not(:disabled) { background-color: #9B5DE5; } .url-input-button:disabled { background-color: #4A5568; cursor: not-allowed; } .url-input-manual-button { margin: auto; max-width: 400px; width: 100%; padding: 11px 16px; border-radius: 12px; border: 1px solid rgba(155, 202, 204, 0.35); background: transparent; color: rgba(155, 202, 204, 0.8); font-size: 14px; font-weight: 500; cursor: pointer; transition: all var(--transition-normal); } .url-input-manual-button:hover { border-color: #9BCACC; color: #9BCACC; background: rgba(155, 202, 204, 0.06); } .url-input-error { color: #F56565; font-family: 'Pretendard', sans-serif; font-size: 14px; margin: 0; text-align: left; } .url-input-guide { font-family: 'Pretendard', sans-serif; font-size: 14px; color: #6AB0B3; margin: 0 0 10px; white-space: pre-line; } /* URL Input Dropdown */ .url-input-dropdown-container { position: relative; flex-shrink: 0; width: auto; } .url-input-dropdown-trigger { display: flex; align-items: center; gap: 8px; padding: 16px 16px; background-color: transparent; border: none; font-family: 'Pretendard', sans-serif; font-size: 14px; color: #E5F1F2; cursor: pointer; white-space: nowrap; transition: background-color 0.2s ease; } .url-input-dropdown-trigger:hover { background-color: rgba(255, 255, 255, 0.05); } .url-input-dropdown-arrow { transition: transform 0.2s ease; } .url-input-dropdown-arrow.open { transform: rotate(180deg); } .url-input-dropdown-menu { position: absolute; top: calc(100% + 4px); left: 0; min-width: 100%; background-color: #01393B; border: 1px solid #034A4D; border-radius: 12px; overflow: hidden; z-index: 100; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); } .url-input-dropdown-item { display: block; width: 100%; padding: 12px 16px; background: none; border: none; font-family: 'Pretendard', sans-serif; font-size: 14px; color: #9BCACC; text-align: left; cursor: pointer; transition: all 0.2s ease; } .url-input-dropdown-item:hover { background-color: #034A4D; color: #E5F1F2; } .url-input-dropdown-item.active { background-color: #034A4D; color: #94FBE0; } /* URL Input Autocomplete (Dashboard) */ .url-input-field-container { position: relative; flex: 1; display: flex; } .url-input-autocomplete-dropdown { position: absolute; top: calc(100% + 4px); left: 0; right: 0; background-color: #01393B; border: 1px solid rgba(148, 251, 224, 0.2); border-radius: 12px; max-height: 300px; overflow-y: auto; z-index: 100; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4); } .url-input-autocomplete-loading { padding: 16px; text-align: center; color: rgba(255, 255, 255, 0.6); font-size: 14px; } .url-input-autocomplete-item { display: block; width: 100%; padding: 12px 16px; background: transparent; border: none; border-bottom: 1px solid rgba(148, 251, 224, 0.1); text-align: left; cursor: pointer; transition: background-color 0.2s ease; } .url-input-autocomplete-item:last-child { border-bottom: none; } .url-input-autocomplete-item:hover, .url-input-autocomplete-item.highlighted { background-color: rgba(148, 251, 224, 0.1); } .url-input-autocomplete-title { font-size: 14px; font-weight: 500; color: #E5F1F2; margin-bottom: 4px; } .url-input-autocomplete-title b { color: #94FBE0; font-weight: 600; } .url-input-autocomplete-address { font-size: 12px; color: rgba(255, 255, 255, 0.5); } /* ===================================================== Wizard Stepper (단계 인디케이터) .wizard-step은 노드 너비(2rem) 고정. 라벨은 absolute로 항상 노드 정중앙 아래에 위치. 선은 flex:1로 간격 채움. ===================================================== */ .wizard-stepper { display: flex; align-items: flex-start; padding: 2rem; /* 하단: absolute 라벨 공간 */ flex-shrink: 0; width: 100%; max-width: 560px; margin: 0 auto 0; box-sizing: border-box; } @media (max-width: 1100px) { .wizard-stepper { margin: 50px auto 0; } } /* 노드 셀: 노드 너비와 동일한 2rem 고정. 라벨은 이 밖으로 넘침 */ .wizard-step { flex: none; width: 2rem; position: relative; display: flex; justify-content: center; z-index: 1; } /* 연결선: 노드 사이 남은 공간을 flex:1로 채움 */ .wizard-step-line { flex: 1; height: 1.5px; background-color: rgba(255, 255, 255, 0.15); margin-top: calc(1rem - 0.75px); /* 2rem 노드의 수직 중심에 정렬 */ transition: background-color 0.3s; } .wizard-step-line.done { background-color: var(--color-mint, #a6ffea); opacity: 0.8; } /* 노드 (원형 번호/체크) */ .wizard-stepper-node { width: 2rem; height: 2rem; flex-shrink: 0; border-radius: var(--radius-full); display: flex; align-items: center; justify-content: center; font-size: 16px; font-weight: 600; transition: background-color 0.3s, box-shadow 0.3s, color 0.3s; } .wizard-step.pending .wizard-stepper-node { background-color: rgba(255, 255, 255, 0.08); color: rgba(255, 255, 255, 0.35); border: 1.5px solid rgba(255, 255, 255, 0.15); } .wizard-step.current .wizard-stepper-node { background-color: transparent; color: var(--color-mint, #a6ffea); border: 2px solid var(--color-mint, #a6ffea); box-shadow: 0 0 10px rgba(166, 255, 234, 0.45); } .wizard-step.done .wizard-stepper-node { background-color: var(--color-mint, #a6ffea); color: #002224; border: none; } /* 단계 라벨: 노드 셀 absolute로 항상 노드 중심 아래 정렬 */ .wizard-stepper-label { position: absolute; top: calc(2rem + 0.5rem); left: 50%; transform: translateX(-50%); font-size: 16px; font-weight: 400; color: rgba(255, 255, 255, 0.35); white-space: nowrap; text-align: center; transition: color 0.3s, font-weight 0.3s; } .wizard-step.current .wizard-stepper-label { color: var(--color-mint, #a6ffea); font-weight: 600; } .wizard-step.done .wizard-stepper-label { color: rgba(255, 255, 255, 0.55); } /* 모바일 반응형 */ @media (max-width: 480px) { .wizard-stepper { padding: 2rem; max-width: 100%; } .wizard-stepper-node { width: 1.625rem; height: 1.625rem; font-size: 16px; } .wizard-step { width: 1.625rem; } .wizard-step-line { margin-top: calc(0.8125rem - 0.75px); } .wizard-stepper-label { font-size: 16px; top: calc(1.625rem + 0.4rem); } }