{"product_id":"샤또-피작-2021","title":"샤또 피작 2021 -보르도 빈티지 클럽 선공개-","description":"\u003cbody\u003e\n\n\n    \n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n    \u003ctitle\u003e2021 Château Figeac - Saint-Émilion Premier Grand Cru Classé\u003c\/title\u003e\n    \u003c!-- Tailwind CSS CDN --\u003e\n    \u003cscript src=\"https:\/\/cdn.tailwindcss.com\"\u003e\u003c\/script\u003e\n    \u003c!-- Font Awesome for icons --\u003e\n    \u003clink rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/5.15.3\/css\/all.min.css\"\u003e\n    \u003c!-- Chart.js for graphs --\u003e\n    \u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@3.7.1\/dist\/chart.min.js\"\u003e\u003c\/script\u003e\n    \u003cstyle\u003e\n        \/* CRITICAL: APPLE-Inspired Minimalism \u0026 Korean Stability - Bordeaux Garnet Accent *\/\n        :root {\n            --accent-color: #4A044E; \/* Deep Garnet Purple - Saint-\u0026Eacute;milion Richness *\/\n            --dark-accent: #2C022F;\n            --product-bg: #FAF5FF; \/* Very Pale Lavender\/Pink *\/\n            --price-fill: rgba(74, 4, 78, 0.2);\n            --wine-color: #4A044E; \n        }\n        body {\n            \/* **FINAL FONT STACK FOR KOREAN STABILITY** *\/\n            font-family: 'Noto Sans KR', 'Malgun Gothic', 'Apple SD Gothic Neo', 'Inter', -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n            color: #1d1d1f; \/* Near-Black for crisp text contrast *\/\n            position: relative;\n            overflow-x: hidden;\n            line-height: 1.6; \/* Increased line-height for readability *\/\n            background-color: #f9f9f9; \/* Off-white background *\/\n        }\n        .container-box {\n            background-color: #ffffff;\n            border-radius: 12px;\n            padding: 2.5rem;\n            \/* Subtle, clean shadow *\/\n            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); \n            border: 1px solid #e5e5e5; \/* Light border for definition *\/\n        }\n        \/* New Minimalist Palette (Bordeaux Garnet Accent) *\/\n        .accent-text {\n            color: var(--accent-color); \n        }\n        .text-heading {\n            color: #1d1d1f; \/* Near-Black, prominent heading *\/\n            font-weight: 700;\n        }\n        .button-link {\n            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n            background-color: var(--dark-accent); \/* Use dark accent for button *\/\n            color: #ffffff; \n            border: 1px solid var(--dark-accent);\n            padding: 1rem 3rem; \n            border-radius: 8px; \n            font-weight: 600;\n            letter-spacing: 0.5px;\n            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); \n            display: inline-flex;\n            align-items: center;\n        }\n        .button-link:hover {\n            background-color: var(--accent-color);\n            border-color: var(--accent-color);\n            color: #ffffff;\n            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);\n            transform: translateY(-1px);\n        }\n        .info-card {\n            background-color: #f8f8f8; \/* Very light gray background *\/\n            border-radius: 10px; \n            padding: 1.5rem;\n            text-align: center;\n            border: 1px solid #ebebeb;\n            transition: all 0.3s ease-in-out; \n        }\n        .info-card:hover {\n            transform: translateY(-3px); \n            box-shadow: 0 8px 15px rgba(0, 0, 0, 0.08); \n        }\n        .product-placeholder {\n            background-color: var(--product-bg); \n            border-color: var(--accent-color); \n            object-fit: cover;\n            width: 100%;\n            height: 300px;\n        }\n        .chart-container {\n            position: relative;\n            width: 100%;\n        }\n        \/* Expert Score Box Styling *\/\n        .expert-score-grid {\n            display: grid;\n            grid-template-columns: repeat(2, 1fr); \/* 2 columns for smaller screen *\/\n            gap: 1rem; \n            margin-top: 1rem;\n        }\n        @media (min-width: 768px) {\n            .expert-score-grid {\n                grid-template-columns: repeat(4, 1fr); \/* 4 columns on desktop *\/\n            }\n        }\n        .score-item {\n            background-color: #fefefe;\n            padding: 0.5rem; \n            border-radius: 8px;\n            border: 1px solid #e5e5e5;\n            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            min-height: 70px; \n        }\n        .score-item.highlighted {\n            background-color: var(--product-bg);\n            border: 2px solid var(--accent-color);\n        }\n        .score-value {\n            font-size: 1.5rem; \n            font-weight: 800;\n            color: var(--accent-color);\n            line-height: 1.2; \n        }\n        .critic-name {\n            font-size: 0.8rem; \n            color: #4a4a68;\n            font-weight: 600;\n            line-height: 1; \n            margin-top: 0.25rem;\n        }\n        \/* Vivino style *\/\n        .vivino-box {\n            background-color: #ffffff;\n            padding: 1.5rem; \n            border-radius: 12px; \n            border: 1px solid #e5e5e5;\n            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); \n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            text-align: center;\n        }\n        .vivino-box .score-value {\n            font-size: 2.5rem; \n            font-weight: 900;\n            color: var(--dark-accent); \n            margin-top: 0.5rem;\n        }\n        .vivino-box .critic-name {\n            font-size: 0.9rem;\n            color: #71717a;\n        }\n        \/* KRW Price Info Box *\/\n        .krw-price-box {\n            background-color: #ffffff;\n            border-radius: 12px;\n            padding: 1.5rem;\n            text-align: center;\n            border: 1px solid #e5e5e5; \n        }\n        .krw-price {\n            font-size: 2.5rem;\n            font-weight: 900;\n            color: #1d1d1f;\n            margin-top: 0.5rem;\n            line-height: 1.2;\n        }\n        .krw-note {\n            font-size: 0.8rem;\n            color: #71717a; \/* Gray-600 *\/\n            margin-top: 0.5rem;\n        }\n        \/* Wine Profile Bar *\/\n        .wine-profile-bar {\n            height: 12px;\n            background-color: #e5e5e5;\n            border-radius: 6px;\n            overflow: hidden;\n            margin-bottom: 0.5rem;\n        }\n        .wine-profile-fill {\n            background-color: var(--wine-color);\n            height: 100%;\n        }\n        \/* Tasting Note Icons Grid *\/\n        .aroma-grid {\n            display: grid;\n            grid-template-columns: repeat(3, 1fr);\n            gap: 1rem;\n            text-align: center;\n        }\n        .aroma-item {\n            background-color: #f8f8f8;\n            border: 1px solid #ebebeb;\n            border-radius: 8px;\n            padding: 1rem 0.5rem;\n            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n            transition: transform 0.2s;\n        }\n        .aroma-item i {\n            color: var(--accent-color);\n            font-size: 2rem;\n            margin-bottom: 0.5rem;\n        }\n    \u003c\/style\u003e\n\n\n\n\u003cdiv class=\"max-w-5xl mx-auto px-4 py-8 md:py-16\"\u003e\n    \u003c!-- Header \u0026 Hero Section --\u003e\n    \u003cheader class=\"text-center mb-8\"\u003e\n        \n        \u003ch1 class=\"4xl md:text-5xl font-bold mb-2 text-heading flex items-center justify-center\"\u003e\n            2021 Château Figeac, Saint-Émilion Grand Cru\n        \u003c\/h1\u003e\n        \u003ch2 class=\"2xl md:text-3xl font-bold text-gray-800 mb-4\"\u003e\n            샤또 피작 2021 (생테밀리옹 그랑 크뤼)\n        \u003c\/h2\u003e\n        \n        \u003c!-- Custom Highlight Emphasis (Winery Reputation) --\u003e\n        \u003cdiv class=\"mb-4\"\u003e\n            \u003cspan class=\"highlight-badge\" style=\"background-color: var(--dark-accent); color: white; font-size: 1rem; padding: 4px 10px; border-radius: 6px;\"\u003e\n                🇫🇷 **[프리미에 그랑 크뤼의 위엄]** | 평론가 평균 96점의 압도적 퀄리티\n            \u003c\/span\u003e\n        \u003c\/div\u003e\n        \n        \u003c!-- Expert Score Emphasis --\u003e\n        \u003cp class=\"text-lg md:text-xl font-semibold leading-relaxed text-heading mt-4 border-b-2 border-gray-300 pb-2 inline-block\"\u003e\n            🇫🇷 프랑스 보르도, 생테밀리옹 | 까베르네 프랑 블렌딩의 우아함 🇫🇷\n        \u003c\/p\u003e\n    \u003c\/header\u003e\n\n    \u003cmain class=\"grid grid-cols-1 md:grid-cols-3 gap-8\"\u003e\n        \u003c!-- Left Side: Product Image \u0026 Quick Info --\u003e\n        \u003cdiv class=\"md:col-span-1 flex flex-col items-center\"\u003e\n            \u003cdiv class=\"mb-8 w-full\"\u003e\n                \u003c!-- Product Image (Using mock image) --\u003e\n                \n                \u003cimg src=\"uploaded:%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202025-10-31%2017.43.31.jpg-996e92b5-cfbe-4196-8595-7d0ee7ebb3e8\" onerror=\"this.onerror=null;this.src='https:\/\/placehold.co\/400x500\/FAF5FF\/2C022F?text=Chateau+Figeac+2021';\" alt=\"Château Figeac 2021 bottle\" class=\"w-full h-auto rounded-lg shadow-md product-placeholder object-contain border-4\" style=\"border-color: var(--dark-accent); background-color: var(--product-bg);\"\u003e\n            \u003c\/div\u003e\n            \n            \u003c!-- Vivino Score --\u003e\n            \u003cdiv class=\"vivino-box w-full mb-6\"\u003e\n                \u003ch3 class=\"text-lg font-bold text-heading\"\u003eVivino 평점\u003c\/h3\u003e\n                \u003cimg src=\"https:\/\/xwine.club\/cdn\/shop\/files\/ckyycsi9i00027b9gh6ww46da.webp\" onerror=\"this.onerror=null;this.src='https:\/\/placehold.co\/40x40\/2C022F\/ffffff?text=V';\" alt=\"Vivino Logo\" class=\"h-10 w-10 mx-auto rounded-full shadow-md mt-2\" loading=\"lazy\" data-original=\"https:\/\/xwine.club\/cdn\/shop\/files\/ckyycsi9i00027b9gh6ww46da.webp\" data-files=\"ckyycsi9i00027b9gh6ww46da.webp\"\u003e\n                \u003cp class=\"score-value\" style=\"color: var(--dark-accent);\"\u003e4.4\u003c\/p\u003e\n                \u003cp class=\"critic-name\"\u003e(30082 Ratings)\u003c\/p\u003e\n            \u003c\/div\u003e\n            \n            \u003cdiv class=\"w-full text-center\"\u003e\n                \u003cdiv class=\"container-box mb-6\"\u003e\n                    \u003ch3 class=\"text-xl font-semibold mb-2 text-heading\"\u003e와인 종류\u003c\/h3\u003e\n                    \u003cp class=\"text-lg text-gray-800\"\u003e풀 바디 드라이 레드 와인 (보르도 블렌딩)\u003c\/p\u003e\n                    \u003cp class=\"text-sm text-gray-600\"\u003e(품종: 메를로, 까베르네 프랑, 까베르네 소비뇽)\u003c\/p\u003e\n                \u003c\/div\u003e\n                \u003cdiv class=\"container-box mb-6\"\u003e\n                    \u003ch3 class=\"text-xl font-semibold mb-2 text-heading\"\u003e지역 및 등급\u003c\/h3\u003e\n                    \u003cp class=\"text-lg text-gray-800\"\u003e프랑스 보르도, 생테밀리옹\u003c\/p\u003e\n                    \u003cp class=\"text-sm text-gray-600\"\u003ePremier Grand Cru Classé (A 승격 후보)\u003c\/p\u003e\n                \u003c\/div\u003e\n            \u003c\/div\u003e\n            \u003c!-- Price Highlight Box (Selling Price vs Market Price) --\u003e\n            \u003cdiv class=\"container-box w-full bg-red-50 border-red-200 mt-4 p-6 text-center\" style=\"background-color: var(--product-bg); border-color: #E0EEDF;\"\u003e\n                \u003cp class=\"text-base text-gray-700 font-medium\"\u003ewine-searcher 평균가격 (2025년 9월 기준)\u003c\/p\u003e\n                \u003cp class=\"text-xl font-bold text-gray-700 mt-1\"\u003e€ 211.12\u003c\/p\u003e\n                \u003cp class=\"text-xs text-gray-500 mt-2\"\u003e**할인가 적용 판매가:**\u003c\/p\u003e\n                \u003cp class=\"text-4xl font-extrabold accent-text mt-1\"\u003e€ 175.00\u003c\/p\u003e\n                \u003cp class=\"text-xs text-red-500 font-semibold mt-1\"\u003e시세 대비 매우 합리적인 구매 기회!\u003c\/p\u003e\n            \u003c\/div\u003e\n\n            \u003c!-- Expert Reviews Section (2021 Score) - EMPHASIZED --\u003e\n            \u003cdiv class=\"container-box w-full mt-6\"\u003e\n                \u003ch3 class=\"text-xl font-bold mb-4 text-heading text-center\"\u003e전문가 평점 (2021 빈티지 En Primeur)\u003c\/h3\u003e\n                \u003cdiv class=\"expert-score-grid\" style=\"grid-template-columns: repeat(2, 1fr);\"\u003e\n                    \n                    \u003c!-- 1. Decanter Score (HIGHLIGHTED) --\u003e\n                    \u003cdiv class=\"score-item highlighted\"\u003e\n                        \u003cp class=\"score-value text-4xl\"\u003e97\u003c\/p\u003e\n                        \u003cp class=\"critic-name font-bold text-gray-800\"\u003eDecanter\u003c\/p\u003e\n                    \u003c\/div\u003e\n\n                    \u003c!-- 2. Parker Score --\u003e\n                    \u003cdiv class=\"score-item\"\u003e\n                        \u003cp class=\"score-value\"\u003e96+\u003c\/p\u003e\n                        \u003cp class=\"critic-name\"\u003eRobert Parker\u003c\/p\u003e\n                    \u003c\/div\u003e\n\n                    \u003c!-- 3. Jeb Dunnuck Score --\u003e\n                    \u003cdiv class=\"score-item\"\u003e\n                        \u003cp class=\"score-value\"\u003e95-97\u003c\/p\u003e\n                        \u003cp class=\"critic-name\"\u003eJeb Dunnuck\u003c\/p\u003e\n                    \u003c\/div\u003e\n\n                    \u003c!-- 4. James Suckling Score --\u003e\n                    \u003cdiv class=\"score-item\"\u003e\n                        \u003cp class=\"score-value\"\u003e94-95\u003c\/p\u003e\n                        \u003cp class=\"critic-name\"\u003eJ. Suckling\u003c\/p\u003e\n                    \u003c\/div\u003e\n                \u003c\/div\u003e\n            \u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003c!-- Right Side: Details \u0026 Infographic --\u003e\n        \u003cdiv class=\"md:col-span-2\"\u003e\n            \n            \u003c!-- Winery Story --\u003e\n            \u003cdiv class=\"container-box mb-8\"\u003e\n                \u003ch3 class=\"text-2xl font-bold mb-4 text-heading\"\u003e와이너리 스토리 \u0026amp; 특징\u003c\/h3\u003e\n                \u003cp class=\"mb-4 text-gray-800 leading-relaxed font-semibold\"\u003e\n                    **샤또 피작(Château Figeac)**은 생테밀리옹 그랑 크뤼 클라세 중에서도 최고 수준으로 평가받는 와이너리입니다. 특히 **메를로, 까베르네 프랑, 까베르네 소비뇽을 3분의 1씩 블렌딩**하는 독특한 '보르도 좌안 스타일'로 유명하며, 이는 와인에 우아함, 복합미, 그리고 긴 숙성 잠재력을 부여합니다.\n                \u003c\/p\u003e\n                \u003cp class=\"mb-4 text-gray-800 leading-relaxed\"\u003e\n                    2021 빈티지는 수많은 평론가들로부터 **96~97점**의 극찬을 받으며, **First Growth (1등급)**에 필적하는 뛰어난 퀄리티를 입증했습니다. 이 빈티지는 지금부터 즐길 수 있는 신선함을 갖추면서도, 20년 이상 숙성 가능한 견고한 구조를 지니고 있습니다.\n                \u003c\/p\u003e\n            \u003c\/div\u003e\n            \n            \u003chr class=\"border-t-2 border-gray-300 my-8\"\u003e\n            \n            \u003c!-- Wine Profile - Chateau Figeac (Powerful, Tannic, Dry, High Acidic) --\u003e\n            \u003cdiv class=\"container-box mb-8\"\u003e\n                \u003ch3 class=\"text-2xl font-bold mb-4 text-heading text-center\"\u003e와인 풍미 프로필 (전반적인 스타일)\u003c\/h3\u003e\n                \u003cdiv class=\"space-y-4\"\u003e\n                    \u003cdiv class=\"flex items-center\"\u003e\n                        \u003cp class=\"w-1\/4 text-sm font-semibold text-gray-600 text-left pr-4\"\u003e바디\/힘\u003c\/p\u003e\n                        \u003cdiv class=\"wine-profile-bar w-3\/4\"\u003e\n                            \u003c!-- Powerful: ~90% --\u003e\n                            \u003cdiv class=\"wine-profile-fill\" style=\"width: 90%;\"\u003e\u003c\/div\u003e\n                        \u003c\/div\u003e\n                        \u003cp class=\"w-1\/4 text-sm font-semibold text-gray-600 text-right pl-4\"\u003ePowerful\u003c\/p\u003e\n                    \u003c\/div\u003e\n                    \u003cdiv class=\"flex items-center\"\u003e\n                        \u003cp class=\"w-1\/4 text-sm font-semibold text-gray-600 text-left pr-4\"\u003e탄닌\u003c\/p\u003e\n                        \u003cdiv class=\"wine-profile-bar w-3\/4\"\u003e\n                            \u003c!-- Tannic: ~80% --\u003e\n                            \u003cdiv class=\"wine-profile-fill\" style=\"width: 80%;\"\u003e\u003c\/div\u003e\n                        \u003c\/div\u003e\n                        \u003cp class=\"w-1\/4 text-sm font-semibold text-gray-600 text-right pl-4\"\u003eStructured Tannic\u003c\/p\u003e\n                    \u003c\/div\u003e\n                    \u003cdiv class=\"flex items-center\"\u003e\n                        \u003cp class=\"w-1\/4 text-sm font-semibold text-gray-600 text-left pr-4\"\u003e산도\u003c\/p\u003e\n                        \u003cdiv class=\"wine-profile-bar w-3\/4\"\u003e\n                            \u003c!-- Acidity: ~70% --\u003e\n                            \u003cdiv class=\"wine-profile-fill\" style=\"width: 70%;\"\u003e\u003c\/div\u003e\n                        \u003c\/div\u003e\n                        \u003cp class=\"w-1\/4 text-sm font-semibold text-gray-600 text-right pl-4\"\u003eHigh Acidity\u003c\/p\u003e\n                    \u003c\/div\u003e\n                    \u003cdiv class=\"flex items-center\"\u003e\n                        \u003cp class=\"w-1\/4 text-sm font-semibold text-gray-600 text-left pr-4\"\u003e당도\u003c\/p\u003e\n                        \u003cdiv class=\"wine-profile-bar w-3\/4\"\u003e\n                            \u003c!-- Dry (Sec): ~20% fill for dryness, visual opposite of sweet --\u003e\n                            \u003cdiv class=\"wine-profile-fill\" style=\"width: 20%;\"\u003e\u003c\/div\u003e\n                        \u003c\/div\u003e\n                        \u003cp class=\"w-1\/4 text-sm font-semibold text-gray-600 text-right pl-4\"\u003eDry (Sec)\u003c\/p\u003e\n                    \u003c\/div\u003e\n                \u003c\/div\u003e\n                \u003cdiv class=\"bg-gray-100 p-4 rounded-lg mt-6 text-center border border-gray-200\"\u003e\n                    \u003cp class=\"text-sm text-gray-700 font-semibold\"\u003e주요 풍미: 자두, 블랙베리, 카시스, 담배, 삼나무, 가죽\/흙내음\u003c\/p\u003e\n                \u003c\/div\u003e\n            \u003c\/div\u003e\n            \n            \u003chr class=\"border-t-2 border-gray-300 my-8\"\u003e\n\n            \u003c!-- Tasting Notes Section (Translated from French image) --\u003e\n            \u003cdiv class=\"container-box mb-8\"\u003e\n                \u003ch3 class=\"text-2xl font-bold mb-8 text-heading text-center\"\u003e주요 시음 노트 (Vivino 유저 데이터 기반)\u003c\/h3\u003e\n                \u003cdiv class=\"aroma-grid\"\u003e\n                    \u003cdiv class=\"aroma-item\"\u003e\n                        \u003ci class=\"fas fa-seedling\"\u003e\u003c\/i\u003e\n                        \u003cp class=\"mt-2 text-sm font-semibold text-gray-700\"\u003e과실 (프룬, 블랙베리, 카시스)\u003c\/p\u003e\n                        \u003cp class=\"text-xs text-gray-500\"\u003e(1342회 언급)\u003c\/p\u003e\n                    \u003c\/div\u003e\n                    \u003cdiv class=\"aroma-item\"\u003e\n                        \u003ci class=\"fas fa-leaf\"\u003e\u003c\/i\u003e\n                        \u003cp class=\"mt-2 text-sm font-semibold text-gray-700\"\u003e오크 숙성 (담배, 삼나무)\u003c\/p\u003e\n                        \u003cp class=\"text-xs text-gray-500\"\u003e(1681회 언급)\u003c\/p\u003e\n                    \u003c\/div\u003e\n                    \u003cdiv class=\"aroma-item\"\u003e\n                        \u003ci class=\"fas fa-globe-europe\"\u003e\u003c\/i\u003e\n                        \u003cp class=\"mt-2 text-sm font-semibold text-gray-700\"\u003e떼루아 (가죽, 흙, 스모키)\u003c\/p\u003e\n                        \u003cp class=\"text-xs text-gray-500\"\u003e(1429회 언급)\u003c\/p\u003e\n                    \u003c\/div\u003e\n                \u003c\/div\u003e\n            \u003c\/div\u003e\n\n            \u003chr class=\"border-t-2 border-gray-300 my-8\"\u003e\n\n            \u003c!-- Price Graph (Mock Data based on image) --\u003e\n            \u003cdiv class=\"container-box mb-8\"\u003e\n                \u003ch3 class=\"text-2xl font-bold mb-4 text-heading text-center\"\u003e가격 변동 그래프 (750ml, 세금 미포함)\u003c\/h3\u003e\n                \u003cdiv class=\"w-full flex justify-center items-center\"\u003e\n                    \u003cdiv class=\"chart-container flex-grow max-w-lg\"\u003e\n                        \u003ccanvas id=\"priceChart\" style=\"height: 250px; width: 100%;\"\u003e\u003c\/canvas\u003e\n                    \u003c\/div\u003e\n                \u003c\/div\u003e\n                \u003cdiv class=\"bg-gray-100 p-4 rounded-lg mt-4 text-center border border-gray-200\"\u003e\n                    \u003cp class=\"text-sm text-gray-700\"\u003e샤또 피작은 시간이 지날수록 가치가 상승하는 보르도 그랑 크뤼의 특징을 보여줍니다. 현재 평균 시장 가격은 **€211.12** 수준입니다.\u003c\/p\u003e\n                \u003c\/div\u003e\n            \u003c\/div\u003e\n\n            \u003chr class=\"border-t-2 border-gray-300 my-8\"\u003e\n            \n            \u003c!-- Food Pairing --\u003e\n            \u003cdiv class=\"container-box mb-8\"\u003e\n                \u003ch3 class=\"text-2xl font-bold mb-4 text-heading text-center\"\u003e음식 페어링 추천\u003c\/h3\u003e\n                \u003cp class=\"text-center text-lg text-gray-700 font-semibold mb-4\"\u003e\"견고한 구조와 풀 바디감에 어울리는 정통 클래식 페어링!\"\u003c\/p\u003e\n                \u003cdiv class=\"aroma-grid\"\u003e\n                    \u003cdiv class=\"aroma-item\"\u003e\n                        \u003ci class=\"fas fa-drumstick-bite\"\u003e\u003c\/i\u003e\n                        \u003cp class=\"mt-2 text-sm font-semibold text-gray-700\"\u003e비프 스테이크 \u0026amp; 양갈비\u003c\/p\u003e\n                    \u003c\/div\u003e\n                    \u003cdiv class=\"aroma-item\"\u003e\n                        \u003ci class=\"fas fa-cheese\"\u003e\u003c\/i\u003e\n                        \u003cp class=\"mt-2 text-sm font-semibold text-gray-700\"\u003e하드 치즈 (체다, 파르미지아노)\u003c\/p\u003e\n                    \u003c\/div\u003e\n                    \u003cdiv class=\"aroma-item\"\u003e\n                        \u003ci class=\"fas fa-bacon\"\u003e\u003c\/i\u003e\n                        \u003cp class=\"mt-2 text-sm font-semibold text-gray-700\"\u003e트러플이 들어간 요리, 오리 가슴살\u003c\/p\u003e\n                    \u003c\/div\u003e\n                \u003c\/div\u003e\n            \u003c\/div\u003e\n\n            \u003c!-- KRW Estimated Payment Box --\u003e\n            \u003cdiv class=\"krw-price-box mb-8\"\u003e\n                \u003ch4 class=\"text-xl font-bold text-heading mb-2\"\u003e예상 결제 금액 (원화)\u003c\/h4\u003e\n                \n                \u003cdiv class=\"flex flex-col sm:flex-row items-center justify-center gap-2 mb-4\"\u003e\n                    \u003clabel for=\"exchangeRate\" class=\"text-sm font-medium text-gray-700 whitespace-nowrap\"\u003e\n                        1 EUR = \n                    \u003c\/label\u003e\n                    \u003cinput type=\"number\" id=\"exchangeRate\" value=\"1648.85\" step=\"0.01\" class=\"w-full sm:w-32 p-2 border border-gray-300 rounded-lg text-center font-mono text-lg focus:ring-red-500 focus:border-red-500\"\u003e\n                    \u003cspan class=\"text-lg font-medium text-gray-700 whitespace-nowrap\"\u003e\n                        KRW\n                    \u003c\/span\u003e\n                    \u003cbutton id=\"updateRate\" onclick=\"fetchAndDisplayRate()\" class=\"w-full sm:w-auto px-4 py-2 bg-gray-200 text-gray-800 font-semibold rounded-lg hover:bg-gray-300 transition-colors text-sm mt-2 sm:mt-0\"\u003e\n                        환율 검색\/적용\n                    \u003c\/button\u003e\n                \u003c\/div\u003e\n\n                \u003cp id=\"krwPrice\" class=\"krw-price\"\u003e₩ 288,549\u003c\/p\u003e\n                \u003cp id=\"krwNote\" class=\"krw-note\"\u003e\n                    ※ 1 EUR = 1,648.85 KRW 기준 (Google Search) - **판매가 €175.00 기준**\n                \u003c\/p\u003e\n                \u003cp id=\"krwDisclaimer\" class=\"krw-note mt-2 font-semibold text-gray-700\"\u003e\n                    카드사에 따라 적용 환율이 다를 수 있으니 참고만 해주시길 바랍니다.\n                \u003c\/p\u003e\n                \u003cp id=\"loadingIndicator\" class=\"text-sm text-gray-500 mt-2 hidden\"\u003e\n                    \u003ci class=\"fas fa-spinner fa-spin mr-1\"\u003e\u003c\/i\u003e 최신 환율 검색 중...\n                \u003c\/p\u003e\n            \u003c\/div\u003e\n\n            \u003c!-- More Products Button --\u003e\n            \u003cdiv class=\"text-center mt-8\"\u003e\n                \u003ca href=\"\/collections\/vendors?q=Chateau+Figeac\" class=\"button-link\" title=\"More Chateau Figeac Products\" style=\"background-color: var(--dark-accent); color: #ffffff;\" aria-label=\"More Chateau Figeac Products\"\u003e\n                    \u003cspan class=\"text-lg\"\u003eChâteau Figeac 전체 상품 바로가기\u003c\/span\u003e\n                \u003c\/a\u003e\n            \u003c\/div\u003e\n        \u003c\/div\u003e\n    \u003c\/main\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n    \/\/ Chart.js Configuration\n    let vintageData, vintageOptions, priceData, priceOptions;\n    let vintageCtx = null;\n    let priceCtx = null;\n    let vintageChartInstance = null;\n    let priceChartInstance = null;\n    const accentColor = 'var(--accent-color)'; \n    const darkAccentColor = 'var(--dark-accent)'; \n    const priceColor = 'var(--price-fill)'; \n    const SELLING_PRICE_EUR = 175.00; \/\/ \u0026#54032;\u0026#47588;\u0026#44032;: \u0026euro;175.00\n    const INITIAL_RATE = 1648.85; \/\/ Updated rate from Google Search\n\n    \/\/ Function to safely create or update a Chart instance\n    const createChart = (ctx, type, data, options, instanceRef) =\u003e {\n        if (instanceRef \u0026\u0026 instanceRef.chart) {\n            instanceRef.chart.destroy();\n        }\n        \n        options = {\n            ...options,\n            responsive: true,\n            maintainAspectRatio: false \n        };\n\n        setTimeout(() =\u003e {\n            if (ctx) {\n                instanceRef.chart = new Chart(ctx, { type, data, options });\n                instanceRef.chart.resize(); \n            }\n        }, 50); \n        return instanceRef;\n    };\n\n    \/**\n     * Calculates and updates the KRW price based on the current exchange rate input.\n     * @param {number} rate - The EUR to KRW exchange rate to use for calculation.\n     * @param {string} source - The source of the rate (e.g., 'Google Search', '\u0026#49688;\u0026#46041; \u0026#51077;\u0026#47141;').\n     *\/\n    function updateKrwPrice(rate, source) {\n        const krwPriceElement = document.getElementById('krwPrice');\n        const krwNoteElement = document.getElementById('krwNote');\n        const exchangeRateInput = document.getElementById('exchangeRate');\n\n        const finalRate = parseFloat(rate);\n\n        if (isNaN(finalRate) || finalRate \u003c= 0) {\n            krwPriceElement.textContent = '\u0026#8361; \u0026#50724;\u0026#47448;';\n            krwNoteElement.textContent = '\u0026#8251; \u0026#50976;\u0026#54952;\u0026#54620; \u0026#54872;\u0026#50984;\u0026#51012; \u0026#51077;\u0026#47141;\u0026#54644; \u0026#51452;\u0026#49464;\u0026#50836;.';\n            return;\n        }\n\n        const calculatedPrice = Math.round(SELLING_PRICE_EUR * finalRate);\n\n        const formattedPrice = new Intl.NumberFormat('ko-KR', { \n            style: 'currency', \n            currency: 'KRW', \n            minimumFractionDigits: 0,\n            maximumFractionDigits: 0\n        }).format(calculatedPrice);\n\n        krwPriceElement.textContent = formattedPrice;\n        krwNoteElement.innerHTML = `\u0026#8251; 1 EUR = ${finalRate.toFixed(2)} KRW \u0026#44592;\u0026#51456; (${source}) - **\u0026#54032;\u0026#47588;\u0026#44032; \u0026euro;${SELLING_PRICE_EUR.toFixed(2)} \u0026#44592;\u0026#51456;**`;\n        exchangeRateInput.value = finalRate.toFixed(2);\n    }\n\n    \/**\n     * Tries to fetch the real-time EUR\/KRW exchange rate using Google Search\n     * and updates the UI, or falls back to manual input.\n     *\/\n    async function fetchAndDisplayRate() {\n        const indicator = document.getElementById('loadingIndicator');\n        const updateButton = document.getElementById('updateRate');\n        \n        const manualRate = parseFloat(document.getElementById('exchangeRate').value);\n\n        updateButton.disabled = true;\n        indicator.classList.remove('hidden');\n\n        try {\n            const query = \"latest EUR to KRW exchange rate\";\n            const apiKey = \"\"; \n            const apiUrl = `https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/gemini-2.5-flash-preview-09-2025:generateContent?key=${apiKey}`;\n\n            const payload = {\n                contents: [{ parts: [{ text: query }] }],\n                tools: [{ \"google_search\": {} }],\n                systemInstruction: {\n                    parts: [{ text: \"You are a financial information assistant. Find the current numerical EUR to KRW exchange rate and respond ONLY with a JSON object. Do not include any text outside the JSON block.\" }]\n                },\n                generationConfig: {\n                    responseMimeType: \"application\/json\",\n                    responseSchema: {\n                        type: \"OBJECT\",\n                        properties: {\n                            \"exchangeRate\": { \n                                \"type\": \"NUMBER\",\n                                \"description\": \"The current value of 1 EUR in KRW, as a number.\"\n                            }\n                        }\n                    }\n                }\n            };\n            \n            const MAX_RETRIES = 3;\n            let response, result;\n\n            for (let i = 0; i \u003c MAX_RETRIES; i++) {\n                response = await fetch(apiUrl, {\n                    method: 'POST',\n                    headers: { 'Content-Type': 'application\/json' },\n                    body: JSON.stringify(payload)\n                });\n\n                if (response.ok) {\n                    result = await response.json();\n                    break; \n                }\n                if (i \u003c MAX_RETRIES - 1) {\n                    await new Promise(resolve =\u003e setTimeout(resolve, Math.pow(2, i) * 1000));\n                }\n            }\n\n            if (result \u0026\u0026 result.candidates \u0026\u0026 result.candidates[0].content.parts[0].text) {\n                const jsonText = result.candidates[0].content.parts[0].text;\n                const parsedJson = JSON.parse(jsonText);\n                const fetchedRate = parsedJson.exchangeRate;\n\n                if (typeof fetchedRate === 'number' \u0026\u0026 fetchedRate \u003e 0) {\n                    updateKrwPrice(fetchedRate, 'Google Search');\n                    return;\n                }\n            }\n            \n            \/\/ Fallback to manual rate if API fails or returns invalid data\n            updateKrwPrice(manualRate, '\u0026#49688;\u0026#46041; \u0026#51077;\u0026#47141; \u0026#54872;\u0026#50984;');\n            \n        } catch (error) {\n            console.error(\"Error fetching rate, falling back to manual input:\", error);\n            updateKrwPrice(manualRate, '\u0026#49688;\u0026#46041; \u0026#51077;\u0026#47141; \u0026#54872;\u0026#50984;');\n        } finally {\n            indicator.classList.add('hidden');\n            updateButton.disabled = false;\n        }\n    }\n\n    document.addEventListener('DOMContentLoaded', () =\u003e {\n        \/\/ --- 1. Price History Chart Configuration (Mock Data based on image) ---\n        const priceElement = document.getElementById('priceChart');\n        if (priceElement) {\n            priceCtx = priceElement.getContext('2d');\n            \n            \/\/ Data extracted\/mocked from the provided price history image (Avg price ~\u0026euro;211.12)\n            priceData = { \n                labels: ['2022 Jan', '2023 Jan', '2024 Jan', '2025 Sep'],\n                datasets: [\n                    {\n                        \/\/ Price Line\n                        label: 'Average Market Price (EUR)', \n                        data: [200, 205, 215, 211.12], \/* \u0026#51060;\u0026#48120;\u0026#51648; \u0026#44592;\u0026#48152; \u0026#44032;\u0026#44201; \u0026#48320;\u0026#46041; \u0026#52628;\u0026#51060; Mock Data *\/\n                        backgroundColor: 'var(--price-fill)', \n                        borderColor: 'var(--accent-color)',\n                        borderWidth: 2,\n                        tension: 0.4, \n                        pointRadius: 4,\n                        pointBackgroundColor: 'var(--dark-accent)',\n                        fill: 'origin', \n                        type: 'line',\n                        order: 1\n                    },\n                    {\n                        \/\/ Selling Price Marker\n                        label: 'Selling Price (\u0026euro;175)',\n                        data: [null, null, null, SELLING_PRICE_EUR],\n                        borderColor: '#22C55E', \/\/ Tailwind Green-500 for good value\n                        pointBackgroundColor: '#22C55E',\n                        pointBorderColor: '#ffffff',\n                        pointBorderWidth: 2,\n                        pointRadius: 7,\n                        type: 'scatter',\n                        order: 0,\n                    }\n                ]\n            };\n\n            priceOptions = { \n                responsive: true,\n                maintainAspectRatio: false, \n                plugins: {\n                    legend: { display: false },\n                    tooltip: {\n                        callbacks: {\n                            label: function(context) {\n                                let label = context.dataset.label || '';\n                                if (label) {\n                                    label += ': ';\n                                }\n                                if (context.parsed.y !== null) {\n                                    label += new Intl.NumberFormat('en-US', { style: 'currency', currency: 'EUR', minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(context.parsed.y);\n                                }\n                                return label;\n                            }\n                        }\n                    }\n                },\n                scales: {\n                    y: {\n                        beginAtZero: false, \n                        min: 150, \n                        max: 250, \n                        title: {\n                            display: true,\n                            text: 'Price (EUR)', \n                            color: '#1d1d1f',\n                            font: { size: 10 } \n                        },\n                        ticks: {\n                            callback: function(value) { return '\u0026euro;' + value; },\n                            stepSize: 25,\n                            color: '#4a4a68',\n                            font: { size: 8 } \n                        }\n                    },\n                    x: {\n                        ticks: {\n                            color: '#4a4a68',\n                            font: { size: 8 }, \n                            maxRotation: 0, \n                            minRotation: 0\n                        }\n                    }\n                }\n            };\n            \n            priceChartInstance = createChart(priceCtx, 'line', priceData, priceOptions, { chart: priceChartInstance });\n\n            \/* FINAL STABILITY FIX: Add resize listener back and update chart when window size changes *\/\n            window.addEventListener('resize', () =\u003e {\n                \n                if (priceChartInstance \u0026\u0026 priceChartInstance.chart) {\n                    priceChartInstance.chart.destroy(); \n                    priceChartInstance = createChart(priceCtx, 'line', priceData, priceOptions, { chart: null });\n                }\n            });\n        }\n        \n        \/\/ --- 2. Initial Price Calculation and Event Listeners for KRW price box ---\n        const exchangeRateInput = document.getElementById('exchangeRate');\n        \n        const initialRate = INITIAL_RATE;\n        exchangeRateInput.value = initialRate;\n        updateKrwPrice(initialRate, 'Google Search'); \/\/ Initial price calculation\n\n        exchangeRateInput.addEventListener('input', () =\u003e {\n            updateKrwPrice(exchangeRateInput.value, '\u0026#49688;\u0026#46041; \u0026#51077;\u0026#47141; \u0026#54872;\u0026#50984;');\n        });\n    });\n\u003c\/script\u003e\n\n\n\n\u003c\/body\u003e","brand":"Chateau Figeac","offers":[{"title":"Default Title","offer_id":53235846152521,"sku":null,"price":175.0,"currency_code":"EUR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0791\/8593\/6713\/files\/syatto-pijag-2005-ledeuwain-414.webp?v=1756356727","url":"https:\/\/xwine.club\/products\/%ec%83%a4%eb%98%90-%ed%94%bc%ec%9e%91-2021","provider":"엑스와인","version":"1.0","type":"link"}