<!DOCTYPE html>

<html lang="ko">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title data-i18n="appTitle">AI 의상 컬러 분석</title>


    <!-- SEO Meta Tags -->

    <meta name="description" data-i18n="metaDescription" content="AI 기반 의상 컬러 분석 및 스타일 추천 서비스. 사진을 업로드하고 개인화된 패션 인사이트를 받아보세요.">

    <meta name="keywords" data-i18n="metaKeywords" content="AI, 의상 분석, 컬러 조합, 스타일 추천, 패션, 퍼스널 컬러, 옷 코디, 날씨별 추천, 다크 모드, 다국어 지원">


    <!-- Open Graph / Facebook / KakaoTalk Meta Tags -->

    <meta property="og:type" content="website">

    <meta property="og:url" content="https://yourwebsite.netlify.app/"> <!-- Replace with your actual Netlify URL -->

    <meta property="og:title" data-i18n="ogTitle" content="AI 의상 컬러 분석 - 나만의 스타일을 찾아보세요">

    <meta property="og:description" data-i18n="ogDescription" content="AI 기반 의상 컬러 분석 및 스타일 추천 서비스. 사진을 업로드하고 개인화된 패션 인사이트를 받아보세요.">

    <meta property="og:image" content="https://placehold.co/1200x630/E0F2F7/3B82F6?text=AI+Fashion+Analyzer"> <!-- Placeholder image, replace with your actual app preview image -->

    <meta property="og:locale" data-i18n="ogLocale" content="ko_KR">


    <!-- Twitter Card Meta Tags -->

    <meta name="twitter:card" content="summary_large_image">

    <meta name="twitter:url" content="https://yourwebsite.netlify.app/"> <!-- Replace with your actual Netlify URL -->

    <meta name="twitter:title" data-i18n="twitterTitle" content="AI 의상 컬러 분석 - 나만의 스타일을 찾아보세요">

    <meta name="twitter:description" data-i18n="twitterDescription" content="AI 기반 의상 컬러 분석 및 스타일 추천 서비스. 사진을 업로드하고 개인화된 패션 인사이트를 받아보세요.">

    <meta name="twitter:image" content="https://placehold.co/1200x675/E0F2F7/3B82F6?text=AI+Fashion+Analyzer"> <!-- Placeholder image, replace with your actual app preview image -->


    <script src="https://cdn.tailwindcss.com"></script>

    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>

    <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700&display=swap" rel="stylesheet">

    

    <!-- Chosen Palette: Refreshing Summer Blues & Greens -->

    <!-- Application Structure Plan: 이 애플리케이션은 사용자의 행동 흐름에 따라 3단계(업로드 -> 분석 중 -> 결과 확인)로 구성된 단일 페이지 구조를 가집니다. 사용자가 '사진 업로드'라는 명확한 행동 유도(CTA)를 통해 프로세스를 시작하면, 로딩 애니메이션으로 AI 분석 과정을 시각적으로 보여주어 기대감을 형성합니다. 결과 페이지는 다단 그리드 레이아웃을 사용하여 사용자의 원본 사진, AI 분석 점수, 색상 팔레트, 개선 제안, 추천 조합, 날씨 기반 제안 등 다양한 정보를 한눈에 파악하면서도 각 섹션이 명확히 구분되도록 설계했습니다. 이러한 구조는 사용자가 자신의 스타일에 대한 분석 결과를 체계적으로 이해하고, 대안을 탐색하는 과정을 직관적이고 논리적으로 따라갈 수 있도록 돕기 위해 선택되었습니다. -->

    <!-- Visualization & Content Choices: 

        - Report Info: 컬러 조합 평점 -> Goal: 정보 전달 -> Viz/Presentation: 도넛 차트 -> Interaction: 없음(정적 표시) -> Justification: 핵심적인 평점을 빠르고 시각적으로 전달하는 데 효과적입니다. -> Library/Method: Chart.js

        - Report Info: 식별된 색상 조합 -> Goal: 정보 전달 -> Viz/Presentation: 색상 견본(div) -> Interaction: 없음 -> Justification: 분석의 기반이 된 색상 정보를 명확하고 직접적으로 보여줍니다. -> Library/HTML/CSS

        - Report Info: 추천 색상 조합 -> Goal: 비교/탐색 -> Viz/Presentation: 클릭 가능한 색상 견본 -> Interaction: 클릭 시 해당 조합에 대한 설명 텍스트 업데이트 -> Justification: 여러 대안을 UI를 복잡하게 만들지 않으면서 사용자가 능동적으로 탐색하도록 유도합니다. -> Library/HTML/CSS/JS

        - Report Info: 날씨 기반 추천 -> Goal: 정보 전달/탐색 -> Viz/Presentation: 텍스트 및 아이콘, 색상 견본 -> Interaction: 없음 -> Justification: 현재 상황(날씨)에 맞는 실용적이고 맥락적인 정보를 제공합니다. -> Library/HTML/CSS

    -->

    <!-- CONFIRMATION: NO SVG graphics used. NO Mermaid JS used. -->


    <style>

        :root {

            /* Light Mode Colors */

            --bg-color: #F8FAFC;

            --text-color: #334155;

            --card-bg: #FFFFFF;

            --card-border: #E0F2F7;

            --card-shadow: rgba(0,0,0,0.08);

            --primary-button-bg: #60A5FA;

            --primary-button-hover-bg: #3B82F6;

            --secondary-button-bg: #A7F3D0;

            --secondary-button-text: #047857;

            --secondary-button-hover-bg: #6EE7B7;

            --dropzone-border: #CBD5E1;

            --dropzone-hover-border: #60A5FA;

            --dropzone-hover-bg: #E0F2F7;

            --modal-bg: #FFFFFF;

            --modal-text: #334155;

            --recommendation-text-bg: #DBEAFE; /* blue-50 */

            --recommendation-text-color: #1E40AF; /* blue-800 */

            --chart-doughnut-fill: #60A5FA; /* Sky Blue */

            --chart-doughnut-empty: #E0F2F7; /* Light Sky Blue */

        }


        body.dark {

            /* Dark Mode Colors */

            --bg-color: #1A202C; /* Darker background */

            --text-color: #E2E8F0; /* Lighter text */

            --card-bg: #2D3748; /* Darker card background */

            --card-border: #4A5568; /* Darker border */

            --card-shadow: rgba(0,0,0,0.3); /* More pronounced shadow */

            --primary-button-bg: #4299E1; /* Lighter blue for contrast */

            --primary-button-hover-bg: #3182CE;

            --secondary-button-bg: #48BB78; /* Lighter green */

            --secondary-button-text: #E2E8F0;

            --secondary-button-hover-bg: #38A169;

            --dropzone-border: #4A5568;

            --dropzone-hover-border: #4299E1;

            --dropzone-hover-bg: #2D3748;

            --modal-bg: #2D3748;

            --modal-text: #E2E8F0;

            --recommendation-text-bg: #2A4365; /* Darker blue for dark mode */

            --recommendation-text-color: #E0F2F7;

            --chart-doughnut-fill: #4299E1; /* Lighter blue for dark mode chart */

            --chart-doughnut-empty: #4A5568; /* Darker grey for empty part */

        }


        body {

            font-family: 'Noto Sans KR', sans-serif;

            background-color: var(--bg-color);

            color: var(--text-color);

            transition: background-color 0.3s, color 0.3s;

        }


        .chart-container {

            position: relative;

            width: 100%;

            max-width: 300px;

            margin-left: auto;

            margin-right: auto;

            height: 250px; /* 기본 높이 */

            max-height: 300px; /* 최대 높이 */

        }

        @media (min-width: 768px) { /* 태블릿 이상 */

            .chart-container {

                height: 300px;

            }

        }


        .palette-color {

            width: 100%;

            height: 50px;

            transition: transform 0.2s ease-in-out;

        }

        .palette-color:hover {

            transform: scale(1.05);

            box-shadow: 0 4px 10px var(--card-shadow);

        }

        .section-card {

            background-color: var(--card-bg);

            border: 1px solid var(--card-border);

            box-shadow: 0 6px 12px var(--card-shadow);

            transition: background-color 0.3s, box-shadow 0.3s, border-color 0.3s;

        }

        .recommendation-palette {

            cursor: pointer;

            border-radius: 0.75rem;

        }

        .recommendation-palette:hover .palette-color {

            transform: scale(1.05);

            box-shadow: 0 4px 8px var(--card-shadow);

        }

        .active-palette {

            outline: 3px solid var(--primary-button-bg);

            border-radius: 0.75rem;

        }


        /* Button & Dropzone Styling using CSS variables */

        #analyze-button {

            background-color: var(--primary-button-bg);

            color: white;

        }

        #analyze-button:hover {

            background-color: var(--primary-button-hover-bg);

        }

        #restart-button {

            background-color: var(--secondary-button-bg);

            color: var(--secondary-button-text);

        }

        #restart-button:hover {

            background-color: var(--secondary-button-hover-bg);

        }

        #dropzone {

            border-color: var(--dropzone-border);

        }

        #dropzone:hover {

            border-color: var(--dropzone-hover-border);

            background-color: var(--dropzone-hover-bg);

        }

        #message-modal .bg-white { /* Targeting the modal content background */

            background-color: var(--modal-bg);

            color: var(--modal-text);

        }

        #message-modal .text-gray-800 { /* Targeting modal message text */

            color: var(--modal-text);

        }

        #message-modal .bg-blue-500 { /* Targeting modal confirm button */

            background-color: var(--primary-button-bg);

        }

        #message-modal .bg-blue-500:hover {

            background-color: var(--primary-button-hover-bg);

        }

        #recommendation-text {

            background-color: var(--recommendation-text-bg);

            color: var(--recommendation-text-color);

        }

    </style>

