{"product_id":"springbank-5yo-100-proof-2025-special","title":"[한정특가] 스프링뱅크 5년 100 Proof 2025년","description":"\u003cbody\u003e\n\n\n    \n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n    \u003ctitle\u003eSpringbank 5 Year Old 100 Proof 2025 Release\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: Scotch Whisky Theme - Springbank Campbeltown (Coastal\/Bold) *\/\n        :root {\n            --accent-color: #A9203C; \/* Deep Red\/Maroon for Bold Spirit *\/\n            --dark-accent: #6E1225; \/* Darker Red\/Brown *\/\n            --product-bg: #F0F4E8; \/* Light Pale Green\/Cream (Springbank Malt) *\/\n            --price-fill: rgba(169, 32, 60, 0.3);\n            --spirit-color: #A9203C; \/* Spirit Color (Intensity) *\/ \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; \/* 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 (Bold Red 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        \/* Expert Score Box Styling - Adjusted for Spirit *\/\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        .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        \/* Spirit Profile Bar *\/\n        .spirit-profile-bar {\n            height: 12px;\n            background-color: #e5e5e5;\n            border-radius: 6px;\n            overflow: hidden;\n            margin-bottom: 0.5rem;\n        }\n        .spirit-profile-fill {\n            background-color: var(--spirit-color);\n            height: 100%;\n        }\n        \/* Old Vintage Notice Box - Kept for structure but unused for non-mystery *\/\n        .old-vintage-notice {\n            display: none; \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            Springbank 5 Year Old 100 Proof 2025 Release\n        \u003c\/h1\u003e\n        \u003ch2 class=\"2xl md:text-3xl font-bold text-gray-800 mb-4\"\u003e\n            스프링뱅크 5년 100 Proof 2025년 한정판\n        \u003c\/h2\u003e\n        \n        \u003c!-- Custom Highlight Emphasis (Winery Reputation) --\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                🥃 **[Campbeltown의 아이콘]** | 5년 숙성 \u0026amp; 57.1% Cask Strength\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 border-b-2 border-gray-300 pb-2 inline-block\"\u003e\n            🏴󠁧󠁢󠁳󠁣󠁴󠁿 스코틀랜드 캠벨타운, 싱글 몰트 스카치 위스키 | 57.1% ABV 🏴󠁧󠁢󠁳󠁣󠁴󠁿\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 (Placeholder for Springbank Bottle) --\u003e\u003cimg src=\"https:\/\/placehold.co\/400x500\/F0F4E8\/6E1225?text=Springbank+5Y+100P\" onerror=\"this.onerror=null;this.src='https:\/\/placehold.co\/400x500\/F0F4E8\/6E1225?text=Springbank+5Y+100P';\" alt=\"Springbank 5 Year Old 100 Proof 2025 Release 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!-- Key Spirit Info (Age\/ABV Placeholder) --\u003e\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\"\u003e57.1% ABV (100 Proof)\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\"\u003e5년 숙성 (2025년 릴리즈)\u003c\/p\u003e\n                    \u003cp class=\"text-sm text-gray-600\"\u003e버번\/쉐리 캐스크 추정\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\"\u003e유사 고강도 5년 숙성 위스키 시장가 (예상)\u003c\/p\u003e\n                \u003cp class=\"text-xl font-bold text-gray-700 mt-1\"\u003e€ 150.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€ 212.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 (Mocked 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. Conceptual Score (91\u0026#51216;) --\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);\"\u003e91\u003c\/p\u003e\n                        \u003cp class=\"critic-name font-bold text-gray-800\"\u003eWhisky Fun (예상)\u003c\/p\u003e\n                    \u003c\/div\u003e\n\n                    \u003c!-- 2. Avg Market Price (\u0026euro;212.00) --\u003e\u003cdiv class=\"score-item\" style=\"grid-column: span 1 \/ span 1;\"\u003e\n                        \u003cp class=\"score-value\"\u003e4.3\u003c\/p\u003e \n                        \u003cp class=\"critic-name\"\u003eWhisky Ratings Avg\u003c\/p\u003e\n                    \u003c\/div\u003e\n                    \n                    \u003c!-- 3. Vivino placeholder (4.2\u0026#51216;) --\u003e\u003cdiv class=\"score-item\" style=\"grid-column: span 2 \/ span 2; min-height: 50px; background-color: #fefefe;\"\u003e\n                        \u003cp class=\"critic-name\"\u003eSpringbank 전체 평균: \u003cspan class=\"score-value inline-block text-xl\"\u003e4.2\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!-- Distillery Story (Distillery Context) --\u003e\u003cdiv class=\"container-box mb-8\"\u003e\n                \u003ch3 class=\"text-2xl font-bold mb-4 text-heading\"\u003e증류소 및 에디션 특징\u003c\/h3\u003e\n                \u003cp class=\"mb-4 text-gray-800 leading-relaxed\"\u003e\n                    **Springbank (스프링뱅크)**는 스코틀랜드에서 여전히 모든 과정을 수작업으로 진행하는 몇 안 되는 증류소 중 하나이자, **캠벨타운** 지역의 상징입니다. 독특한 **2.5회 증류** 방식을 고수하며, **이탄(peat)의 풍미와 해안가(coastal) 캐릭터**가 조화롭게 녹아 있습니다.\n                \u003c\/p\u003e\n                \u003cp class=\"mb-4 text-gray-800 leading-relaxed font-semibold\"\u003e\n                    이 **5년 숙성 100 Proof 릴리즈**는 스프링뱅크의 **원액(New Make Spirit)**이 가진 강렬함과 활력을 가감 없이 보여줍니다. 숙성 연수는 짧지만, **57.1%**의 고도수로 병입되어 맥아의 시리얼, 노란 과일, 부드러운 피트, 바닐라, 캐러멜, 그리고 짠맛이 복합적으로 터져 나오는 **순수하고 강력한 싱글 몰트**입니다.\n                \u003c\/p\u003e\n                \u003cdiv class=\"bg-gray-100 p-3 rounded-lg text-sm text-gray-700 font-bold border border-gray-200\"\u003e\n                    \u003ci class=\"fas fa-hand-sparkles mr-1\"\u003e\u003c\/i\u003e 스프링뱅크의 **'True Craftsmanship'**을 느낄 수 있는, 희소성 높은 한정판 배치입니다.\n                \u003c\/div\u003e\n            \u003c\/div\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 provided text --\u003e\u003cdiv class=\"space-y-4 text-left p-4 bg-gray-50 rounded-lg border border-gray-200\"\u003e\n                    \u003cp class=\"text-base font-semibold accent-text\"\u003eTasting Notes (57.1% ABV)\u003c\/p\u003e\n                    \u003cp class=\"text-sm text-gray-700 italic\"\u003e\n                        **노즈:** 맥아의 시리얼, 노란 과일, 바닐라, 그리고 은은한 피트 스모크와 함께 시작됩니다. \u003cbr\u003e\n                        **팔레트:** 카라멜, 건과일, 바다 소금(Sea Salt) 및 부드러운 스모크의 풍부한 노트가 강렬하지만 균형 잡힌 캐릭터를 선사합니다.\u003cbr\u003e\n                        **피니시:** 길고 따뜻하며, 스프링뱅크 특유의 미묘한 짠맛(Briny)으로 마무리됩니다.\n                    \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!-- Spirit Profile - (Bold, Smoky, Oily) --\u003e\u003cdiv class=\"container-box mb-8\"\u003e\n                \u003ch3 class=\"text-2xl font-bold mb-4 text-heading text-center\"\u003e위스키 풍미 프로필 (Springbank 5Y 100P 기반)\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=\"spirit-profile-bar w-3\/4\"\u003e\n                            \u003c!-- Bold: ~90% (Cask Strength) --\u003e\u003cdiv class=\"spirit-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\"\u003eVery 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=\"spirit-profile-bar w-3\/4\"\u003e\n                            \u003c!-- Smoky: ~45% (Moderate Peat) --\u003e\u003cdiv class=\"spirit-profile-fill\" style=\"width: 45%;\"\u003e\u003c\/div\u003e\n                        \u003c\/div\u003e\n                        \u003cp class=\"w-1\/4 text-sm font-semibold text-gray-600 text-right pl-4\"\u003eMedium Peaty\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=\"spirit-profile-bar w-3\/4\"\u003e\n                            \u003c!-- Briny: ~70% (Campbeltown Classic) --\u003e\u003cdiv class=\"spirit-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\"\u003eDistinctly Briny\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            \u003c!-- Price Graph (Data based on estimated high-end whisky price) --\u003e\u003cdiv class=\"container-box mb-8\"\u003e\n                \u003ch3 class=\"text-2xl font-bold mb-4 text-heading text-center\"\u003e가격 변동 그래프 (Springbank 5년 고강도 기준)\u003c\/h3\u003e\n                \u003cdiv class=\"w-full flex justify-center items-center\"\u003e\n                    \u003cdiv class=\"chart-container flex-grow max-w-lg\"\u003e\n                        \u003ccanvas id=\"priceChart\" style=\"height: 250px; width: 100%;\"\u003e\u003c\/canvas\u003e\n                    \u003c\/div\u003e\n                \u003c\/div\u003e\n                \u003cdiv class=\"bg-gray-100 p-4 rounded-lg mt-4 text-center border border-gray-200\"\u003e\n                    \u003cp class=\"text-sm text-gray-700\"\u003e스프링뱅크의 고강도 릴리즈는 출시 직후 급격한 가격 상승을 보이는 경향이 있습니다. (유사 제품 평균: €150.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 (Whisky Pairing) --\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-fish\"\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-cookie-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                \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=\"1648.06\" 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₩ 349,499\u003c\/p\u003e\n                \u003cp id=\"krwNote\" class=\"krw-note\"\u003e\n                    ※ 1 EUR = 1,648.06 KRW 기준 (Google Search) - **판매가 €212.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=Springbank\" class=\"button-link\" title=\"Springbank 전체 상품 바로가기\" style=\"background-color: var(--dark-accent); color: #ffffff;\" aria-label=\"Springbank 전체 상품 바로가기\"\u003e\n                    \u003cspan class=\"text-lg\"\u003eSpringbank 전체 상품 보기\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 priceData, priceOptions;\n    let priceCtx = null;\n    let priceChartInstance = null;\n    const accentColor = 'var(--accent-color)'; \n    const darkAccentColor = 'var(--dark-accent)'; \n    const SELLING_PRICE_EUR = 212.00; \/\/ \u0026#54032;\u0026#47588;\u0026#44032;: \u0026euro;212.00 (\u0026#50629;\u0026#45936;\u0026#51060;\u0026#53944;)\n    const INITIAL_RATE = 1648.06; \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  \/\/ Keep aspect ratio false for responsiveness\n        };\n\n        setTimeout(() =\u003e {\n            if (ctx) {\n                instanceRef.chart = new Chart(ctx, { type, data, options });\n                instanceRef.chart.resize(); \n            }\n        }, 50); \n        return instanceRef;\n    };\n\n    \/**\n     * Calculates and updates the KRW price based on the current exchange rate input.\n     * @param {number} rate - The EUR to KRW exchange rate to use for calculation.\n     * @param {string} source - The source of the rate (e.g., 'Google Search', '\u0026#49688;\u0026#46041; \u0026#51077;\u0026#47141;').\n     *\/\n    function updateKrwPrice(rate, source) {\n        const krwPriceElement = document.getElementById('krwPrice');\n        const krwNoteElement = document.getElementById('krwNote');\n        const exchangeRateInput = document.getElementById('exchangeRate');\n\n        const finalRate = parseFloat(rate);\n\n        if (isNaN(finalRate) || finalRate \u003c= 0) {\n            krwPriceElement.textContent = '\u0026#8361; \u0026#50724;\u0026#47448;';\n            krwNoteElement.textContent = '\u0026#8251; \u0026#50976;\u0026#54952;\u0026#54620; \u0026#54872;\u0026#50984;\u0026#51012; \u0026#51077;\u0026#47141;\u0026#54644; \u0026#51452;\u0026#49464;\u0026#50836;.';\n            return;\n        }\n\n        const calculatedPrice = Math.round(SELLING_PRICE_EUR * finalRate);\n\n        const formattedPrice = new Intl.NumberFormat('ko-KR', { \n            style: 'currency', \n            currency: 'KRW', \n            minimumFractionDigits: 0,\n            maximumFractionDigits: 0\n        }).format(calculatedPrice);\n\n        krwPriceElement.textContent = formattedPrice;\n        krwNoteElement.innerHTML = `\u0026#8251; 1 EUR = ${finalRate.toFixed(2)} KRW \u0026#44592;\u0026#51456; (${source}) - **\u0026#54032;\u0026#47588;\u0026#44032; \u0026euro;${SELLING_PRICE_EUR.toFixed(2)} \u0026#44592;\u0026#51456;**`;\n        exchangeRateInput.value = finalRate.toFixed(2);\n    }\n\n    \/**\n     * Tries to fetch the real-time EUR\/KRW exchange rate using Google Search\n     * and updates the UI, or falls back to manual input.\n     *\/\n    async function fetchAndDisplayRate() {\n        const indicator = document.getElementById('loadingIndicator');\n        const updateButton = document.getElementById('updateRate');\n        \n        const manualRate = parseFloat(document.getElementById('exchangeRate').value);\n\n        updateButton.disabled = true;\n        indicator.classList.remove('hidden');\n\n        try {\n            const query = \"latest EUR to KRW exchange rate\";\n            const apiKey = \"\"; \n            const apiUrl = `https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/gemini-2.5-flash-preview-09-2025:generateContent?key=${apiKey}`;\n\n            const payload = {\n                contents: [{ parts: [{ text: query }] }],\n                tools: [{ \"google_search\": {} }],\n                systemInstruction: {\n                    parts: [{ text: \"You are a financial information assistant. Find the current numerical EUR to KRW exchange rate and respond ONLY with a JSON object. Do not include any text outside the JSON block.\" }]\n                },\n                generationConfig: {\n                    responseMimeType: \"application\/json\",\n                    responseSchema: {\n                        type: \"OBJECT\",\n                        properties: {\n                            \"exchangeRate\": { \n                                \"type\": \"NUMBER\",\n                                \"description\": \"The current value of 1 EUR in KRW, as a number.\"\n                            }\n                        }\n                    }\n                }\n            };\n            \n            const MAX_RETRIES = 3;\n            let response, result;\n\n            for (let i = 0; i \u003c MAX_RETRIES; i++) {\n                response = await fetch(apiUrl, {\n                    method: 'POST',\n                    headers: { 'Content-Type': 'application\/json' },\n                    body: JSON.stringify(payload)\n                });\n\n                if (response.ok) {\n                    result = await response.json();\n                    break; \n                }\n                if (i \u003c MAX_RETRIES - 1) {\n                    await new Promise(resolve =\u003e setTimeout(resolve, Math.pow(2, i) * 1000));\n                }\n            }\n\n            if (result \u0026\u0026 result.candidates \u0026\u0026 result.candidates[0].content.parts[0].text) {\n                const jsonText = result.candidates[0].content.parts[0].text;\n                const parsedJson = JSON.parse(jsonText);\n                const fetchedRate = parsedJson.exchangeRate;\n\n                if (typeof fetchedRate === 'number' \u0026\u0026 fetchedRate \u003e 0) {\n                    updateKrwPrice(fetchedRate, 'Google Search');\n                    return;\n                }\n            }\n            \n            \/\/ Fallback to manual rate if API fails or returns invalid data\n            updateKrwPrice(manualRate, '\u0026#49688;\u0026#46041; \u0026#51077;\u0026#47141; \u0026#54872;\u0026#50984;');\n            \n        } catch (error) {\n            console.error(\"Error fetching rate, falling back to manual input:\", error);\n            updateKrwPrice(manualRate, '\u0026#49688;\u0026#46041; \u0026#51077;\u0026#47141; \u0026#54872;\u0026#50984;');\n        } finally {\n            indicator.classList.add('hidden');\n            updateButton.disabled = false;\n        }\n    }\n\n    document.addEventListener('DOMContentLoaded', () =\u003e {\n        \n        \/\/ Ensure price chart container exists\n        const priceElement = document.getElementById('priceChart');\n        if (priceElement) {\n            \/\/ --- Price History Chart (Springbank 5Y 100P Mock Data) ---\n            priceCtx = priceElement.getContext('2d');\n            \n            \/\/ Mock data simulating a highly allocated, sought-after release\n            \/\/ Average price of similar limited releases often jumps post-release\n            const priceHistoryData = [140, 150, 180, 200, 220, 180, 200]; \n            \n            priceData = { \n                labels: ['Pre-release', 'Launch', '3M Post', '6M Post', '12M Post', '18M Post', 'Current Avg'],\n                datasets: [\n                    {\n                        \/\/ Market Value Line (Benchmark)\n                        label: 'Estimated Market Value (EUR)', \n                        data: priceHistoryData,\n                        backgroundColor: 'rgba(113, 113, 113, 0.1)', \n                        borderColor: '#71717a', \n                        borderWidth: 2,\n                        tension: 0.4, \n                        pointRadius: 4,\n                        pointBackgroundColor: '#71717a', \n                        fill: 'origin', \n                        type: 'line',\n                        order: 1\n                    },\n                    {\n                        \/\/ Fixed Selling Price Marker (\u0026euro;212.00) \n                        label: 'Fixed Selling Price (\u0026euro;212.00)',\n                        data: [null, null, null, null, null, null, SELLING_PRICE_EUR],\n                        borderColor: 'var(--spirit-color)',\n                        pointBackgroundColor: 'var(--spirit-color)',\n                        pointBorderColor: '#ffffff',\n                        pointBorderWidth: 3,\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: 100, \n                        max: 250, \/\/ Range adjusted for 212 selling price\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                        title: {\n                            display: true,\n                            text: 'Release Timeline',\n                            color: '#1d1d1f',\n                            font: { size: 10 }\n                        },\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.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":"Springbank","offers":[{"title":"Default Title","offer_id":55227876442441,"sku":"KIR-SB5-100P-2025","price":159.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0791\/8593\/6713\/files\/sq_f26efa7e-b1e1-4ce3-9bb8-618ad0768337.jpg?v=1788488434","url":"https:\/\/xwine.club\/products\/springbank-5yo-100-proof-2025-special","provider":"엑스와인","version":"1.0","type":"link"}