{"product_id":"pieleu-jilaleudaeng-kkotteu-deu-nwi-billajyu-leu-bokeulaeng-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 Pierre Girardin Cote de Nuits-Villages 'Le Vaucrain'\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: Burgundy (Pinot Noir) Minimalism - Ruby Red Accent *\/\n        :root {\n            --accent-color: #A62C2C; \/* Ruby Red *\/\n            --dark-accent: #7B1B1B; \/* Dark Ruby *\/\n            --product-bg: #FFF7F7; \/* Pale Pink\/Near White *\/\n            --wine-color: #A62C2C; \/* 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 (Red Fruit\/Earthy\/Oak) *\/\n        .aroma-item:nth-child(1) { background-color: #A62C2C; color: #ffffff; } \/* Red Fruit, Cherry, Raspberry *\/\n        .aroma-item:nth-child(1) i { color: #ffffff; }\n        .aroma-item:nth-child(2) { background-color: #71717a; color: #ffffff; } \/* Earthy, Mushroom, Forest Floor *\/\n        .aroma-item:nth-child(2) i { color: #ffffff; }\n        .aroma-item:nth-child(3) { background-color: #8B4513; color: #ffffff; } \/* Oak, Vanilla, Spice *\/\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\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=\"4xl md:text-5xl font-bold mb-2 text-heading flex items-center justify-center\"\u003e\n            Pierre Girardin Cote de Nuits-Villages 'Le Vaucrain' 2021\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 --\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                🇫🇷 **부르고뉴의 라이징 스타** (2021 빈티지) | 꼬뜨 드 뉘 피노 누아 🇫🇷\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            🇫🇷 프랑스 부르고뉴 꼬뜨 드 뉘 빌라쥬 | 피노 누아 (Pinot Noir) 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 the provided URL --\u003e\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-11-12%2015.57.51.jpg-0e09ae79-6ada-445e-a9d5-863e55851e3e\" onerror=\"this.onerror=null;this.src='https:\/\/placehold.co\/400x500\/FFF7F7\/7B1B1B?text=Le+Vaucrain+2021';\" alt=\"Pierre Girardin Cote de Nuits-Villages 'Le Vaucrain' 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);\" loading=\"lazy\"\u003e\n            \u003c\/div\u003e\n\n            \u003c!-- Vivino Score (4.0 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\/7B1B1B\/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.0\u003c\/p\u003e\n                \u003cp class=\"critic-name\"\u003e(34 평가 기준)\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프랑스 부르고뉴, 꼬뜨 드 뉘 빌라쥬\u003c\/p\u003e\n                    \u003cp class=\"text-sm text-gray-600\"\u003ePierre Girardin\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: #F8E7EA;\"\u003e\n                \u003cp class=\"text-base text-gray-700 font-medium\"\u003e2021 빈티지 시장 평균 가격 (Wine-Searcher)\u003c\/p\u003e\n                \u003cp class=\"text-xl font-bold text-gray-700 mt-1 line-through\"\u003e€ 50.00\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€ 58.00\u003c\/p\u003e\n                \u003cp class=\"text-xs text-red-600 font-semibold mt-1\"\u003e부르고뉴 라이징 스타의 피노 누아!\u003c\/p\u003e\n            \u003c\/div\u003e\n\n            \u003c!-- Expert Reviews Section (Reference Score) --\u003e\u003cdiv class=\"container-box w-full mt-6\"\u003e\n                \u003ch3 class=\"text-xl font-bold mb-4 text-heading text-center\"\u003e전문가 평점 (참고)\u003c\/h3\u003e\n                \u003cdiv class=\"expert-score-grid\"\u003e\n                    \n                    \u003c!-- 1. 2021 Critics Score (N\/A) --\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);\"\u003eN\/A\u003c\/p\u003e\n                        \u003cp class=\"critic-name font-bold text-gray-800\"\u003eCritics Score (2021) \/ 100\u003c\/p\u003e\n                    \u003c\/div\u003e\n\n                    \u003c!-- 2. Critics Avg (All) Score (91\u0026#51216;) --\u003e\u003cdiv class=\"score-item\" style=\"grid-column: span 1 \/ span 1;\"\u003e\n                        \u003cp class=\"score-value\"\u003e91\u003c\/p\u003e\n                        \u003cp class=\"critic-name\"\u003eCritics Avg (All Vintages) \/ 100\u003c\/p\u003e\n                    \u003c\/div\u003e\n                    \n                    \u003c!-- 3. Critics Avg Price (\u0026euro;50.00) --\u003e\u003cdiv class=\"score-item\" style=\"grid-column: span 2 \/ span 2; min-height: 50px; background-color: #fefefe;\"\u003e\n                        \u003cp class=\"critic-name\"\u003e2021 빈티지 시장 평균 가격: \u003cspan class=\"score-value inline-block text-xl\"\u003e€50.00\u003c\/span\u003e\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                    **피에르 지라르댕(Pierre Girardin)**은 부르고뉴 뫼르소(Meursault)를 기반으로 활동하는 13대째 와인메이커 가문의 일원입니다. 그는 매우 어린 나이에 자신의 레이블을 설립하여, 부르고뉴의 \"라이징 스타\"이자 가장 주목받는 젊은 생산자 중 한 명이 되었습니다. 그의 와인은 정밀함(precision)과 순수함(purity), 그리고 테루아의 명확한 표현을 특징으로 합니다.\n                \u003c\/p\u003e\n                \u003cp class=\"mb-4 text-gray-800 leading-relaxed font-semibold\"\u003e\n                    **꼬뜨 드 뉘 빌라쥬 '르 보크랭(Le Vaucrain)'**은 꼬뜨 드 뉘 지역의 피노 누아 와인으로, 밭의 특성을 잘 살린 와인입니다. 피에르 지라르댕의 모던한 양조 스타일과 만나, 섬세한 붉은 과실 풍미와 함께 피노 누아 특유의 흙, 버섯, 그리고 스파이시한 노트를 복합적으로 보여줍니다. 2021년 빈티지는 특히 산도가 강조되어 더욱 우아한 스타일을 보여줍니다.\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 모던하고 정밀한 스타일의 부르고뉴 피노 누아. 중간 바디감과 높은 산도, 그리고 붉은 과실과 흙의 복합적인 풍미가 특징입니다.\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\"\u003e2021 빈티지에 대한 전문가 평점은 아직 집계되지 않았으나, 2022 빈티지는 **91점**의 평가를 받았습니다.\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-cherry\"\u003e\u003c\/i\u003e\n                            \u003cp class=\"mt-2 text-xs font-semibold text-white\"\u003eRed Fruit, Cherry, Raspberry (붉은 과일, 체리, 라즈베리)\u003c\/p\u003e\n                            \u003cp class=\"text-xs text-gray-100\"\u003e(풍미 추정)\u003c\/p\u003e\n                        \u003c\/div\u003e\n                        \u003cdiv class=\"aroma-item\"\u003e \n                            \u003ci class=\"fas fa-seedling\"\u003e\u003c\/i\u003e\n                            \u003cp class=\"mt-2 text-xs font-semibold text-white\"\u003eEarthy, Mushroom (흙, 버섯, 숲)\u003c\/p\u003e\n                            \u003cp class=\"text-xs text-gray-100\"\u003e(풍미 추정)\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, Vanilla, Spice (오크, 바닐라, 스파이스)\u003c\/p\u003e\n                            \u003cp class=\"text-xs text-gray-100\"\u003e(풍미 추정)\u003c\/p\u003e\n                        \u003c\/div\u003e\n                    \u003c\/div\u003e\n                    \u003cp class=\"text-xs text-center text-gray-500 italic\"\u003e(참고: 유저 리뷰 수가 적어 일반적인 피노 누아 풍미를 기반으로 함)\u003c\/p\u003e\n                \u003c\/div\u003e\n\n                \u003c!-- Wine Profile Bar Summary - Pinot Noir specific --\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: Medium-Bold ~ 65% --\u003e\u003cdiv class=\"wine-profile-fill\" style=\"width: 65%;\"\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\"\u003eMedium-Bold\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: Medium ~ 60% --\u003e\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\"\u003eMedium\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: Medium-High ~ 70% --\u003e\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\"\u003eMedium-High\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\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\"\u003eVery Dry\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\"\u003e2021 빈티지의 시장 평균 가격은 **€50.00**이며, 이 와인은 **€58.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 (Pinot Noir) --\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-sm font-semibold text-white\"\u003e오리 가슴살 구이 (Magret de Canard)\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-white\"\u003e뵈프 부르기뇽 (Boeuf Bourguignon)\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-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.17\" 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₩ 98,262\u003c\/p\u003e\n                \u003cp id=\"krwNote\" class=\"krw-note\"\u003e\n                    \u003c!-- Initial calculated based on 1694.17 * 58.00 --\u003e\n                    ※ 1 EUR = 1,694.17 KRW 기준 (Google Search) - **판매가 €58.00 기준**\n                \u003c\/p\u003e\n                \u003cp id=\"krwDisclaimer\" class=\"krw-note mt-2 font-semibold text-gray-700\"\u003e\n                    카드사에 따라 적용 환율이 다를 수 있으며, 판매가는 구글 환율을 토대로 임의로 설정되었으니 참고 부탁 드립니다.\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=Pierre+Girardin\" class=\"button-link\" title=\"Pierre Girardin 전체 상품 바로가기\" style=\"background-color: var(--dark-accent); color: #ffffff;\" aria-label=\"Pierre Girardin 전체 상품 바로가기\"\u003e\n                    \u003cspan class=\"text-lg\"\u003ePierre Girardin 전체 상품 바로가기\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 = 58.00; \/\/ \u0026#54032;\u0026#47588;\u0026#44032;: \u0026euro;58.00\n    const MARKET_PRICE_EUR = 50.00; \/\/ 2021 \u0026#48712;\u0026#54000;\u0026#51648; \u0026#49884;\u0026#51109; \u0026#54217;\u0026#44512; \u0026#44032;\u0026#44201;: \u0026euro;50.00\n    const INITIAL_RATE = 1694.17; \/\/ \u0026#51060;\u0026#51204; \u0026#45824;\u0026#54868;\u0026#50640;\u0026#49436; \u0026#49444;\u0026#51221;\u0026#46108; \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 = \"\"; \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 (2021: N\/A, 2022: 91)\n        vintageData = {\n            labels: ['2021', '2022'], \n            datasets: [{\n                label: 'Critics Avg \/ 100', \n                data: [null, 91], \n                backgroundColor: (context) =\u003e {\n                    \/\/ Highlight 2021 (index 0)\n                    return context.dataIndex === 0 ? '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: 88, \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        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 (green line, Jul 2023 - Oct 2025)\n            const priceHistoryData = [53, 57, 53, 60, 52, 58, 55, 58, 59, 59, 56, 58, 56, 45, 43]; \n\n            priceData = { \n                labels: ['Jul 2023', 'Oct', 'Jan 2024', 'Apr', 'Jul', 'Oct', 'Jan 2025', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct 2025'],\n                datasets: [\n                    {\n                        \/\/ Historical Price Line (Average Market Price)\n                        label: 'Estimated Market Price (EUR)', \n                        data: priceHistoryData,\n                        backgroundColor: 'transparent', \n                        borderColor: '#006400', \/\/ Dark Green line color from the graph\n                        borderWidth: 2,\n                        tension: 0.4, \n                        pointRadius: 4,\n                        pointBackgroundColor: '#006400', \n                        fill: false, \n                        type: 'line',\n                        order: 1\n                    },\n                    {\n                        \/\/ Selling Price Marker (\u0026euro;58.00)\n                        label: 'Selling Price (\u0026euro;58.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: 40, \n                        max: 90, \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.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":"PVG","offers":[{"title":"Default Title","offer_id":53302671343945,"sku":null,"price":58.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0791\/8593\/6713\/files\/2025-11-1216.00.14.png?v=1762959628","url":"https:\/\/xwine.club\/products\/pieleu-jilaleudaeng-kkotteu-deu-nwi-billajyu-leu-bokeulaeng-2021","provider":"엑스와인","version":"1.0","type":"link"}