</head>

<body class="bg-gray-50 text-gray-800">


    <div id="app" class="container mx-auto p-4 md:p-8 max-w-6xl">

        <!-- Language and Dark Mode Toggles -->

        <div class="absolute top-4 right-4 flex space-x-2 z-10">

            <button id="lang-toggle-button" class="p-2 rounded-full bg-white shadow-md hover:bg-gray-100 transition text-gray-700 text-sm font-semibold" data-i18n="langButtonText">KO/EN</button>

            <button id="dark-mode-toggle" class="p-2 rounded-full bg-white shadow-md hover:bg-gray-100 transition text-gray-700">

                <span id="dark-mode-icon">🌙</span>

            </button>

        </div>


        <!-- Initial Upload View -->

        <div id="upload-view">

            <header class="text-center mb-8">

                <h1 class="text-4xl md:text-5xl font-bold text-gray-900" data-i18n="uploadTitle">AI 스타일 분석</h1>

                <p class="mt-4 text-lg text-gray-600" data-i18n="uploadSubtitle">당신의 의상 사진을 업로드하고 퍼스널 컬러 조합을 분석 받아보세요.</p>

            </header>


            <div class="bg-white p-8 rounded-2xl shadow-lg border border-gray-200 section-card">

                <div id="dropzone" class="flex flex-col items-center justify-center w-full h-64 border-4 border-dashed border-gray-300 rounded-2xl cursor-pointer hover:bg-gray-100 transition">

                    <div class="flex flex-col items-center justify-center pt-5 pb-6">

                        <svg class="w-12 h-12 mb-4 text-gray-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 16"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 13h3a3 3 0 0 0 0-6h-.025A5.56 5.56 0 0 0 16 6.5 5.5 5.5 0 0 0 5.207 5.021C5.137 5.017 5.071 5 5 5a4 4 0 0 0 0 8h2.167M10 15V6m0 0L8 8m2-2 2 2"/></svg>

                        <p class="mb-2 text-sm text-gray-500" data-i18n="dropzoneText"><span class="font-semibold" data-i18n="dropzoneClick">클릭하여 업로드</span> 또는 파일을 드래그하세요.</p>

                        <p class="text-xs text-gray-500" data-i18n="fileTypeText">PNG, JPG (MAX. 5MB)</p>

                    </div>

                </div>

                <div class="mt-6 text-center">

                    <button id="analyze-button" class="bg-indigo-600 text-white font-bold py-3 px-8 rounded-full hover:bg-indigo-700 transition-transform transform hover:scale-105 focus:outline-none focus:ring-4 focus:ring-indigo-300" data-i18n="analyzeButton">

                        분석 시작하기

                    </button>

                    <input type="file" id="file-input" class="hidden" accept="image/png, image/jpeg">

                </div>

            </div>

        </div>


        <!-- Loading View -->

        <div id="loading-view" class="hidden text-center py-20">

            <div class="flex justify-center items-center mb-4">

                 <div class="animate-spin rounded-full h-16 w-16 border-b-4 border-indigo-600"></div>

            </div>

            <h2 class="text-2xl font-semibold text-gray-800" data-i18n="loadingText">AI가 당신의 스타일을 분석하고 있습니다...</h2>

            <p class="text-gray-600 mt-2" data-i18n="loadingSubtitle">잠시만 기다려주세요.</p>

        </div>


        <!-- Results View -->

        <div id="results-view" class="hidden">

            <header class="text-center mb-12">

                <h1 class="text-4xl md:text-5xl font-bold text-gray-900" data-i18n="resultsTitle">스타일 분석 결과</h1>

                <p class="mt-4 text-lg text-gray-600" data-i18n="resultsSubtitle">당신의 컬러 조합에 대한 AI의 분석 결과입니다.</p>

            </header>


            <div class="grid grid-cols-1 lg:grid-cols-3 gap-8">

                <!-- Left Column: User Image & Palettes -->

                <div class="lg:col-span-1 space-y-8">

                    <div class="bg-white p-6 rounded-2xl shadow-lg border border-gray-200 section-card">

                        <h2 class="text-2xl font-bold mb-4 text-center" data-i18n="uploadedPhotoTitle">업로드된 사진</h2>

                        <img id="user-outfit-image" src="https://placehold.co/600x800/E2E8F0/4A5568?text=Your+Outfit" alt="사용자 의상 사진" class="rounded-lg w-full h-auto object-cover">

                    </div>

                     <div class="bg-white p-6 rounded-2xl shadow-lg border border-gray-200 section-card">

                        <h2 class="text-2xl font-bold mb-4" data-i18n="analyzedColorsTitle">분석된 색상 조합</h2>

                        <p class="text-gray-600 mb-6" data-i18n="analyzedColorsSubtitle">AI가 당신의 의상에서 식별한 주요 색상들입니다.</p>

                        <div id="color-palette" class="grid grid-cols-2 gap-4">

                            <!-- Palette will be injected here -->

                        </div>

                    </div>

                </div>


                <!-- Right Column: Analysis Details -->

                <div class="lg:col-span-2 space-y-8">

                    <div class="bg-white p-6 rounded-2xl shadow-lg border border-gray-200 section-card">

                         <h2 class="text-2xl font-bold mb-4 text-center" data-i18n="scoreTitle">컬러 조합 점수</h2>

                        <div class="chart-container">

                            <canvas id="scoreChart"></canvas>

                        </div>

                        <p id="score-text" class="text-center text-xl font-medium text-gray-700 mt-4"></p>

                        <p class="text-center text-gray-600 mt-2 px-4" data-i18n="scoreExplanation">AI가 색상 조화, 대비, 통일성 등을 종합적으로 고려하여 평가한 점수입니다.</p>

                    </div>

                    

                    <div class="bg-white p-6 rounded-2xl shadow-lg border border-gray-200 section-card">

                        <h2 class="text-2xl font-bold mb-4" data-i18n="suggestionsTitle">개선 제안</h2>

                        <ul id="suggestions-list" class="list-disc list-inside space-y-2 text-gray-700">

                           <!-- Suggestions will be injected here -->

                        </ul>

                    </div>


                    <!-- New LLM Feature Section -->

                    <div class="bg-white p-6 rounded-2xl shadow-lg border border-gray-200 section-card">

                        <h2 class="text-2xl font-bold mb-4" data-i18n="llmInsightTitle">✨스타일 인사이트 & 이벤트 추천✨</h2>

                        <p class="text-gray-600 mb-4" data-i18n="llmInsightSubtitle">이 의상에 대한 스타일 인사이트를 얻거나, 특정 상황에 어울리는 추천을 받아보세요.</p>

                        <textarea id="llm-input" class="w-full p-3 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 mb-4 bg-gray-50 dark:bg-gray-700 dark:text-white dark:border-gray-600" rows="3" data-i18n="llmInputPlaceholder" placeholder="예: '캐주얼한 데이트', '비즈니스 미팅', '이 의상의 분위기는?'"></textarea>

                        <button id="generate-llm-insight-button" class="bg-blue-500 text-white font-bold py-2 px-6 rounded-full hover:bg-blue-600 transition-transform transform hover:scale-105 focus:outline-none focus:ring-4 focus:ring-blue-300" data-i18n="generateInsightButton">

                            인사이트 생성하기

                        </button>

                        <div id="llm-loading-indicator" class="text-center mt-4 hidden">

                            <div class="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-500 mx-auto"></div>

                            <p class="text-gray-600 mt-2" data-i18n="llmLoadingText">인사이트를 생성 중입니다...</p>

                        </div>

                        <div id="llm-output" class="mt-6 p-4 bg-blue-50 rounded-lg text-blue-800 transition-opacity duration-300 hidden">

                            <!-- LLM generated insight will be injected here -->

                        </div>

                    </div>


                    <div class="bg-white p-6 rounded-2xl shadow-lg border border-gray-200 section-card">

                        <h2 class="text-2xl font-bold mb-4" data-i18n="recommendationsTitle">추천 색상 조합</h2>

                        <p class="text-gray-600 mb-6" data-i18n="recommendationsSubtitle">현재 의상을 기반으로 새로운 분위기를 연출할 수 있는 색상 조합을 추천합니다. 팔레트를 클릭하여 설명을 확인해보세요.</p>

                        <div id="recommendations-container" class="grid grid-cols-1 md:grid-cols-2 gap-6">

                             <!-- Recommendation palettes will be injected here -->

                        </div>

                         <div id="recommendation-text" class="mt-6 p-4 bg-blue-50 rounded-lg text-blue-800 transition-opacity duration-300">

                           <!-- Recommendation text will appear here -->

                        </div>

                    </div>

                     <div class="bg-white p-6 rounded-2xl shadow-lg border border-gray-200 section-card">

                        <div class="flex items-center justify-between mb-4">

                           <h2 class="text-2xl font-bold" data-i18n="weatherRecsTitle">오늘의 날씨 맞춤 추천</h2>

                           <div id="weather-info" class="text-right">

                                <!-- Weather info here -->

                           </div>

                        </div>

                        <p class="text-gray-600 mb-6" data-i18n="weatherRecsSubtitle">현재 위치의 날씨에 어울리는 색상 조합으로 활기찬 하루를 보내세요.</p>

                        <div id="weather-recommendations" class="grid grid-cols-1 md:grid-cols-2 gap-6">

                            <!-- Weather recommendations here -->

                        </div>

                    </div>

                </div>

            </div>

             <div class="mt-12 text-center">

                <button id="restart-button" class="bg-gray-700 text-white font-bold py-3 px-8 rounded-full hover:bg-gray-800 transition-transform transform hover:scale-105 focus:outline-none focus:ring-4 focus:ring-gray-300" data-i18n="restartButton">

                    다른 사진으로 분석하기

                </button>

            </div>

        </div>

    </div>


    <!-- Custom Message Box -->

    <div id="message-modal" class="fixed inset-0 bg-gray-600 bg-opacity-50 flex items-center justify-center hidden z-50">

        <div class="bg-white p-6 rounded-lg shadow-xl max-w-sm w-full text-center">

            <p id="modal-message" class="text-lg font-semibold text-gray-800 mb-4"></p>

            <button id="modal-close-button" class="bg-blue-500 text-white px-4 py-2 rounded-md hover:bg-blue-600 transition" data-i18n="modalConfirmButton">확인</button>

        </div>

    </div>


<script src="script.js" defer></script>

</body>

</html>