{"product_id":"풀-자불레-에르미따주-라-샤펠-2020","title":"풀 자불레 에르미따주 라 샤펠 2020","description":"\u003cbody\u003e\n\n\n    \n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n    \u003ctitle\u003e2020 Paul Jaboulet Aîné Hermitage 'La Chapelle'\u003c\/title\u003e\n    \u003c!-- Tailwind CSS CDN --\u003e\u003cscript src=\"https:\/\/cdn.tailwindcss.com\"\u003e\u003c\/script\u003e\n    \u003c!-- Font Awesome for icons --\u003e\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\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: Iconic Hermitage Syrah - Dark Red\/Garnet Accent *\/\n        :root {\n            --accent-color: #8B0000; \/* Dark Red \/ Garnet *\/\n            --dark-accent: #660000; \/* Very Dark Red *\/\n            --product-bg: #FFF8F8; \/* Pale Red\/Near White *\/\n            --wine-color: #8B0000; \/* Deep Red Wine Color *\/\n        }\n        body {\n            \/* FONT STACK (Inter prioritized) *\/\n            font-family: 'Inter', -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n            color: #1d1d1f; \n            position: relative;\n            overflow-x: hidden;\n            line-height: 1.6; \n            background-color: #f9f9f9; \n        }\n        .container-box {\n            background-color: #ffffff;\n            border-radius: 12px;\n            padding: 2.5rem;\n            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); \n            border: 1px solid #e5e5e5; \n        }\n        .accent-text {\n            color: var(--accent-color); \n        }\n        .text-heading {\n            color: #1d1d1f; \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); \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        .product-placeholder {\n            \/* Image styling for Red Wine Bottle *\/\n            background-color: var(--product-bg); \n            border-color: var(--accent-color); \n            object-fit: contain;\n            width: 100%;\n            height: 350px;\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); \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-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        \/* 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            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        \/* Custom Colors for Aroma Items (Earthy\/Black Fruit\/Oak) *\/\n        .aroma-item:nth-child(1) { background-color: #71717a; color: #ffffff; } \/* Leather, earthy, smoke *\/\n        .aroma-item:nth-child(1) i { color: #ffffff; }\n        .aroma-item:nth-child(2) { background-color: #3B0000; color: #ffffff; } \/* Blackberry, plum *\/\n        .aroma-item:nth-child(2) i { color: #ffffff; }\n        .aroma-item:nth-child(3) { background-color: #8B4513; color: #ffffff; } \/* Oak, tobacco, chocolate *\/\n        .aroma-item:nth-child(3) i { color: #ffffff; }\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    \u003c\/style\u003e\n\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\u003cheader class=\"text-center mb-8\"\u003e\n        \n        \u003ch1 class=\"text-4xl md:text-5xl font-bold mb-2 text-heading flex items-center justify-center\"\u003e\n            2020 Paul Jaboulet Aîné Hermitage 'La Chapelle'\n        \u003c\/h1\u003e\n        \u003ch2 class=\"text-2xl md:text-3xl font-bold text-gray-800 mb-4\"\u003e\n            [에르미타주] 2020 폴 자불레 에네 에르미타주 '라 샤펠'\n        \u003c\/h2\u003e\n        \n        \u003c!-- Custom Highlight Emphasis --\u003e\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                🇫🇷 **Vinous 96-98점** | 론(Rhône)의 전설, '라 샤펠'\n            \u003c\/span\u003e\n        \u003c\/div\u003e\n        \n        \u003c!-- Expert Score Emphasis --\u003e\u003cp class=\"text-lg md:text-xl font-semibold leading-relaxed text-heading mt-4 pb-2 inline-block\"\u003e\n            🇫🇷 프랑스 북부 론 (에르미타주 AOC) | 쉬라\/시라 100% 🇫🇷\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\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 Placeholder --\u003e\n                \u003cimg src=\"https:\/\/placehold.co\/400x500\/FFF8F8\/660000?text=Paul+Jaboulet+La+Chapelle+2020\" onerror=\"this.onerror=null;this.src='https:\/\/placehold.co\/400x500\/FFF8F8\/660000?text=Paul+Jaboulet+La+Chapelle+2020';\" alt=\"2020 Paul Jaboulet Aîné Hermitage 'La Chapelle' 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);\" loading=\"lazy\"\u003e\n            \u003c\/div\u003e\n\n            \u003c!-- Vivino Score (4.3 from image) --\u003e\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\/660000\/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.3\u003c\/p\u003e\n                \u003cp class=\"critic-name\"\u003e(5,137 평가 기준)\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 font-bold\"\u003e풀 바디 드라이 레드 와인\u003c\/p\u003e\n                    \u003cp class=\"text-sm text-gray-600\"\u003e(품종: 쉬라\/시라 100%)\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프랑스 론, 에르미타주 AOC\u003c\/p\u003e\n                    \u003cp class=\"text-sm text-gray-600\"\u003ePaul Jaboulet Aîné\u003c\/p\u003e\n                \u003c\/div\u003e\n            \u003c\/div\u003e\n            \n            \u003c!-- Price Highlight Box (Selling Price vs Market Price) --\u003e\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\"\u003e2020 빈티지 시장 평균 가격 (Wine-Searcher)\u003c\/p\u003e\n                \u003cp class=\"text-xl font-bold text-gray-700 mt-1 line-through\"\u003e€ 185.60\u003c\/p\u003e\n                \u003cp class=\"text-xs text-green-600 font-semibold mt-1\"\u003e평균가 대비 -7% 할인 특가!\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€ 172.00\u003c\/p\u003e\n                \u003cp class=\"text-xs text-red-600 font-semibold mt-1\"\u003eVinous 96-98점의 아이코닉 와인!\u003c\/p\u003e\n            \u003c\/div\u003e\n\n            \u003c!-- Expert Reviews Section (2020 Score) - EMPHASIZED --\u003e\u003cdiv class=\"container-box w-full mt-6\"\u003e\n                \u003ch3 class=\"text-xl font-bold mb-4 text-heading text-center\"\u003e전문가 평점 (2020 빈티지)\u003c\/h3\u003e\n                \u003cdiv class=\"expert-score-grid\"\u003e\n                    \n                    \u003c!-- 1. Vinous (96-98) --\u003e\u003cdiv class=\"score-item highlighted\" style=\"grid-column: span 1 \/ span 1;\"\u003e\n                        \u003cp class=\"score-value text-4xl\" style=\"color: var(--dark-accent);\"\u003e96-98\u003c\/p\u003e\n                        \u003cp class=\"critic-name font-bold text-gray-800\"\u003eVinous (Galloni)\u003c\/p\u003e\n                    \u003c\/div\u003e\n\n                    \u003c!-- 2. James Suckling (96-97) --\u003e\u003cdiv class=\"score-item highlighted\" style=\"grid-column: span 1 \/ span 1;\"\u003e\n                        \u003cp class=\"score-value text-4xl\" style=\"color: var(--dark-accent);\"\u003e96-97\u003c\/p\u003e\n                        \u003cp class=\"critic-name font-bold text-gray-800\"\u003eJames Suckling\u003c\/p\u003e\n                    \u003c\/div\u003e\n                    \n                    \u003c!-- 3. Robert Parker (95) --\u003e\u003cdiv class=\"score-item\" style=\"grid-column: span 1 \/ span 1;\"\u003e\n                        \u003cp class=\"score-value\"\u003e95\u003c\/p\u003e\n                        \u003cp class=\"critic-name\"\u003eRobert Parker\u003c\/p\u003e\n                    \u003c\/div\u003e\n                    \n                    \u003c!-- 4. Decanter (93) --\u003e\u003cdiv class=\"score-item\" style=\"grid-column: span 1 \/ span 1;\"\u003e\n                         \u003cp class=\"score-value\"\u003e93\u003c\/p\u003e\n                        \u003cp class=\"critic-name\"\u003eDecanter\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\u003cdiv class=\"md:col-span-2\"\u003e\n            \n            \u003c!-- Winery Story \u0026 Tasting Note --\u003e\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\"\u003e\n                    **폴 자불레 에네(Paul Jaboulet Aîné)**는 1834년부터 론(Rhône) 지역을 이끌어 온 전설적인 생산자입니다. 그들의 아이콘 와인인 **'에르미타주 라 샤펠(Hermitage La Chapelle)'**은 에르미타주 언덕 꼭대기에 위치한 작은 예배당(St. Christopher's Chapel)의 이름에서 유래했으며, 세계에서 가장 위대한 와인 중 하나로 꼽힙니다.\n                \u003c\/p\u003e\n                \u003cp class=\"mb-4 text-gray-800 leading-relaxed font-semibold accent-text\"\u003e\n                    2020 빈티지 테이스팅 노트 (Vinous 96-98):\n                \u003c\/p\u003e\n                \u003cp class=\"mb-4 text-gray-800 leading-relaxed\"\u003e\n                    2020 빈티지는 평론가들의 압도적인 찬사를 받았습니다. 깊고 농축된 색상에, 블랙베리(Blackberry), 자두(Plum) 등 검은 과실의 아로마가 폭발합니다. 뒤이어 가죽(Leather), 흙(Earthy), 스모크, 감초, 후추 향이 복합미를 더하며, 오크, 담배, 초콜릿 뉘앙스가 느껴집니다. 입안에서는 강력한 파워(Bold), 촘촘한 타닌(Tannic), 그리고 훌륭한 산미(Acidic)가 조화를 이루며 수십 년간 숙성 잠재력을 지닌 와인입니다.\n                \u003c\/p\u003e\n                \u003cdiv class=\"bg-gray-100 p-3 rounded-lg text-sm text-gray-700\"\u003e\n                    \u003cspan class=\"font-bold\"\u003e최적 시음 기간:\u003c\/span\u003e 2028년 ~ 2050+년 (전문가 추천)\n                \u003c\/div\u003e\n            \u003c\/div\u003e\n\n            \u003c!-- Vintage Score Grid and Context --\u003e\u003cdiv class=\"container-box mb-8\"\u003e\n                \u003ch3 class=\"text-2xl font-bold mb-4 text-heading text-center\"\u003e빈티지 점수 비교 (Critics Avg \/ 100 기준)\u003c\/h3\u003e\n                \u003cdiv class=\"w-full flex justify-center items-center\"\u003e\n                    \u003cdiv class=\"chart-container flex-grow max-w-lg\" style=\"height: 250px;\"\u003e\n                        \u003ccanvas id=\"vintageChart\"\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\"\u003e2020 빈티지는 **94점** (Critics Avg)으로, 95점을 받은 2018, 2019, 2022년과 함께 최근 5년 중 최고의 빈티지 중 하나로 평가받았습니다.\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!-- Expert Tasting Notes --\u003e\u003cdiv class=\"container-box mb-8\"\u003e\n                \u003ch3 class=\"text-2xl font-bold mb-4 text-heading\"\u003e와인 풍미 요약 및 유저 노트\u003c\/h3\u003e\n                \n                \u003c!-- Tasting Note based on User Reviews --\u003e\u003cdiv class=\"space-y-4 text-left p-4 bg-gray-50 rounded-lg border border-gray-200 mb-4\"\u003e\n                    \u003cp class=\"text-base font-semibold accent-text\"\u003e주요 유저 리뷰 풍미 프로필\u003c\/p\u003e\n                    \u003cdiv class=\"aroma-grid\"\u003e\n                        \u003cdiv class=\"aroma-item\"\u003e \n                            \u003ci class=\"fas fa-hiking\"\u003e\u003c\/i\u003e\n                            \u003cp class=\"mt-2 text-xs font-semibold text-white\"\u003eLeather, Earthy, Smoke (가죽, 흙, 스모크)\u003c\/p\u003e\n                            \u003cp class=\"text-xs text-gray-100\"\u003e(1606 언급)\u003c\/p\u003e\n                        \u003c\/div\u003e\n                        \u003cdiv class=\"aroma-item\"\u003e \n                            \u003ci class=\"fas fa-blackberry\"\u003e\u003c\/i\u003e\n                            \u003cp class=\"mt-2 text-xs font-semibold text-white\"\u003eBlackberry, Plum (블랙베리, 자두)\u003c\/p\u003e\n                            \u003cp class=\"text-xs text-gray-100\"\u003e(1192 언급)\u003c\/p\u003e\n                        \u003c\/div\u003e\n                        \u003cdiv class=\"aroma-item\"\u003e \n                            \u003ci class=\"fas fa-wine-barrel\"\u003e\u003c\/i\u003e\n                            \u003cp class=\"mt-2 text-xs font-semibold text-white\"\u003eOak, Tobacco, Chocolate (오크, 담배, 초콜릿)\u003c\/p\u003e\n                            \u003cp class=\"text-xs text-gray-100\"\u003e(877 언급)\u003c\/p\u003e\n                        \u003c\/div\u003e\n                    \u003c\/div\u003e\n                \u003c\/div\u003e\n\n                \u003c!-- Wine Profile Bar Summary --\u003e\u003ch4 class=\"text-xl font-bold text-heading mt-6 mb-4\"\u003e와인 풍미 프로필 (유저 리뷰 기반)\u003c\/h4\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!-- Body: Bold ~ 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\"\u003eBold\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: ~ 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\"\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: ~ 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\"\u003eAcidic\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!-- Sweetness: Dry ~ 15% --\u003e\n                            \u003cdiv class=\"wine-profile-fill\" style=\"width: 15%;\"\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\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\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\" style=\"height: 350px;\"\u003e\n                        \u003ccanvas id=\"priceChart\"\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최근 시장 평균 가격은 **€185.60**이며, 이 와인은 **€172.00**에 판매되어 가격 경쟁력이 뛰어납니다.\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 (Hermitage Syrah) --\u003e\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-xs font-semibold text-white\"\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-xs font-semibold text-white\"\u003e블랙 페퍼 스테이크\u003c\/p\u003e\n                    \u003c\/div\u003e\n                    \u003cdiv class=\"aroma-item\"\u003e\n                        \u003ci class=\"fas fa-feather-alt\"\u003e\u003c\/i\u003e\n                        \u003cp class=\"mt-2 text-xs font-semibold text-white\"\u003e오리 가슴살 요리\u003c\/p\u003e\n                    \u003c\/div\u003e\n                \u003c\/div\u003e\n            \u003c\/div\u003e\n\n            \u003c!-- KRW Estimated Payment Box --\u003e\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=\"1694.93\" 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₩ 291,528\u003c\/p\u003e\n                \u003cp id=\"krwNote\" class=\"krw-note\"\u003e\n                    \u003c!-- Initial calculated based on 1694.93 * 172.00 --\u003e\n                    ※ 1 EUR = 1,694.93 KRW 기준 (Google Search) - **판매가 €172.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\u003cdiv class=\"text-center mt-8\"\u003e\n                \u003ca href=\"\/collections\/vendors?q=Paul+Jaboulet+A%C3%AEn%C3%A9\" class=\"button-link\" title=\"Paul Jaboulet Aîné 전체 상품 바로가기\" style=\"background-color: var(--dark-accent); color: #ffffff;\" aria-label=\"Paul Jaboulet Aîné 전체 상품 바로가기\"\u003e\n                    \u003cspan class=\"text-lg\"\u003ePaul Jaboulet Aîné 전체 상품\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 = { chart: null };\n    let priceChartInstance = { chart: null };\n    const accentColor = 'var(--accent-color)'; \n    const darkAccentColor = 'var(--dark-accent)'; \n    const SELLING_PRICE_EUR = 172.00; \/\/ \u0026#54032;\u0026#47588;\u0026#44032;: \u0026euro;172.00\n    const MARKET_PRICE_EUR = 185.60; \/\/ 2020 \u0026#48712;\u0026#54000;\u0026#51648; \u0026#49884;\u0026#51109; \u0026#54217;\u0026#44512; \u0026#44032;\u0026#44201;: \u0026euro;185.60 (From Price History)\n    const INITIAL_RATE = 1694.93; \/\/ \u0026#52488;\u0026#44592; \u0026#54872;\u0026#50984;\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                \/\/ Ensure canvas height is set before initializing the chart\n                const container = ctx.canvas.parentElement;\n                if (container.style.height) {\n                    ctx.canvas.style.height = container.style.height;\n                }\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 = \"\"; \/\/ API \u0026#53412;\u0026#45716; Canvas \u0026#54872;\u0026#44221;\u0026#50640;\u0026#49436; \u0026#51088;\u0026#46041;\u0026#51004;\u0026#47196; \u0026#51228;\u0026#44277;\u0026#46121;\u0026#45768;\u0026#45796;.\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        \n        \/\/ --- Vintage Score Chart Configuration ---\n        \/\/ Data derived from screenshot (2018: 95, 2019: 95, 2020: 94, 2021: 93, 2022: 95)\n        vintageData = {\n            labels: ['2018', '2019', '2020', '2021', '2022'], \n            datasets: [{\n                label: 'Critics Avg \/ 100', \n                data: [95, 95, 94, 93, 95], \n                backgroundColor: (context) =\u003e {\n                    \/\/ Highlight 2020 (index 2)\n                    return context.dataIndex === 2 ? 'var(--accent-color)' : '#E7E5E4'; \n                },\n                borderColor: 'var(--dark-accent)', \n                borderWidth: 1,\n                borderRadius: 4,\n                fill: false,\n                type: 'bar',\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: 92, \n                    max: 96, \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        vintageCtx = document.getElementById('vintageChart').getContext('2d');\n        vintageChartInstance.chart = new Chart(vintageCtx, { type: 'bar', data: vintageData, options: vintageOptions });\n\n        \n        \/\/ --- Price History Chart Configuration ---\n        const priceElement = document.getElementById('priceChart');\n        if (priceElement) {\n            priceCtx = priceElement.getContext('2d');\n            \n            \/\/ Estimated price history data reflecting the trend in the image\n            const priceHistoryData = [150, 155, 178, 182, 180, 185, 182, 184, 183, MARKET_PRICE_EUR]; \/\/ Trend of average price\n            const priceLabels = ['2022 May', 'Sep', '2023 Jan', 'May', 'Sep', '2024 Jan', 'May', 'Sep', '2025 Jan', 'Jul'];\n\n            priceData = { \n                labels: priceLabels,\n                datasets: [\n                    {\n                        \/\/ Historical Price Line (Average Market Price)\n                        label: 'Estimated Market Price (EUR)', \n                        data: priceHistoryData,\n                        backgroundColor: 'transparent', \n                        borderColor: '#A0A0A0', \/\/ Gray line color\n                        borderWidth: 2,\n                        tension: 0.4, \n                        pointRadius: 4,\n                        pointBackgroundColor: '#A0A0A0', \n                        fill: false, \n                        type: 'line',\n                        order: 1\n                    },\n                    {\n                        \/\/ Selling Price Marker (\u0026euro;172.00)\n                        label: 'Selling Price (\u0026euro;172.00 - Our Price)',\n                        data: priceHistoryData.map((d, i) =\u003e (i === priceHistoryData.length - 1 ? SELLING_PRICE_EUR : null)),\n                        borderColor: 'var(--accent-color)',\n                        pointBackgroundColor: 'var(--accent-color)',\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) { label += ': '; }\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: 120, \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: 20, \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.chart = new Chart(priceCtx, { type: 'line', data: priceData, options: priceOptions });\n\n            \/* FINAL STABILITY FIX: Add resize listener back and update chart when window size changes *\/\n            window.addEventListener('resize', () =\u003e {\n                \n                if (vintageChartInstance.chart) {\n                    vintageChartInstance.chart.destroy(); \n                    vintageChartInstance.chart = new Chart(vintageCtx, { type: 'bar', data: vintageData, options: vintageOptions });\n                }\n\n                if (priceChartInstance.chart) {\n                    priceChartInstance.chart.destroy(); \n                    priceChartInstance.chart = new Chart(priceCtx, { type: 'line', data: priceData, options: priceOptions });\n                }\n            });\n        }\n        \n        \/\/ --- 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.toFixed(2);\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\u003c\/body\u003e","brand":"Domaine Paul Jaboulet Aine","offers":[{"title":"Default Title","offer_id":53303622041929,"sku":null,"price":168.0,"currency_code":"EUR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0791\/8593\/6713\/files\/hanjeongteugga-pul-jabulle-eleumittaju-la-syapel-2006-ledeuwain-716.webp?v=1758870250","url":"https:\/\/xwine.club\/products\/%ed%92%80-%ec%9e%90%eb%b6%88%eb%a0%88-%ec%97%90%eb%a5%b4%eb%af%b8%eb%94%b0%ec%a3%bc-%eb%9d%bc-%ec%83%a4%ed%8e%a0-2020","provider":"엑스와인","version":"1.0","type":"link"}