{"product_id":"샤또-파비-레-아롬-드-파비-2017","title":"샤또 파비 레 아롬 드 파비 2017 -보르도 빈티지 클럽 선공개-","description":"\u003cbody\u003e\n\n\n    \n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n    \u003ctitle\u003e2017 Château Pavie Les Aromés de Pavie\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-fontawesome\/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 - Deep Purple\/Red Accent (Saint-\u0026Eacute;milion) *\/\n        :root {\n            --accent-color: #6A0DAD; \/* Deep Purple *\/\n            --dark-accent: #4B0A7B; \/* Darker Purple *\/\n            --product-bg: #FCF0FC; \/* Pale Lilac\/Pinkish-Purple *\/\n            --price-fill: rgba(106, 13, 173, 0.2);\n            --wine-color: #6A0DAD; \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 (Purple 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(1, 1fr); \n            gap: 1rem; \n            margin-top: 1rem;\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-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            2017 Château Pavie Les Aromés de Pavie Saint-Émilion Grand Cru\n        \u003c\/h1\u003e\n        \u003ch2 class=\"2xl md:text-3xl font-bold text-gray-800 mb-4\"\u003e\n            샤또 파비 레 아롬 드 파비 2017\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                🇫🇷 **[생떼밀리옹 그랑 크뤼 A]** | 샤또 파비의 세컨드 와인\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            🇫🇷 프랑스 보르도, 생떼밀리옹 (Saint-Émilion Grand Cru) | 메를로 블렌딩 🇫🇷\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 actual bottle image) --\u003e\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.37.39.jpg-6afab20e-17ed-475c-a367-1654c11a751c\" onerror=\"this.onerror=null;this.src='https:\/\/placehold.co\/400x500\/FCFBF0\/6A0DAD?text=Chateau+Pavie+2017';\" alt=\"Château Pavie Les Aromés de Pavie 2017 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\/4B0A7B\/ffffff?text=V';\" alt=\"Vivino Logo\" class=\"h-10 w-10 mx-auto rounded-full shadow-md mt-2\" loading=\"lazy\" data-original=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0791\/8593\/6713\/files\/ckyycsi9i00027b9gh6ww46da.jpg?v=1761306272\" data-files=\"ckyycsi9i00027b9gh6ww46da.jpg\"\u003e\n                \u003cp class=\"score-value\" style=\"color: var(--dark-accent);\"\u003e4.2\u003c\/p\u003e\n                \u003cp class=\"critic-name\"\u003e(2794 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프랑스 보르도, 생떼밀리옹 (Saint-Émilion Grand Cru)\u003c\/p\u003e\n                    \u003cp class=\"text-sm text-gray-600\"\u003e샤또 파비 (Château Pavie)의 세컨드 와인\u003c\/p\u003e\n                \u003c\/div\u003e\n            \u003c\/div\u003e\n            \u003c!-- Price Highlight Box (Selling Price) --\u003e\n            \u003cdiv class=\"container-box w-full 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 평균 가격 (2017 빈티지)\u003c\/p\u003e\n                \u003cp class=\"text-4xl font-extrabold accent-text mt-2\"\u003e€ 81.00\u003c\/p\u003e\n                \u003cp class=\"text-xs text-gray-500 mt-2\"\u003e파비의 명성을 담은 세컨드 와인.\u003c\/p\u003e\n            \u003c\/div\u003e\n\n            \u003c!-- Expert Reviews Section --\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주요 전문가 평점 (2017 빈티지)\u003c\/h3\u003e\n                \u003cdiv class=\"expert-score-grid\" style=\"grid-template-columns: repeat(1, 1fr);\"\u003e\n                    \n                    \u003c!-- 1. Critic Score (2017) --\u003e\n                    \u003cdiv class=\"score-item\"\u003e\n                        \u003cp class=\"score-value\"\u003e91\u003c\/p\u003e\n                        \u003cp class=\"critic-name\"\u003eCritics Avg\u003c\/p\u003e\n                    \u003c\/div\u003e\n\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와이너리 스토리\u003c\/h3\u003e\n                \u003cp class=\"mb-4 text-gray-800 leading-relaxed\"\u003e\n                    **샤또 파비(Château Pavie)**는 보르도 우안 생떼밀리옹에서 최고 등급인 **프리미에 그랑 크뤼 클라세 A**를 받은 명실상부한 탑 샤또입니다. **'레 아롬 드 파비(Les Aromés de Pavie)'**는 파비의 철학을 공유하며, 어린 나무 또는 선별되지 않은 구획의 포도로 만들어지는 세컨드 와인입니다. 이 와인은 파비 특유의 **농축미, 강렬한 타닌, 풍부한 오크 터치**를 합리적인 가격에 경험할 수 있게 합니다.\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 - Pomerol (Bold, Tannic, Dry, 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: 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\"\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: 60% --\u003e\n                            \u003cdiv class=\"wine-profile-fill\" style=\"width: 60%;\"\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\"\u003eTannic\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!-- Acidic: 45% (Rounded) --\u003e\n                            \u003cdiv class=\"wine-profile-fill\" style=\"width: 45%;\"\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\"\u003eAcidic Balance\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!-- Price Graph --\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=\"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평균 시장 가격은 **€78.88** 수준이며, 세컨드 와인임에도 꾸준히 높은 가격대를 유지하고 있습니다.\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 --\u003e\n            \u003cdiv class=\"container-box mb-8\"\u003e\n                \u003ch3 class=\"text-2xl font-bold mb-8 text-heading text-center\"\u003e와인 상세 정보\u003c\/h3\u003e\n                \u003cdiv class=\"aroma-grid\"\u003e\n                    \u003cdiv class=\"aroma-item\"\u003e\n\u003ci class=\"fas fa-berry-bush accent-text\"\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-cask accent-text\"\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-shoe-prints accent-text\"\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!-- MD's Comment --\u003e\n            \u003cdiv class=\"container-box mb-8\"\u003e\n                \u003ch3 class=\"text-2xl font-bold mb-4 text-heading\"\u003eMD's 조언\u003c\/h3\u003e\n                \u003cp class=\"text-gray-700 comment-italic mt-4\"\u003e\n                    \"2017년은 보르도 우안에게는 훌륭했던 해입니다. 레 아롬 드 파비는 농축된 메를로의 풍미와 강렬한 구조를 잘 보여줍니다. 지금 마셔도 좋지만, 2~3년 추가 숙성하면 더욱 부드러운 타닌과 복합적인 아로마를 즐길 수 있습니다.\"\n                \u003c\/p\u003e\n            \u003c\/div\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-steak\"\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-box\"\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-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                \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=\"1647.47\" 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₩ 116,960\u003c\/p\u003e\n                \u003cp id=\"krwNote\" class=\"krw-note\"\u003e\n                    ※ 1 EUR = 1,647.47 KRW 기준 (Google Search) - **판매가 €71.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=Ch%C3%A2teau+Pavie\" class=\"button-link\" title=\"More Château Pavie Products\" style=\"background-color: var(--dark-accent); color: #ffffff;\" aria-label=\"More Château Pavie Products\"\u003e\n                    \u003cspan class=\"text-lg\"\u003eChâteau Pavie 전체 상품 바로가기\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 = 71.00; \/\/ \u0026#54032;\u0026#47588; \u0026#44032;\u0026#44201;: \u0026euro;71.00 (\u0026#49324;\u0026#50857;\u0026#51088; \u0026#51648;\u0026#51221;)\n    const INITIAL_RATE = 1647.47; \/\/ Initial rate from user input\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;\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            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. Vintage Score Chart Configuration ---\n        vintageData = {\n            labels: ['2014', '2015', '2016', '2017', '2018'], \n            datasets: [{\n                label: 'Critic Score \/ 100', \n                data: [88, 91, 92, 91, 91], \n                backgroundColor: 'var(--dark-accent)', \n                borderColor: 'var(--dark-accent)',  \n                borderWidth: 1,\n                borderRadius: 4,\n                fill: false,\n                type: 'bar',\n                \/\/ Highlight the 2017 vintage (index 3)\n                backgroundColor: (context) =\u003e {\n                    return context.dataIndex === 3 ? 'var(--accent-color)' : '#E7E5E4';\n                },\n                hoverBackgroundColor: 'var(--accent-color)'\n            }]\n        };\n\n        vintageOptions = {\n            responsive: true,\n            maintainAspectRatio: false, \n            plugins: {\n                legend: { display: false },\n                title: { display: false }\n            },\n            scales: {\n                y: {\n                    beginAtZero: false,\n                    min: 85, \n                    max: 95, \n                    title: {\n                        display: true,\n                        text: 'Score', \n                        color: '#1d1d1f',\n                        font: { size: 10 } \n                    },\n                    ticks: {\n                        stepSize: 1, \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        const vintageElement = document.getElementById('vintageChart');\n        if (vintageElement) {\n            vintageCtx = vintageElement.getContext('2d');\n            vintageChartInstance = createChart(vintageCtx, 'bar', vintageData, vintageOptions, { chart: vintageChartInstance });\n        }\n\n\n        \/\/ --- 2. Price History Chart Configuration (Mock Data) ---\n        const priceElement = document.getElementById('priceChart');\n        if (priceElement) {\n            priceCtx = priceElement.getContext('2d');\n            \n            \/\/ Price data derived from Wine-Searcher\n            priceData = { \n                labels: ['2022 Jan', '2023 Jan', '2024 Jan', '2025 Jan', '2025 Oct'],\n                datasets: [\n                    {\n                        \/\/ Price Line\n                        label: 'Average Market Price (EUR)', \n                        data: [75, 90, 85, 80, 78.88], \n                        backgroundColor: 'var(--price-fill)', \n                        borderColor: 'var(--dark-accent)',\n                        borderWidth: 2,\n                        tension: 0.3, \n                        pointRadius: 4,\n                        pointBackgroundColor: 'var(--dark-accent)',\n                        fill: 'origin', \n                        type: 'line',\n                        order: 1\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: 60, \n                        max: 100, \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: 10,\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                if (vintageChartInstance \u0026\u0026 vintageChartInstance.chart) {\n                    vintageChartInstance.chart.destroy(); \n                    vintageChartInstance = createChart(vintageCtx, 'bar', vintageData, vintageOptions, { chart: null });\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        \/\/ --- 3. 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');\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\u003c\/body\u003e","brand":"Chateau Pavie","offers":[{"title":"Default Title","offer_id":53235786580297,"sku":null,"price":70.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0791\/8593\/6713\/files\/2015-syatto-pabi-le-alom-deu-ledeuwain-642.webp?v=1755353530","url":"https:\/\/xwine.club\/products\/%ec%83%a4%eb%98%90-%ed%8c%8c%eb%b9%84-%eb%a0%88-%ec%95%84%eb%a1%ac-%eb%93%9c-%ed%8c%8c%eb%b9%84-2017","provider":"엑스와인","version":"1.0","type":"link"}