{"product_id":"샤또-레오빌-라스-까스-2010","title":"샤또 레오빌 라스 까스 2010 -보르도 빈티지 클럽 선공개-","description":"\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n    \u003ctitle\u003e2010 Grand Vin de Léoville-Las Cases, Saint-Julien\u003c\/title\u003e\n    \u003c!-- Tailwind CSS CDN --\u003e\n    \u003cscript src=\"https:\/\/cdn.tailwindcss.com\"\u003e\u003c\/script\u003e\n    \u003c!-- Font Awesome for icons --\u003e\n    \u003clink rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/5.15.3\/css\/all.min.css\"\u003e\n    \u003c!-- Chart.js for graphs --\u003e\n    \u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@3.7.1\/dist\/chart.min.js\"\u003e\u003c\/script\u003e\n    \u003cstyle\u003e\n        \/* CRITICAL: APPLE-Inspired Minimalism \u0026 Korean Stability - Super Second Gold Accent *\/\n        :root {\n            --accent-color: #B08830; \/* Dark Gold\/Brass - Status Symbol *\/\n            --dark-accent: #876822;\n            --product-bg: #FFFDF5; \/* Pale Gold\/Cream *\/\n            --price-fill: rgba(176, 136, 48, 0.2);\n            --wine-color: #8B0000; \/* Deep Ruby Red for wine profile bars *\/\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 (Super Second Gold 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(3, 1fr); \/* 3 columns for smaller screen *\/\n            gap: 1rem; \n            margin-top: 1rem;\n        }\n        @media (min-width: 768px) {\n            .expert-score-grid {\n                grid-template-columns: repeat(5, 1fr); \/* 5 columns on desktop *\/\n            }\n        }\n        .score-item {\n            background-color: #fefefe;\n            padding: 0.5rem; \n            border-radius: 8px;\n            border: 1px solid #e5e5e5;\n            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            min-height: 70px; \n        }\n        .score-item.highlighted {\n            background-color: var(--product-bg);\n            border: 2px solid var(--accent-color);\n        }\n        .score-value {\n            font-size: 1.5rem; \n            font-weight: 800;\n            color: var(--accent-color);\n            line-height: 1.2; \n        }\n        .critic-name {\n            font-size: 0.8rem; \n            color: #4a4a68;\n            font-weight: 600;\n            line-height: 1; \n            margin-top: 0.25rem;\n        }\n        \/* Vivino style *\/\n        .vivino-box {\n            background-color: #ffffff;\n            padding: 1.5rem; \n            border-radius: 12px; \n            border: 1px solid #e5e5e5;\n            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); \n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            text-align: center;\n        }\n        .vivino-box .score-value {\n            font-size: 2.5rem; \n            font-weight: 900;\n            color: var(--dark-accent); \n            margin-top: 0.5rem;\n        }\n        .vivino-box .critic-name {\n            font-size: 0.9rem;\n            color: #71717a;\n        }\n        \/* KRW Price Info Box *\/\n        .krw-price-box {\n            background-color: #ffffff;\n            border-radius: 12px;\n            padding: 1.5rem;\n            text-align: center;\n            border: 1px solid #e5e5e5; \n        }\n        .krw-price {\n            font-size: 2.5rem;\n            font-weight: 900;\n            color: #1d1d1f;\n            margin-top: 0.5rem;\n            line-height: 1.2;\n        }\n        .krw-note {\n            font-size: 0.8rem;\n            color: #71717a; \/* Gray-600 *\/\n            margin-top: 0.5rem;\n        }\n        \/* Wine Profile Bar *\/\n        .wine-profile-bar {\n            height: 12px;\n            background-color: #e5e5e5;\n            border-radius: 6px;\n            overflow: hidden;\n            margin-bottom: 0.5rem;\n        }\n        .wine-profile-fill {\n            background-color: var(--wine-color);\n            height: 100%;\n        }\n        \/* Tasting Note Icons Grid *\/\n        .aroma-grid {\n            display: grid;\n            grid-template-columns: repeat(3, 1fr);\n            gap: 1rem;\n            text-align: center;\n        }\n        .aroma-item {\n            background-color: #f8f8f8;\n            border: 1px solid #ebebeb;\n            border-radius: 8px;\n            padding: 1rem 0.5rem;\n            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n            transition: transform 0.2s;\n        }\n        .aroma-item i {\n            color: var(--accent-color);\n            font-size: 2rem;\n            margin-bottom: 0.5rem;\n        }\n    \u003c\/style\u003e\n\n\n\n\u003cdiv class=\"max-w-5xl mx-auto px-4 py-8 md:py-16\"\u003e\n    \u003c!-- Header \u0026 Hero Section --\u003e\n    \u003cheader class=\"text-center mb-8\"\u003e\n        \n        \u003ch1 class=\"4xl md:text-5xl font-bold mb-2 text-heading flex items-center justify-center\"\u003e\n            2010 Château Léoville-Las Cases 'Grand Vin de Léoville'\n        \u003c\/h1\u003e\n        \u003ch2 class=\"2xl md:text-3xl font-bold text-gray-800 mb-4\"\u003e\n            샤또 레오빌 라스 까스 2010 (슈퍼 세컨드)\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                🇫🇷 **[100점 만점 빈티지]** | 1등급 와인에 필적하는 슈퍼 세컨드\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-Julien AOC) | Deuxième Cru Classé (2등급) 🇫🇷\n        \u003c\/p\u003e\n    \u003c\/header\u003e\n\n    \u003cmain class=\"grid grid-cols-1 md:grid-cols-3 gap-8\"\u003e\n        \u003c!-- Left Side: Product Image \u0026 Quick Info --\u003e\n        \u003cdiv class=\"md:col-span-1 flex flex-col items-center\"\u003e\n            \u003cdiv class=\"mb-8 w-full\"\u003e\n                \u003c!-- Product Image (Using mock image) --\u003e\n                \n                \u003cimg src=\"https:\/\/placehold.co\/400x500\/FFFDF5\/876822?text=Leoville-Las+Cases+2010\" onerror=\"this.onerror=null;this.src='https:\/\/placehold.co\/400x500\/FFFDF5\/876822?text=Leoville-Las+Cases+2010';\" alt=\"Château Léoville-Las Cases 2010 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 (Mocked Avg) --\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\/876822\/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.6\u003c\/p\u003e\n                \u003cp class=\"critic-name\"\u003e(5000+ Ratings)\u003c\/p\u003e\n            \u003c\/div\u003e\n            \n            \u003cdiv class=\"w-full text-center\"\u003e\n                \u003cdiv class=\"container-box mb-6\"\u003e\n                    \u003ch3 class=\"text-xl font-semibold mb-2 text-heading\"\u003e와인 종류\u003c\/h3\u003e\n                    \u003cp class=\"text-lg text-gray-800\"\u003e풀 바디 드라이 레드 와인 (보르도 블렌딩)\u003c\/p\u003e\n                    \u003cp class=\"text-sm text-gray-600\"\u003e(주품종: 까베르네 소비뇽)\u003c\/p\u003e\n                \u003c\/div\u003e\n                \u003cdiv class=\"container-box mb-6\"\u003e\n                    \u003ch3 class=\"text-xl font-semibold mb-2 text-heading\"\u003e지역 및 등급\u003c\/h3\u003e\n                    \u003cp class=\"text-lg text-gray-800\"\u003e프랑스 보르도, 생줄리앙\u003c\/p\u003e\n                    \u003cp class=\"text-sm text-gray-600\"\u003eGrand Vin de Léoville (Second Growth)\u003c\/p\u003e\n                \u003c\/div\u003e\n            \u003c\/div\u003e\n            \u003c!-- Price Highlight Box (Selling Price vs Market Price) --\u003e\n            \u003cdiv class=\"container-box w-full bg-red-50 border-red-200 mt-4 p-6 text-center\" style=\"background-color: var(--product-bg); border-color: #E0EEDF;\"\u003e\n                \u003cp class=\"text-base text-gray-700 font-medium\"\u003ewine-searcher 평균 시장가격 (2010 빈티지)\u003c\/p\u003e\n                \u003cp class=\"text-xl font-bold text-gray-700 mt-1\"\u003e~€ 255.43\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€ 310.00\u003c\/p\u003e\n                \u003cp class=\"text-xs text-red-500 font-semibold mt-1\"\u003e만점 빈티지의 가치!\u003c\/p\u003e\n            \u003c\/div\u003e\n\n            \u003c!-- Expert Reviews Section (2010 Score) - EMPHASIZED --\u003e\n            \u003cdiv class=\"container-box w-full mt-6\"\u003e\n                \u003ch3 class=\"text-xl font-bold mb-4 text-heading text-center\"\u003e전문가 평점 (2010 빈티지)\u003c\/h3\u003e\n                \u003cdiv class=\"expert-score-grid\"\u003e\n                    \n                    \u003c!-- 1. Decanter Score (HIGHLIGHTED) --\u003e\n                    \u003cdiv class=\"score-item highlighted\" style=\"background-color: var(--dark-accent); border-color: var(--accent-color);\"\u003e\n                        \u003cp class=\"score-value text-4xl\" style=\"color: white;\"\u003e100\u003c\/p\u003e\n                        \u003cp class=\"critic-name font-bold\" style=\"color: #FEEFB3;\"\u003eDecanter\u003c\/p\u003e\n                    \u003c\/div\u003e\n\n                    \u003c!-- 2. Wine Spectator Score --\u003e\n                    \u003cdiv class=\"score-item\"\u003e\n                        \u003cp class=\"score-value\"\u003e99\u003c\/p\u003e\n                        \u003cp class=\"critic-name\"\u003eW. Spectator\u003c\/p\u003e\n                    \u003c\/div\u003e\n\n                    \u003c!-- 3. J. Suckling Score --\u003e\n                    \u003cdiv class=\"score-item\"\u003e\n                        \u003cp class=\"score-value\"\u003e99\u003c\/p\u003e\n                        \u003cp class=\"critic-name\"\u003eJ. Suckling\u003c\/p\u003e\n                    \u003c\/div\u003e\n                    \n                    \u003c!-- 4. Robert Parker Score --\u003e\n                    \u003cdiv class=\"score-item\"\u003e\n                        \u003cp class=\"score-value\"\u003e98\u003c\/p\u003e\n                        \u003cp class=\"critic-name\"\u003eR. Parker\u003c\/p\u003e\n                    \u003c\/div\u003e\n\n                    \u003c!-- 5. Jeff Leve Score --\u003e\n                    \u003cdiv class=\"score-item\"\u003e\n                        \u003cp class=\"score-value\"\u003e98\u003c\/p\u003e\n                        \u003cp class=\"critic-name\"\u003eJeff Leve\u003c\/p\u003e\n                    \u003c\/div\u003e\n                \u003c\/div\u003e\n            \u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003c!-- Right Side: Details \u0026 Infographic --\u003e\n        \u003cdiv class=\"md:col-span-2\"\u003e\n            \n            \u003c!-- Winery Story --\u003e\n            \u003cdiv class=\"container-box mb-8\"\u003e\n                \u003ch3 class=\"text-2xl font-bold mb-4 text-heading\"\u003e와이너리 스토리 \u0026amp; 특징\u003c\/h3\u003e\n                \u003cp class=\"mb-4 text-gray-800 leading-relaxed font-semibold\"\u003e\n                    **샤또 레오빌 라스 까스(Château Léoville-Las Cases)**는 생줄리앙 지역의 2등급 샤또이지만, 그 품질과 명성 면에서 보르도 **'5대 1등급 샤또'에 준한다**는 평가를 받는 **슈퍼 세컨드**의 대명사입니다. 포도밭의 일부가 1등급 샤또인 샤또 라투르와 경계를 맞대고 있어 뛰어난 떼루아를 공유합니다.\n                \u003c\/p\u003e\n                \u003cp class=\"mb-4 text-gray-800 leading-relaxed\"\u003e\n                    **2010 빈티지**는 보르도 역사상 최고의 빈티지 중 하나로 꼽히며, 라스 까스는 이 해에 **Decanter로부터 만점(100점)**을 포함한 압도적인 찬사를 받았습니다. **기념비적인 구조감, 농축된 과일, 완벽한 밸런스**를 자랑하며, 수십 년간 숙성 가능한 잠재력을 지녔습니다.\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 - Las Cases 2010 (Monumental, High Tannic, High Acidic, Dry) --\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!-- Full-bodied: ~90% (Monumental) --\u003e\n                            \u003cdiv class=\"wine-profile-fill\" style=\"width: 90%;\"\u003e\u003c\/div\u003e\n                        \u003c\/div\u003e\n                        \u003cp class=\"w-1\/4 text-sm font-semibold text-gray-600 text-right pl-4\"\u003eMonumental\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: ~90% --\u003e\n                            \u003cdiv class=\"wine-profile-fill\" style=\"width: 90%;\"\u003e\u003c\/div\u003e\n                        \u003c\/div\u003e\n                        \u003cp class=\"w-1\/4 text-sm font-semibold text-gray-600 text-right pl-4\"\u003eHigh Tannic\u003c\/p\u003e\n                    \u003c\/div\u003e\n                    \u003cdiv class=\"flex items-center\"\u003e\n                        \u003cp class=\"w-1\/4 text-sm font-semibold text-gray-600 text-left pr-4\"\u003e산도\u003c\/p\u003e\n                        \u003cdiv class=\"wine-profile-bar w-3\/4\"\u003e\n                            \u003c!-- Acidity: ~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\"\u003eHigh Acidity\u003c\/p\u003e\n                    \u003c\/div\u003e\n                \u003c\/div\u003e\n                \u003cdiv class=\"bg-gray-100 p-4 rounded-lg mt-6 text-center border border-gray-200\"\u003e\n                    \u003cp class=\"text-sm text-gray-700 font-semibold\"\u003e주요 풍미: 블랙커런트, 카시스, 삼나무, 연필심, 흙, 스파이스\u003c\/p\u003e\n                \u003c\/div\u003e\n            \u003c\/div\u003e\n            \n            \u003chr class=\"border-t-2 border-gray-300 my-8\"\u003e\n            \n            \u003c!-- Tasting Notes Section (Mocked) --\u003e\n            \u003cdiv class=\"container-box mb-8\"\u003e\n                \u003ch3 class=\"text-2xl font-bold mb-8 text-heading text-center\"\u003e주요 시음 노트 (2010 빈티지)\u003c\/h3\u003e\n                \u003cdiv class=\"space-y-8\"\u003e\n                    \u003cdiv class=\"info-card\"\u003e\n                        \u003ch4 class=\"text-xl font-semibold mb-2 text-heading\"\u003e\n\u003ci class=\"fas fa-wine-glass-alt accent-text mr-2\"\u003e\u003c\/i\u003e향 (AROMA)\u003c\/h4\u003e\n                        \u003cp class=\"text-sm text-gray-700\"\u003e진하고 농축된 **블랙커런트, 카시스**의 과일 향이 지배적이며, 시간이 지나면 **삼나무, 정향, 미네랄** 뉘앙스가 폭발적으로 피어납니다. 매우 깊고 복합적인 아로마를 자랑합니다.\u003c\/p\u003e\n                    \u003c\/div\u003e\n                    \u003cdiv class=\"info-card\"\u003e\n                        \u003ch4 class=\"text-xl font-semibold mb-2 text-heading\"\u003e\n\u003ci class=\"fas fa-layer-group accent-text mr-2\"\u003e\u003c\/i\u003e맛 (TASTE \u0026amp; STRUCTURE)\u003c\/h4\u003e\n                        \u003cp class=\"text-sm text-gray-700\"\u003e입안에서는 **엄청난 밀도와 풀 바디**를 느낄 수 있으며, **강인하고 단단한 탄닌**이 높은 산도와 완벽한 균형을 이룹니다. 아직 '유아기(Infant)'에 있는 와인으로, 매우 긴 여운을 남깁니다.\u003c\/p\u003e\n                    \u003c\/div\u003e\n                    \u003cdiv class=\"info-card\"\u003e\n                        \u003ch4 class=\"text-xl font-semibold mb-2 text-heading\"\u003e\n\u003ci class=\"fas fa-hourglass-half accent-text mr-2\"\u003e\u003c\/i\u003e시음 적기\u003c\/h4\u003e\n                        \u003cp class=\"text-sm text-gray-700\"\u003e로버트 파커에 따르면 **2025년 이후**가 가장 좋을 것이며, 수십 년간 숙성하여 2차적인 복합미를 즐길 수 있는 **장기 숙성형 와인**입니다.\u003c\/p\u003e\n                    \u003c\/div\u003e\n                \u003c\/div\u003e\n            \u003c\/div\u003e\n\n            \u003chr class=\"border-t-2 border-gray-300 my-8\"\u003e\n\n            \u003c!-- Price Graph (Mock Data reflecting high value) --\u003e\n            \u003cdiv class=\"container-box mb-8\"\u003e\n                \u003ch3 class=\"text-2xl font-bold mb-4 text-heading text-center\"\u003e가격 변동 그래프 (750ml, 세금 미포함)\u003c\/h3\u003e\n                \u003cdiv class=\"w-full flex justify-center items-center\"\u003e\n                    \u003cdiv class=\"chart-container flex-grow max-w-lg\"\u003e\n                        \u003ccanvas id=\"priceChart\" style=\"height: 250px; width: 100%;\"\u003e\u003c\/canvas\u003e\n                    \u003c\/div\u003e\n                \u003c\/div\u003e\n                \u003cdiv class=\"bg-gray-100 p-4 rounded-lg mt-4 text-center border border-gray-200\"\u003e\n                    \u003cp class=\"text-sm text-gray-700\"\u003e2010년은 역사적인 빈티지로, 시간이 지남에 따라 가치가 폭발적으로 상승했습니다.\u003c\/p\u003e\n                \u003c\/div\u003e\n            \u003c\/div\u003e\n\n            \u003chr class=\"border-t-2 border-gray-300 my-8\"\u003e\n            \n            \u003c!-- Food Pairing --\u003e\n            \u003cdiv class=\"container-box mb-8\"\u003e\n                \u003ch3 class=\"text-2xl font-bold mb-4 text-heading text-center\"\u003e음식 페어링 추천\u003c\/h3\u003e\n                \u003cp class=\"text-center text-lg text-gray-700 font-semibold mb-4\"\u003e\"최고급 샤또에 걸맞은 웅장하고 클래식한 페어링!\"\u003c\/p\u003e\n                \u003cdiv class=\"aroma-grid\"\u003e\n                    \u003cdiv class=\"aroma-item\"\u003e\n                        \u003ci class=\"fas fa-drumstick-bite\"\u003e\u003c\/i\u003e\n                        \u003cp class=\"mt-2 text-sm font-semibold text-gray-700\"\u003e고급 비프 스테이크, 샤또브리앙\u003c\/p\u003e\n                    \u003c\/div\u003e\n                    \u003cdiv class=\"aroma-item\"\u003e\n                        \u003ci class=\"fas fa-utensils\"\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=\"1648.08\" 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₩ 510,805\u003c\/p\u003e\n                \u003cp id=\"krwNote\" class=\"krw-note\"\u003e\n                    ※ 1 EUR = 1,648.08 KRW 기준 (Google Search) - **판매가 €310.00 기준 (가정)**\n                \u003c\/p\u003e\n                \u003cp id=\"krwDisclaimer\" class=\"krw-note mt-2 font-semibold text-gray-700\"\u003e\n                    카드사에 따라 적용 환율이 다를 수 있으며, 판매가는 시장 평균을 토대로 임의로 설정되었습니다.\n                \u003c\/p\u003e\n                \u003cp id=\"loadingIndicator\" class=\"text-sm text-gray-500 mt-2 hidden\"\u003e\n                    \u003ci class=\"fas fa-spinner fa-spin mr-1\"\u003e\u003c\/i\u003e 최신 환율 검색 중...\n                \u003c\/p\u003e\n            \u003c\/div\u003e\n\n            \u003c!-- More Products Button --\u003e\n            \u003cdiv class=\"text-center mt-8\"\u003e\n                \u003ca href=\"\/collections\/vendors?q=Chateau+Leoville-Las+Cases\" class=\"button-link\" title=\"More Leoville-Las Cases Products\" style=\"background-color: var(--dark-accent); color: #ffffff;\" aria-label=\"More Leoville-Las Cases Products\"\u003e\n                    \u003cspan class=\"text-lg\"\u003eChâteau Léoville-Las Cases 전체 상품 바로가기\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 = 310.00; \/\/ \u0026#54032;\u0026#47588;\u0026#44032;: \u0026euro;310.00 (\u0026#49688;\u0026#51221;\u0026#46120;)\n    const INITIAL_RATE = 1648.08; \/\/ Updated rate from Google Search\n\n    \/\/ Function to safely create or update a Chart instance\n    const createChart = (ctx, type, data, options, instanceRef) =\u003e {\n        if (instanceRef \u0026\u0026 instanceRef.chart) {\n            instanceRef.chart.destroy();\n        }\n        \n        options = {\n            ...options,\n            responsive: true,\n            maintainAspectRatio: false \n        };\n\n        setTimeout(() =\u003e {\n            if (ctx) {\n                instanceRef.chart = new Chart(ctx, { type, data, options });\n                instanceRef.chart.resize(); \n            }\n        }, 50); \n        return instanceRef;\n    };\n\n    \/**\n     * Calculates and updates the KRW price based on the current exchange rate input.\n     * @param {number} rate - The EUR to KRW exchange rate to use for calculation.\n     * @param {string} source - The source of the rate (e.g., 'Google Search', '\u0026#49688;\u0026#46041; \u0026#51077;\u0026#47141;').\n     *\/\n    function updateKrwPrice(rate, source) {\n        const krwPriceElement = document.getElementById('krwPrice');\n        const krwNoteElement = document.getElementById('krwNote');\n        const exchangeRateInput = document.getElementById('exchangeRate');\n\n        const finalRate = parseFloat(rate);\n\n        if (isNaN(finalRate) || finalRate \u003c= 0) {\n            krwPriceElement.textContent = '\u0026#8361; \u0026#50724;\u0026#47448;';\n            krwNoteElement.textContent = '\u0026#8251; \u0026#50976;\u0026#54952;\u0026#54620; \u0026#54872;\u0026#50984;\u0026#51012; \u0026#51077;\u0026#47141;\u0026#54644; \u0026#51452;\u0026#49464;\u0026#50836;.';\n            return;\n        }\n\n        const calculatedPrice = Math.round(SELLING_PRICE_EUR * finalRate);\n\n        const formattedPrice = new Intl.NumberFormat('ko-KR', { \n            style: 'currency', \n            currency: 'KRW', \n            minimumFractionDigits: 0,\n            maximumFractionDigits: 0\n        }).format(calculatedPrice);\n\n        krwPriceElement.textContent = formattedPrice;\n        krwNoteElement.innerHTML = `\u0026#8251; 1 EUR = ${finalRate.toFixed(2)} KRW \u0026#44592;\u0026#51456; (${source}) - **\u0026#54032;\u0026#47588;\u0026#44032; \u0026euro;${SELLING_PRICE_EUR.toFixed(2)} \u0026#44592;\u0026#51456; (\u0026#44032;\u0026#51221;)**`;\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        \/\/ --- Price History Chart Configuration (Mock Data reflecting explosive value growth) ---\n        const priceElement = document.getElementById('priceChart');\n        if (priceElement) {\n            priceCtx = priceElement.getContext('2d');\n            \n            \/\/ Mock data reflecting high value and appreciation of a monumental vintage\n            priceData = { \n                labels: ['2016 Jan', '2018 Jan', '2020 Jan', '2022 Jan', '2024 Jan', '2025 Oct'],\n                datasets: [\n                    {\n                        \/\/ Average Market Price Line\n                        label: 'Average Market Price (EUR)', \n                        data: [180, 200, 230, 250, 260, 255.43], \n                        backgroundColor: 'var(--price-fill)', \n                        borderColor: 'var(--dark-accent)', \n                        borderWidth: 2,\n                        tension: 0.4, \n                        pointRadius: 4,\n                        pointBackgroundColor: 'var(--dark-accent)',\n                        fill: 'origin', \n                        type: 'line',\n                        order: 1\n                    },\n                    {\n                        \/\/ Selling Price Marker (Mark the current selling price, \u0026euro;310)\n                        label: 'Selling Price (\u0026euro;310.00 - Assumed)',\n                        data: [null, null, null, null, null, SELLING_PRICE_EUR],\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) {\n                                    label += ': ';\n                                }\n                                if (context.parsed.y !== null) {\n                                    label += new Intl.NumberFormat('en-US', { style: 'currency', currency: 'EUR', minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(context.parsed.y);\n                                }\n                                return label;\n                            }\n                        }\n                    }\n                },\n                scales: {\n                    y: {\n                        beginAtZero: false, \n                        min: 150, \n                        max: 350, \/\/ Adjusted max value to fit \u0026euro;310 nicely\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: 50,\n                            color: '#4a4a68',\n                            font: { size: 8 } \n                        }\n                    },\n                    x: {\n                        ticks: {\n                            color: '#4a4a68',\n                            font: { size: 8 }, \n                            maxRotation: 0, \n                            minRotation: 0\n                        }\n                    }\n                }\n            };\n            \n            priceChartInstance = createChart(priceCtx, 'line', priceData, priceOptions, { chart: priceChartInstance });\n\n            \/* FINAL STABILITY FIX: Add resize listener back and update chart when window size changes *\/\n            window.addEventListener('resize', () =\u003e {\n                \n                if (priceChartInstance \u0026\u0026 priceChartInstance.chart) {\n                    priceChartInstance.chart.destroy(); \n                    priceChartInstance = createChart(priceCtx, 'line', priceData, priceOptions, { chart: null });\n                }\n            });\n        }\n        \n        \/\/ --- Initial Price Calculation and Event Listeners for KRW price box ---\n        const exchangeRateInput = document.getElementById('exchangeRate');\n        \n        const initialRate = INITIAL_RATE;\n        exchangeRateInput.value = initialRate;\n        updateKrwPrice(initialRate, 'Google Search'); \/\/ Initial price calculation\n\n        exchangeRateInput.addEventListener('input', () =\u003e {\n            updateKrwPrice(exchangeRateInput.value, '\u0026#49688;\u0026#46041; \u0026#51077;\u0026#47141; \u0026#54872;\u0026#50984;');\n        });\n    });\n\u003c\/script\u003e","brand":"Chateau Leoville-Las Cases","offers":[{"title":"Default Title","offer_id":53236025164105,"sku":null,"price":310.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0791\/8593\/6713\/files\/eong-peulimoeleu-syatto-le-obil-laseu-kkaseu-2024-1chagyeolje-ledeuwain-897.webp?v=1754989689","url":"https:\/\/xwine.club\/products\/%ec%83%a4%eb%98%90-%eb%a0%88%ec%98%a4%eb%b9%8c-%eb%9d%bc%ec%8a%a4-%ea%b9%8c%ec%8a%a4-2010","provider":"엑스와인","version":"1.0","type":"link"}