<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ワインゲーム | CB Wines</title>
	<atom:link href="https://cottonblog-wine-expert.com/category/blind-tasting-challenge/%E3%83%AF%E3%82%A4%E3%83%B3%E3%82%B2%E3%83%BC%E3%83%A0/feed/" rel="self" type="application/rss+xml" />
	<link>https://cottonblog-wine-expert.com</link>
	<description>ワインでつながる、豊かな時間。</description>
	<lastBuildDate>Thu, 19 Mar 2026 02:18:25 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://cottonblog-wine-expert.com/wp-content/uploads/2023/08/cropped-21869-32x32.png</url>
	<title>ワインゲーム | CB Wines</title>
	<link>https://cottonblog-wine-expert.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://cottonblog-wine-expert.com/category/blind-tasting-challenge/%E3%83%AF%E3%82%A4%E3%83%B3%E3%82%B2%E3%83%BC%E3%83%A0/feed/"/>
	<item>
		<title>【白ワイン編】ブラインドテイスティング練習ゲーム｜ソムリエ・ワインエキスパート二次試験対策</title>
		<link>https://cottonblog-wine-expert.com/blind-training-white/</link>
					<comments>https://cottonblog-wine-expert.com/blind-training-white/#respond</comments>
		
		<dc:creator><![CDATA[YUJI]]></dc:creator>
		<pubDate>Mon, 02 Mar 2026 01:01:49 +0000</pubDate>
				<category><![CDATA[ブラインドテイスティング挑戦記]]></category>
		<category><![CDATA[ワインゲーム]]></category>
		<category><![CDATA[問題集]]></category>
		<guid isPermaLink="false">https://cottonblog-wine-expert.com/?p=4268</guid>

					<description><![CDATA[ブラインドテイスティングを鍛えるためには、いかに「候補品種を絞っていくか」がとても重要です。 🍷 消去法シミュレーター ライフ 🍷🍷🍷 残り候補 9 品種 次のヒントを見る 次の問題へ 🍷 ブラインドテイスティング消去法 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>ブラインドテイスティングを鍛えるためには、いかに「候補品種を絞っていくか」がとても重要です。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-3 sbs-flat sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://cottonblog-wine-expert.com/wp-content/uploads/2025/12/Screenshot_20250801_215413_X.jpg" alt="YUJI" class="speech-icon-image"/></figure><div class="speech-name">YUJI</div></div><div class="speech-balloon">
<p>根拠を持って選択肢を外せるよう、このツールで練習しましょう！</p>
</div></div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://cottonblog-wine-expert.com/wp-content/uploads/2023/02/cropped-restaurant-0002-sommelier.png" alt="コットン(助手)" class="speech-icon-image"/></figure><div class="speech-name">コットン(助手)</div></div><div class="speech-balloon">
<p><a href="https://cottonblog-wine-expert.com/blind-training-red/"><strong><span class="fz-22px">赤ワイン編</span></strong></a>もあるよ！</p>
</div></div>



<style>
:root {
  --primary: #800020;
  --primary-dark: #4a0012;
  --bg: #121212;
  --text: #e0e0e0;
  --card-bg: #1e1e1e;
  --btn-bg: #2d2d2d;
  --disabled: #4a4a4a;
  --error: #ff4d4f;
  --success: #52c41a;
}

/* WordPressのスタイル崩れを防ぐため、このアプリ内だけリセット */
.wine-simulator-wrapper * { 
  box-sizing: border-box; 
  margin: 0; 
  padding: 0; 
}

/* bodyの代わりに、アプリを囲む専用のコンテナを作る */
.wine-simulator-wrapper {
  font-family: 'Helvetica Neue', Arial, 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', Meiryo, sans-serif;
  background-color: var(--bg);
  color: var(--text);
  display: flex;
  flex-direction: column;
  height: 600px; /* ブログに埋め込むための固定の高さ */
  max-width: 600px; /* パソコンで見ても広がりすぎないように制限 */
  margin: 0 auto; /* 中央寄せ */
  overflow: hidden; /* アプリ内のスクロールを生かすために外枠は隠す */
  position: relative; /* モーダル画面の基準位置にする */
  border-radius: 8px;
  box-shadow: 0 4px 15px rgba(0,0,0,0.3);
}

.wine-simulator-wrapper header {
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  padding: 15px;
  text-align: center;
  font-weight: bold;
  font-size: 1.2em;
  box-shadow: 0 2px 10px rgba(0,0,0,0.5);
  z-index: 10;
}

#game-container {
  flex: 1;
  display: flex;
  flex-direction: column;
  padding: 15px;
  gap: 12px;
  overflow-y: auto;
}

#status-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background-color: var(--card-bg);
  padding: 12px 15px;
  border-radius: 8px;
  box-shadow: 0 4px 6px rgba(0,0,0,0.3);
}

.status-label { font-size: 0.9em; color: #aaa; margin-bottom: 3px; }
.status-value { font-size: 1.2em; }

#hint-container {
  background-color: var(--card-bg);
  padding: 15px;
  border-radius: 8px;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 12px;
  box-shadow: 0 4px 6px rgba(0,0,0,0.3);
  overflow-y: auto;
}

.hint-box {
  padding: 12px;
  background-color: rgba(255,255,255,0.03);
  border-left: 4px solid var(--primary);
  border-radius: 4px;
  opacity: 0.4;
  transition: all 0.3s ease;
  display: none;
}

.hint-box.active {
  opacity: 1;
  border-left-color: var(--success);
  display: block;
  animation: fadeIn 0.4s ease forwards;
}

@keyframes fadeIn {
  from { opacity: 0; transform: translateY(5px); }
  to { opacity: 1; transform: translateY(0); }
}

.hint-title { font-size: 0.8em; color: var(--success); margin-bottom: 6px; font-weight: bold; }
.hint-text { font-size: 0.95em; line-height: 1.5; }

#next-hint-btn {
  width: 100%;
  padding: 14px;
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: white;
  border: none;
  border-radius: 8px;
  font-size: 1em;
  font-weight: bold;
  cursor: pointer;
  box-shadow: 0 4px 6px rgba(0,0,0,0.3);
  transition: transform 0.1s, opacity 0.2s;
}

#next-hint-btn:active { transform: scale(0.98); }
#next-hint-btn:disabled {
  background: var(--disabled);
  color: #888;
  cursor: not-allowed;
  transform: none;
}

#grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  padding-bottom: 15px;
}

.variety-btn {
  background-color: var(--btn-bg);
  color: var(--text);
  border: 1px solid #333;
  border-radius: 8px;
  padding: 12px 4px;
  font-size: 0.85em;
  font-weight: bold;
  cursor: pointer;
  transition: all 0.2s;
  word-break: break-word;
  min-height: 65px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  box-shadow: 0 4px 6px rgba(0,0,0,0.3);
}

.variety-btn:active { transform: scale(0.95); }

.variety-btn.eliminated {
  background-color: transparent;
  color: var(--disabled);
  text-decoration: line-through;
  border-color: transparent;
  box-shadow: inset 0 0 10px rgba(0,0,0,0.5);
  pointer-events: none;
  transform: none;
}

/* fixedからabsoluteに変更して、アプリの枠内に収める */
#message-overlay {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  background: rgba(20, 20, 20, 0.95);
  padding: 20px;
  border-radius: 12px;
  text-align: center;
  z-index: 100;
  display: none;
  width: 80%;
  max-width: 320px;
  border: 2px solid var(--primary);
  box-shadow: 0 10px 30px rgba(0,0,0,0.8);
  animation: popIn 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}

@keyframes popIn {
  0% { opacity: 0; transform: translate(-50%, -40%) scale(0.8); }
  100% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}

#message-text { font-weight: bold; line-height: 1.5; font-size: 1.1em; }
.text-error { color: var(--error); }
.text-success { color: var(--success); }

/* fixedからabsoluteに変更 */
#explanation-modal {
  position: absolute;
  top: 0; left: 0; width: 100%; height: 100%;
  background: rgba(0,0,0,0.85);
  display: none;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  z-index: 200;
  padding: 20px;
}

.modal-content {
  background: var(--card-bg);
  padding: 25px;
  border-radius: 12px;
  width: 100%;
  max-width: 400px;
  max-height: 85vh;
  overflow-y: auto;
  border-top: 5px solid var(--success);
  box-shadow: 0 10px 40px rgba(0,0,0,0.8);
  display: flex;
  flex-direction: column;
}

.modal-title { font-size: 1.4em; font-weight: bold; margin-bottom: 20px; text-align: center; }
.modal-text { line-height: 1.6; margin-bottom: 25px; font-size: 0.95em; color: #ccc; }

.modal-btn {
  width: 100%; padding: 15px;
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: white; border: none; border-radius: 8px; font-size: 1.1em; font-weight: bold;
  cursor: pointer; pointer-events: auto; margin-top: auto;
}

/* fixedからabsoluteに変更 */
#start-screen {
  position: absolute;
  top: 0; left: 0; width: 100%; height: 100%;
  background: var(--bg);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  z-index: 300;
  padding: 30px;
  text-align: center;
}

#start-screen h1 { color: var(--success); margin-bottom: 20px; font-size: 1.5em; }
#start-screen p { margin-bottom: 10px; color: #aaa; line-height: 1.6; font-size: 0.9em; text-align: left; }
#start-screen button { margin-top: 30px; }
</style>

<div class="wine-simulator-wrapper">
  <header> 🍷  消去法シミュレーター</header>
  <div id="game-container">
    <div id="status-bar">
      <div>
        <div class="status-label">ライフ</div>
        <div id="life" class="status-value"> 🍷🍷🍷 </div>
      </div>
      <div>
        <div class="status-label">残り候補</div>
        <div id="remaining-count" class="status-value">9 品種</div>
      </div>
    </div>
    <div id="hint-container">
      </div>
    <button id="next-hint-btn" onclick="nextHint()">次のヒントを見る</button>
    <div id="grid">
      </div>
  </div>
  <div id="message-overlay">
    <div id="message-text"></div>
  </div>
  <div id="explanation-modal">
    <div class="modal-content">
      <div id="modal-title" class="modal-title"></div>
      <div id="modal-text" class="modal-text"></div>
      <button class="modal-btn" onclick="initGame()">次の問題へ</button>
    </div>
  </div>
  <div id="start-screen">
    <h1> 🍷  ブラインドテイスティング<br>消去法シミュレーター</h1>
    <p> 💡  【遊び方】<br>
    ・3つのヒント（外観、香り、味わい）を順番に読み解いてください。<br>
    ・9つの選択肢から「現在のヒントで論理的にあり得ない品種」をタップして除外していきます。<br>
    ・正解候補を除外したり、早すぎる段階で除外しようとするとライフが減ります。<br>
    ・最後まで正解の1品種を残すことができればクリアです！</p>
    <button class="modal-btn" onclick="startGame()">ゲームスタート</button>
  </div>
</div>

<script>
const gameData = {
  questions: [
    {
      "id": 1,
      "hints": [
        { "step": "外観", "text": "グリーンを帯びた淡いレモンイエロー。粘性は軽めでサラッとしている。" },
        { "step": "香り", "text": "グレープフルーツ、パッションフルーツの強烈な果実香に、刈り取った芝生やハーブ、ピーマンの青々しい香り。" },
        { "step": "味わい", "text": "アタックは軽快で、口内をキュッと引き締めるような非常に高い、クリスピーな酸味。" }
      ],
      "varieties": [
        { "name": "樽熟成シャルドネ", "eliminatableAt": 0 },
        { "name": "ゲヴュルツトラミネール", "eliminatableAt": 0 },
        { "name": "甲州", "eliminatableAt": 1 },
        { "name": "ヴィオニエ", "eliminatableAt": 1 },
        { "name": "シャルドネ(ステンレス)", "eliminatableAt": 1 },
        { "name": "ピノ・グリ", "eliminatableAt": 2 },
        { "name": "ルーサンヌ", "eliminatableAt": 2 },
        { "name": "リースリング", "eliminatableAt": 2 },
        { "name": "ソーヴィニヨン・B", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【ソーヴィニヨン・ブラン】です。<br>「淡く軽快な外観」で色の濃い樽シャルドネ等を除外。「パッションフルーツと青草（ピラジン）の香り」はSBの代名詞であり、香りが控えめな甲州やシャブリ、フローラルなヴィオニエを除外できます。最後に「引き締まるような高い酸」で、酸の穏やかなピノ・グリなどを落とします。"
    },
    {
      "id": 2,
      "hints": [
        { "step": "外観", "text": "深みのあるイエローからゴールド。粘性が非常に高く、グラスの壁をゆっくりと涙が落ちる。" },
        { "step": "香り", "text": "ライチ、白桃のコンポート、そして華やかなバラの花びらやターキッシュ・ディライト（ロクム）の強烈で甘い香り。" },
        { "step": "味わい", "text": "とろみのあるフルボディ。酸味は非常に穏やかで低く、余韻に特有の苦味（フェノリック）を感じる。" }
      ],
      "varieties": [
        { "name": "甲州", "eliminatableAt": 0 },
        { "name": "ミュスカデ", "eliminatableAt": 0 },
        { "name": "シャルドネ(ステンレス)", "eliminatableAt": 0 },
        { "name": "ソーヴィニヨン・B", "eliminatableAt": 1 },
        { "name": "リースリング", "eliminatableAt": 1 },
        { "name": "グリューナー・V", "eliminatableAt": 1 },
        { "name": "シュナン・ブラン", "eliminatableAt": 2 },
        { "name": "アルバリーニョ", "eliminatableAt": 2 },
        { "name": "ゲヴュルツトラミネール", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【ゲヴュルツトラミネール】です。<br>「濃い色調と強い粘性」で冷涼産地のすっきりした品種を除外。「ライチやバラの強烈なアロマ」でソーヴィニヨンやリースリングを除外し、香りの方向性を決定づけます。「酸味が低く、余韻に苦味がある」のがこの品種の最大の特徴で、酸の高い品種と明確に区別できます。"
    },
    {
      "id": 3,
      "hints": [
        { "step": "外観", "text": "やや深みのある黄金色に近いイエロー。粘性は中程度からやや強い。" },
        { "step": "香り", "text": "菩提樹（リンデン）の花、蜂蜜、そして石油（ペトロール）、ゴムのような特有の化学的なニュアンス。" },
        { "step": "味わい", "text": "ほのかな残糖の甘みを感じるが、それを切り裂くような非常にシャープで高い酸味が全体を骨格づけている。" }
      ],
      "varieties": [
        { "name": "甲州", "eliminatableAt": 0 },
        { "name": "ミュスカデ", "eliminatableAt": 0 },
        { "name": "シャルドネ(ステンレス)", "eliminatableAt": 0 },
        { "name": "ソーヴィニヨン・B", "eliminatableAt": 1 },
        { "name": "アルバリーニョ", "eliminatableAt": 1 },
        { "name": "ゲヴュルツトラミネール", "eliminatableAt": 1 },
        { "name": "ピノ・グリ", "eliminatableAt": 2 },
        { "name": "ヴィオニエ", "eliminatableAt": 2 },
        { "name": "リースリング", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【リースリング】（少し熟成したもの等）です。<br>「深みのある色調」で若く淡い品種を除外。リースリング特有の「ペトロール香（TDN）」が最大のヒントで、ここで他のアロマティック品種を除外できます。「ほのかな甘味と非常にシャープな酸味のコントラスト」が、酸の穏やかなピノ・グリ等との決定的な違いになります。"
    },
    {
      "id": 4,
      "hints": [
        { "step": "外観", "text": "輝きのある濃いイエロー。粘性は強く、脚（涙）が太い。" },
        { "step": "香り", "text": "完熟したパイナップルや黄桃に加えて、ヴァニラ、ローストしたヘーゼルナッツ、バターやポップコーンのような明確な香り。" },
        { "step": "味わい", "text": "リッチでクリーミーなテクスチャー。ボリューム感があり、酸味は中程度でまろやか。" }
      ],
      "varieties": [
        { "name": "甲州", "eliminatableAt": 0 },
        { "name": "ミュスカデ", "eliminatableAt": 0 },
        { "name": "ソーヴィニヨン・B", "eliminatableAt": 0 },
        { "name": "リースリング", "eliminatableAt": 1 },
        { "name": "ゲヴュルツトラミネール", "eliminatableAt": 1 },
        { "name": "アルバリーニョ", "eliminatableAt": 1 },
        { "name": "シャルドネ(ステンレス)", "eliminatableAt": 2 },
        { "name": "シュナン・ブラン", "eliminatableAt": 2 },
        { "name": "樽熟成シャルドネ", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【樽熟成シャルドネ】（カリフォルニア等）です。<br>外観で淡い品種を除外し、「ヴァニラ、ヘーゼルナッツ、バター」という木樽熟成とマロラクティック発酵由来の香りで、ステンレスタンク主体の品種を除外。「クリーミーな質感とまろやかな酸」によって、同じシャルドネでも酸の鋭いシャブリ（アンオーク）などと区別できます。"
    },
    {
      "id": 5,
      "hints": [
        { "step": "外観", "text": "非常に淡い色調だが、エッジにわずかに灰色（グリ）や藤色（紫）のトーンを帯びている。" },
        { "step": "香り", "text": "香りのボリュームは控えめ。すだちやカボスなどの和柑橘、丁字、白胡椒、ほのかに吟醸香（炊いたお米）。" },
        { "step": "味わい", "text": "非常に軽快でクリーンな味わい。穏やかで爽やかな酸味と、後半に感じる果皮由来のわずかな渋み（苦味）が特徴。" }
      ],
      "varieties": [
        { "name": "樽熟成シャルドネ", "eliminatableAt": 0 },
        { "name": "ゲヴュルツトラミネール", "eliminatableAt": 0 },
        { "name": "ヴィオニエ", "eliminatableAt": 0 },
        { "name": "ソーヴィニヨン・B", "eliminatableAt": 1 },
        { "name": "リースリング", "eliminatableAt": 1 },
        { "name": "ミュスカ", "eliminatableAt": 1 },
        { "name": "シュナン・ブラン", "eliminatableAt": 2 },
        { "name": "ピノ・グリ", "eliminatableAt": 2 },
        { "name": "甲州", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【甲州】です。<br>「藤色（紫）のトーンを帯びた淡い色調」は、果皮がピンク色の甲州ならではの大きなヒント。「香りが控えめで和柑橘の香り」により、香りの強いアロマティック品種を除外。後半の「果皮由来のわずかな渋み」が、同じくスッキリした他品種と分けるポイントです。"
    },
    {
      "id": 6,
      "hints": [
        { "step": "外観", "text": "中程度から濃いイエロー。アルコール度数の高さを思わせる強い粘性。" },
        { "step": "香り", "text": "アプリコット、洋梨のコンポート、金木犀（きんもくせい）、ジンジャーなどの非常に華やかで官能的なアロマ。" },
        { "step": "味わい", "text": "果実の甘さを錯覚するほどのリッチなアタック。酸味は低く、アルコールのボリューム感とオイリーな質感が際立つ。" }
      ],
      "varieties": [
        { "name": "甲州", "eliminatableAt": 0 },
        { "name": "ミュスカデ", "eliminatableAt": 0 },
        { "name": "シャルドネ(ステンレス)", "eliminatableAt": 0 },
        { "name": "ソーヴィニヨン・B", "eliminatableAt": 1 },
        { "name": "リースリング", "eliminatableAt": 1 },
        { "name": "グリューナー・V", "eliminatableAt": 1 },
        { "name": "樽熟成シャルドネ", "eliminatableAt": 2 },
        { "name": "シュナン・ブラン", "eliminatableAt": 2 },
        { "name": "ヴィオニエ", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【ヴィオニエ】です。<br>ローヌ地方などを代表する品種。「濃い色と強い粘性」で軽快な品種を除外。「アプリコットや金木犀」はヴィオニエの典型香で、緑色の香りを持つ品種等を除外できます。樽シャルドネと迷うかもしれませんが、「酸味が非常に低くオイリー」なテクスチャーがヴィオニエの正体を示しています。"
    },
    {
      "id": 7,
      "hints": [
        { "step": "外観", "text": "淡いレモンイエローから微かにグリーンを帯びる。若々しい外観。" },
        { "step": "香り", "text": "青リンゴ、セロリ、大根、そしてホワイトペッパーやレンズ豆などの特徴的なスパイスと野菜のニュアンス。" },
        { "step": "味わい", "text": "フレッシュでジューシーな果実味。クリスピーな酸味があり、余韻までスパイシーさが続く。" }
      ],
      "varieties": [
        { "name": "樽熟成シャルドネ", "eliminatableAt": 0 },
        { "name": "ゲヴュルツトラミネール", "eliminatableAt": 0 },
        { "name": "ヴィオニエ", "eliminatableAt": 0 },
        { "name": "ソーヴィニヨン・B", "eliminatableAt": 1 },
        { "name": "リースリング", "eliminatableAt": 1 },
        { "name": "甲州", "eliminatableAt": 1 },
        { "name": "ピノ・グリ", "eliminatableAt": 2 },
        { "name": "シュナン・ブラン", "eliminatableAt": 2 },
        { "name": "グリューナー・V", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【グリューナー・フェルトリーナー】です。<br>オーストリアを代表する品種。外観で色の濃い品種を除外した後、「ホワイトペッパーや大根、レンズ豆」などの独特の青いスパイス香によって、フルーツ香主体の品種を一網打尽にできます。「ジューシーで余韻がスパイシー」な点も特徴です。"
    },
    {
      "id": 8,
      "hints": [
        { "step": "外観", "text": "輝きのある淡いから中程度のレモンイエロー。" },
        { "step": "香り", "text": "レモンやグレープフルーツの柑橘香に、白桃、そして砕いた貝殻や海風のような明確な潮（ミネラル）の香り。" },
        { "step": "味わい", "text": "アタックから明確な塩味（えんみ）を感じる。高い酸味がありつつ、澱と接触させたことによる厚みのある旨味が広がる。" }
      ],
      "varieties": [
        { "name": "リースリング", "eliminatableAt": 0 },
        { "name": "樽熟成シャルドネ", "eliminatableAt": 0 },
        { "name": "ゲヴュルツトラミネール", "eliminatableAt": 0 },
        { "name": "ヴィオニエ", "eliminatableAt": 1 },
        { "name": "ソーヴィニヨン・B", "eliminatableAt": 1 },
        { "name": "甲州", "eliminatableAt": 1 },
        { "name": "ミュスカデ", "eliminatableAt": 2 },
        { "name": "ピノ・グリ", "eliminatableAt": 2 },
        { "name": "アルバリーニョ", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【アルバリーニョ】です。<br>スペイン・リアスバイシャスなどの海沿いで造られる品種。「海風や砕いた貝殻の香り」そして「味わいの明確な塩味（えんみ）」が最大のサインです。同じく海沿いで澱と接触（シュール・リー）させるミュスカデと似ていますが、アルバリーニョの方が白桃などの華やかなアロマを持ちます。"
    },
    {
      "id": 9,
      "hints": [
        { "step": "外観", "text": "やや淡めな透明感のあるレモンイエロー。微発泡が見られることもある。" },
        { "step": "香り", "text": "香りは非常にニュートラル。微かなレモン、青リンゴ、貝殻、パンの白い部分（イースト）。" },
        { "step": "味わい", "text": "完全な辛口。果実味は控えめで、高い酸味とシュール・リー由来の旨味が骨格を成す、非常にドライで軽快な味わい。" }
      ],
      "varieties": [
        { "name": "樽熟成シャルドネ", "eliminatableAt": 0 },
        { "name": "ゲヴュルツトラミネール", "eliminatableAt": 0 },
        { "name": "ヴィオニエ", "eliminatableAt": 0 },
        { "name": "ソーヴィニヨン・B", "eliminatableAt": 1 },
        { "name": "リースリング", "eliminatableAt": 1 },
        { "name": "アルバリーニョ", "eliminatableAt": 1 },
        { "name": "甲州", "eliminatableAt": 2 },
        { "name": "シャルドネ(ステンレス)", "eliminatableAt": 2 },
        { "name": "ミュスカデ", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【ミュスカデ】（ムロン・ド・ブルゴーニュ）です。<br>「水のように淡い色調」で重い品種を除外。「パンの白い部分（イースト）やニュートラルな香り」で、香りの強いアロマティック品種を除外します。「高い酸とドライな果実味、イーストの旨味」が、シャブリ（より骨格がしっかりしている）や甲州（果皮の苦味）と区別するカギです。"
    },
    {
      "id": 10,
      "hints": [
        { "step": "外観", "text": "中程度の深さを持つ、輝きのあるレモンイエロー。" },
        { "step": "香り", "text": "熟したリンゴ、カリン（マルメロ）、濡れたウール（羊毛）、カモミール、蜂蜜の複雑な香り。" },
        { "step": "味わい", "text": "ほんのりとした残糖（オフドライ）の甘みを感じるが、それを完全に支える鋭く高い酸味が存在し、絶妙なバランスを保つ。" }
      ],
      "varieties": [
        { "name": "ミュスカデ", "eliminatableAt": 0 },
        { "name": "甲州", "eliminatableAt": 0 },
        { "name": "シャルドネ(ステンレス)", "eliminatableAt": 0 },
        { "name": "ソーヴィニヨン・B", "eliminatableAt": 1 },
        { "name": "ゲヴュルツトラミネール", "eliminatableAt": 1 },
        { "name": "ヴィオニエ", "eliminatableAt": 1 },
        { "name": "ピノ・グリ", "eliminatableAt": 2 },
        { "name": "グリューナー・V", "eliminatableAt": 2 },
        { "name": "シュナン・ブラン", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【シュナン・ブラン】（ヴーヴレのやや甘口スタイル等）です。<br>淡すぎる品種を外観で除外した後、「カリンや濡れたウール」というこの品種特有のアロマで、他を大きく削れます。味わいにおいて「甘みと、それを支える鋭い酸」の両立が、酸の穏やかなピノ・グリなどと明確に異なるポイントです。"
    }
  ]
};

let currentQuestion = null;
let currentHintIndex = 0;
let life = 3;
let eliminatedCount = 0;
let gameActive = false;
let previousQuestionIndex = -1;
let msgTimeout;

function startGame() {
  document.getElementById('start-screen').style.display = 'none';
  initGame();
}

function initGame() {
  let newIndex;
  do {
    newIndex = Math.floor(Math.random() * gameData.questions.length);
  } while (newIndex === previousQuestionIndex && gameData.questions.length > 1);
  previousQuestionIndex = newIndex;
  currentQuestion = gameData.questions[newIndex];

  currentHintIndex = 0;
  life = 3;
  eliminatedCount = 0;
  gameActive = true;

  updateLife();
  updateRemaining();
  renderHints();
  renderGrid();

  document.getElementById('explanation-modal').style.display = 'none';
  const nextBtn = document.getElementById('next-hint-btn');
  nextBtn.disabled = false;
  nextBtn.textContent = "次のヒントを見る";
}

function updateLife() {
  const lifeContainer = document.getElementById('life');
  // 失ったグラスに透明度と白黒フィルターをかけてグレーアウトさせる
  lifeContainer.innerHTML = '🍷'.repeat(life) + '<span style="opacity: 0.3; filter: grayscale(100%);">' + '🍷'.repeat(3 - life) + '</span>';
}

function updateRemaining() {
  const rm = document.getElementById('remaining-count');
  rm.textContent = `${9 - eliminatedCount} 品種`;
}

function renderHints() {
  const container = document.getElementById('hint-container');
  container.innerHTML = '';

  currentQuestion.hints.forEach((hint, index) => {
    const box = document.createElement('div');
    box.className = 'hint-box';

    const title = document.createElement('div');
    title.className = 'hint-title';
    title.textContent = `【ヒント${index + 1}：${hint.step}】`;

    const text = document.createElement('div');
    text.className = 'hint-text';
    text.textContent = hint.text;

    box.appendChild(title);
    box.appendChild(text);
    container.appendChild(box);

    if (index <= currentHintIndex) {
      box.classList.add('active');
    }
  });

  setTimeout(() => {
    container.scrollTop = container.scrollHeight;
  }, 50);
}

function nextHint() {
  if (!gameActive) return;

  if (currentHintIndex < 2) {
    currentHintIndex++;
    renderHints();
    if (currentHintIndex === 2) {
      const btn = document.getElementById('next-hint-btn');
      btn.disabled = true;
      btn.textContent = "すべてのヒントを開放済み";
    }
  }
}

function shuffle(array) {
  for (let i = array.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [array[i], array[j]] = [array[j], array[i]];
  }
}

function renderGrid() {
  const grid = document.getElementById('grid');
  grid.innerHTML = '';

  const vars = [...currentQuestion.varieties];
  shuffle(vars);

  vars.forEach(v => {
    const btn = document.createElement('button');
    btn.className = 'variety-btn';
    btn.textContent = v.name;
    btn.dataset.elim = v.eliminatableAt;
    btn.onclick = () => handleVarietyClick(btn);
    grid.appendChild(btn);
  });
}

function showMessage(text, type) {
  const msgBox = document.getElementById('message-overlay');
  const msgText = document.getElementById('message-text');
  msgText.textContent = text;
  msgText.className = type === 'error' ? 'text-error' : 'text-success';

  msgBox.style.display = 'block';

  clearTimeout(msgTimeout);
  msgTimeout = setTimeout(() => {
    msgBox.style.display = 'none';
    msgBox.style.animation = 'none';
    void msgBox.offsetWidth;
    msgBox.style.animation = 'popIn 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards';
  }, 1500);
}

function endGame(isWin) {
  gameActive = false;
  const modal = document.getElementById('explanation-modal');
  const title = document.getElementById('modal-title');
  const text = document.getElementById('modal-text');

  if (isWin) {
    title.innerHTML = " 🎉  クリア！お見事です！";
    title.style.color = "var(--success)";
    modal.querySelector('.modal-content').style.borderTopColor = "var(--success)";
  } else {
    title.innerHTML = " ☠️  ゲームオーバー...";
    title.style.color = "var(--error)";
    modal.querySelector('.modal-content').style.borderTopColor = "var(--error)";
  }

  text.innerHTML = currentQuestion.explanation;
  modal.style.display = 'flex';
}

function handleVarietyClick(btn) {
  if (!gameActive) return;
  if (btn.classList.contains('eliminated')) return;

  const elimAt = parseInt(btn.dataset.elim);

  if (elimAt === 999) {
    life--;
    updateLife();
    showMessage("早計！今のヒントでは除外できません", "error");
    if (life <= 0) {
      setTimeout(() => endGame(false), 1200);
    }
    return;
  }

  if (elimAt > currentHintIndex) {
    life--;
    updateLife();
    showMessage("早計！今のヒントでは除外できません", "error");
    if (life <= 0) {
      setTimeout(() => endGame(false), 1200);
    }
    return;
  }

  btn.classList.add('eliminated');
  eliminatedCount++;
  updateRemaining();

  if (eliminatedCount === 8) {
    showMessage("クリア！完璧な推理です", "success");
    setTimeout(() => endGame(true), 1200);
  }
}
</script>


]]></content:encoded>
					
					<wfw:commentRss>https://cottonblog-wine-expert.com/blind-training-white/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【赤ワイン編】ブラインドテイスティング練習ゲーム｜ソムリエ・ワインエキスパート二次試験対策</title>
		<link>https://cottonblog-wine-expert.com/blind-training-red/</link>
					<comments>https://cottonblog-wine-expert.com/blind-training-red/#respond</comments>
		
		<dc:creator><![CDATA[YUJI]]></dc:creator>
		<pubDate>Sun, 01 Mar 2026 11:07:57 +0000</pubDate>
				<category><![CDATA[ブラインドテイスティング挑戦記]]></category>
		<category><![CDATA[ワインゲーム]]></category>
		<category><![CDATA[問題集]]></category>
		<guid isPermaLink="false">https://cottonblog-wine-expert.com/?p=4261</guid>

					<description><![CDATA[ブラインドテイスティングを鍛えるためには、いかに「候補品種を絞っていくか」がとても重要です。 🍷 消去法シミュレーター ライフ 🍷🍷🍷 残り候補 9 品種 次のヒントを見る 次の問題へ 🍷 ブラインドテイスティング消去法 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>ブラインドテイスティングを鍛えるためには、いかに「候補品種を絞っていくか」がとても重要です。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-3 sbs-flat sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://cottonblog-wine-expert.com/wp-content/uploads/2025/12/Screenshot_20250801_215413_X.jpg" alt="YUJI" class="speech-icon-image"/></figure><div class="speech-name">YUJI</div></div><div class="speech-balloon">
<p>根拠を持って選択肢を外せるよう、このツールで練習しましょう！</p>
</div></div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://cottonblog-wine-expert.com/wp-content/uploads/2023/02/cropped-restaurant-0002-sommelier.png" alt="コットン(助手)" class="speech-icon-image"/></figure><div class="speech-name">コットン(助手)</div></div><div class="speech-balloon">
<p><a href="https://cottonblog-wine-expert.com/blind-training-white/"><strong><span class="fz-22px">白ワイン編</span></strong></a>もあるよ！</p>
</div></div>



<style>
:root {
  --primary: #800020;
  --primary-dark: #4a0012;
  --bg: #121212;
  --text: #e0e0e0;
  --card-bg: #1e1e1e;
  --btn-bg: #2d2d2d;
  --disabled: #4a4a4a;
  --error: #ff4d4f;
  --success: #52c41a;
}

/* WordPressのスタイル崩れを防ぐため、このアプリ内だけリセット */
.wine-simulator-wrapper * { 
  box-sizing: border-box; 
  margin: 0; 
  padding: 0; 
}

/* bodyの代わりに、アプリを囲む専用のコンテナを作る */
.wine-simulator-wrapper {
  font-family: 'Helvetica Neue', Arial, 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', Meiryo, sans-serif;
  background-color: var(--bg);
  color: var(--text);
  display: flex;
  flex-direction: column;
  height: 600px; /* ブログに埋め込むための固定の高さ */
  max-width: 600px; /* パソコンで見ても広がりすぎないように制限 */
  margin: 0 auto; /* 中央寄せ */
  overflow: hidden; /* アプリ内のスクロールを生かすために外枠は隠す */
  position: relative; /* モーダル画面の基準位置にする */
  border-radius: 8px;
  box-shadow: 0 4px 15px rgba(0,0,0,0.3);
}

.wine-simulator-wrapper header {
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  padding: 15px;
  text-align: center;
  font-weight: bold;
  font-size: 1.2em;
  box-shadow: 0 2px 10px rgba(0,0,0,0.5);
  z-index: 10;
}

#game-container {
  flex: 1;
  display: flex;
  flex-direction: column;
  padding: 15px;
  gap: 12px;
  overflow-y: auto;
}

#status-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background-color: var(--card-bg);
  padding: 12px 15px;
  border-radius: 8px;
  box-shadow: 0 4px 6px rgba(0,0,0,0.3);
}

.status-label { font-size: 0.9em; color: #aaa; margin-bottom: 3px; }
.status-value { font-size: 1.2em; }

#hint-container {
  background-color: var(--card-bg);
  padding: 15px;
  border-radius: 8px;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 12px;
  box-shadow: 0 4px 6px rgba(0,0,0,0.3);
  overflow-y: auto;
}

.hint-box {
  padding: 12px;
  background-color: rgba(255,255,255,0.03);
  border-left: 4px solid var(--primary);
  border-radius: 4px;
  opacity: 0.4;
  transition: all 0.3s ease;
  display: none;
}

.hint-box.active {
  opacity: 1;
  border-left-color: var(--success);
  display: block;
  animation: fadeIn 0.4s ease forwards;
}

@keyframes fadeIn {
  from { opacity: 0; transform: translateY(5px); }
  to { opacity: 1; transform: translateY(0); }
}

.hint-title { font-size: 0.8em; color: var(--success); margin-bottom: 6px; font-weight: bold; }
.hint-text { font-size: 0.95em; line-height: 1.5; }

#next-hint-btn {
  width: 100%;
  padding: 14px;
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: white;
  border: none;
  border-radius: 8px;
  font-size: 1em;
  font-weight: bold;
  cursor: pointer;
  box-shadow: 0 4px 6px rgba(0,0,0,0.3);
  transition: transform 0.1s, opacity 0.2s;
}

#next-hint-btn:active { transform: scale(0.98); }
#next-hint-btn:disabled {
  background: var(--disabled);
  color: #888;
  cursor: not-allowed;
  transform: none;
}

#grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  padding-bottom: 15px;
}

.variety-btn {
  background-color: var(--btn-bg);
  color: var(--text);
  border: 1px solid #333;
  border-radius: 8px;
  padding: 12px 4px;
  font-size: 0.85em;
  font-weight: bold;
  cursor: pointer;
  transition: all 0.2s;
  word-break: break-word;
  min-height: 65px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  box-shadow: 0 4px 6px rgba(0,0,0,0.3);
}

.variety-btn:active { transform: scale(0.95); }

.variety-btn.eliminated {
  background-color: transparent;
  color: var(--disabled);
  text-decoration: line-through;
  border-color: transparent;
  box-shadow: inset 0 0 10px rgba(0,0,0,0.5);
  pointer-events: none;
  transform: none;
}

/* fixedからabsoluteに変更して、アプリの枠内に収める */
#message-overlay {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  background: rgba(20, 20, 20, 0.95);
  padding: 20px;
  border-radius: 12px;
  text-align: center;
  z-index: 100;
  display: none;
  width: 80%;
  max-width: 320px;
  border: 2px solid var(--primary);
  box-shadow: 0 10px 30px rgba(0,0,0,0.8);
  animation: popIn 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}

@keyframes popIn {
  0% { opacity: 0; transform: translate(-50%, -40%) scale(0.8); }
  100% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}

#message-text { font-weight: bold; line-height: 1.5; font-size: 1.1em; }
.text-error { color: var(--error); }
.text-success { color: var(--success); }

/* fixedからabsoluteに変更 */
#explanation-modal {
  position: absolute;
  top: 0; left: 0; width: 100%; height: 100%;
  background: rgba(0,0,0,0.85);
  display: none;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  z-index: 200;
  padding: 20px;
}

.modal-content {
  background: var(--card-bg);
  padding: 25px;
  border-radius: 12px;
  width: 100%;
  max-width: 400px;
  max-height: 85vh;
  overflow-y: auto;
  border-top: 5px solid var(--success);
  box-shadow: 0 10px 40px rgba(0,0,0,0.8);
  display: flex;
  flex-direction: column;
}

.modal-title { font-size: 1.4em; font-weight: bold; margin-bottom: 20px; text-align: center; }
.modal-text { line-height: 1.6; margin-bottom: 25px; font-size: 0.95em; color: #ccc; }

.modal-btn {
  width: 100%; padding: 15px;
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: white; border: none; border-radius: 8px; font-size: 1.1em; font-weight: bold;
  cursor: pointer; pointer-events: auto; margin-top: auto;
}

/* fixedからabsoluteに変更 */
#start-screen {
  position: absolute;
  top: 0; left: 0; width: 100%; height: 100%;
  background: var(--bg);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  z-index: 300;
  padding: 30px;
  text-align: center;
}

#start-screen h1 { color: var(--success); margin-bottom: 20px; font-size: 1.5em; }
#start-screen p { margin-bottom: 10px; color: #aaa; line-height: 1.6; font-size: 0.9em; text-align: left; }
#start-screen button { margin-top: 30px; }
</style>

<div class="wine-simulator-wrapper">
  <header> 🍷  消去法シミュレーター</header>
  <div id="game-container">
    <div id="status-bar">
      <div>
        <div class="status-label">ライフ</div>
        <div id="life" class="status-value"> 🍷🍷🍷 </div>
      </div>
      <div>
        <div class="status-label">残り候補</div>
        <div id="remaining-count" class="status-value">9 品種</div>
      </div>
    </div>
    <div id="hint-container">
      </div>
    <button id="next-hint-btn" onclick="nextHint()">次のヒントを見る</button>
    <div id="grid">
      </div>
  </div>
  <div id="message-overlay">
    <div id="message-text"></div>
  </div>
  <div id="explanation-modal">
    <div class="modal-content">
      <div id="modal-title" class="modal-title"></div>
      <div id="modal-text" class="modal-text"></div>
      <button class="modal-btn" onclick="initGame()">次の問題へ</button>
    </div>
  </div>
  <div id="start-screen">
    <h1> 🍷  ブラインドテイスティング<br>消去法シミュレーター</h1>
    <p> 💡  【遊び方】<br>
    ・3つのヒント（外観、香り、味わい）を順番に読み解いてください。<br>
    ・9つの選択肢から「現在のヒントで論理的にあり得ない品種」をタップして除外していきます。<br>
    ・正解候補を除外したり、早すぎる段階で除外しようとするとライフが減ります。<br>
    ・最後まで正解の1品種を残すことができればクリアです！</p>
    <button class="modal-btn" onclick="startGame()">ゲームスタート</button>
  </div>
</div>

<script>
const gameData = {
  questions: [
    {
      "id": 1,
      "hints": [
        { "step": "外観", "text": "エッジに明確なオレンジ色を帯びた、向こう側が透けて見える淡い色調。粘性は中程度からやや強め。" },
        { "step": "香り", "text": "ドライチェリー、バラのドライフラワー、紅茶。タールやなめし皮、腐葉土などの複雑な熟成香。" },
        { "step": "味わい", "text": "アタックは力強く、非常に高い酸味と、歯茎が収斂するような緻密で豊富なタンニンが骨格を形成。" }
      ],
      "varieties": [
        { "name": "カベルネ・S", "eliminatableAt": 0 },
        { "name": "シラー", "eliminatableAt": 0 },
        { "name": "マルベック", "eliminatableAt": 0 },
        { "name": "マスカット・B・A", "eliminatableAt": 1 },
        { "name": "ジンファンデル", "eliminatableAt": 1 },
        { "name": "ガメイ", "eliminatableAt": 1 },
        { "name": "ピノ・ノワール", "eliminatableAt": 2 },
        { "name": "グルナッシュ", "eliminatableAt": 2 },
        { "name": "ネッビオーロ", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【ネッビオーロ】です。<br>外観の「オレンジを帯びた淡い色調」で色の濃いカベルネ等を除外。次に「ドライフラワーやタールの香り」で華やかで甘い香りの品種やフレッシュな品種を除外。最後に「高い酸と強いタンニン」が決め手となり、ピノ・ノワールやグルナッシュと明確に区別できます。"
    },
    {
      "id": 2,
      "hints": [
        { "step": "外観", "text": "非常に深い黒みを帯びたダークチェリーレッド。向こう側が全く透けないほどの濃い色調で、粘性は強め。" },
        { "step": "香り", "text": "ブラックベリーのコンポート、ローストしたコーヒー豆、黒胡椒、鉄や血液のようなニュアンス。" },
        { "step": "味わい", "text": "豊かな果実味とともに、口内を強く締め付ける非常に豊富な強靭なタンニンと骨太な酸味。" }
      ],
      "varieties": [
        { "name": "ピノ・ノワール", "eliminatableAt": 0 },
        { "name": "ガメイ", "eliminatableAt": 0 },
        { "name": "ネッビオーロ", "eliminatableAt": 0 },
        { "name": "カベルネ・フラン", "eliminatableAt": 1 },
        { "name": "サンジョヴェーゼ", "eliminatableAt": 1 },
        { "name": "ジンファンデル", "eliminatableAt": 1 },
        { "name": "メルロー", "eliminatableAt": 2 },
        { "name": "カルメネール", "eliminatableAt": 2 },
        { "name": "タナ", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【タナ】です。<br>「非常に深い黒みを帯びた色調」で淡い品種を除外。「血液やロースト香」から青っぽい品種や赤系果実主体の品種を除外。最後に「強靭なタンニンと骨太な酸」によって、酸やタンニンが穏やかなメルローやカルメネールを除外し、南西地方マディランなどで有名なタナが導き出されます。"
    },
    {
      "id": 3,
      "hints": [
        { "step": "外観", "text": "紫色をわずかに帯びた、中程度からやや濃いルビー色。粘性は中程度。" },
        { "step": "香り", "text": "ダークチェリーやブルーベリーの果実香に、明確な黒胡椒、クローヴなどのスパイス香とほのかな土のニュアンス。" },
        { "step": "味わい", "text": "フレッシュで際立った高い酸味が全体を引き締め、タンニンは中程度からやや多めで緻密。" }
      ],
      "varieties": [
        { "name": "ネッビオーロ", "eliminatableAt": 0 },
        { "name": "ピノ・ノワール", "eliminatableAt": 0 },
        { "name": "カベルネ・S", "eliminatableAt": 1 },
        { "name": "シラーズ", "eliminatableAt": 1 },
        { "name": "カルメネール", "eliminatableAt": 1 },
        { "name": "ジンファンデル", "eliminatableAt": 1 },
        { "name": "グルナッシュ", "eliminatableAt": 2 },
        { "name": "メルロー", "eliminatableAt": 2 },
        { "name": "ブラウフレンキッシュ", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【ブラウフレンキッシュ】です。<br>「紫色を帯びた中程度のルビー」で淡すぎる・熟成感の強すぎる品種を除外。「黒胡椒やスパイス香」でカシスやピーマン香のボルドー系、ジャムのように甘い品種を除外。最後に「際立った高い酸味」が、オーストリアを代表するこの品種の最大の特徴であり、酸の穏やかなグルナッシュやメルローを退けます。"
    },
    {
      "id": 4,
      "hints": [
        { "step": "外観", "text": "中心は中程度のルビー色だが、エッジにかけての退色が早く、オレンジのグラデーションが広い。粘性は非常に強い。" },
        { "step": "香り", "text": "ストロベリージャム、ラズベリーの完熟果実香。白胡椒やリコリス、強いアルコールを感じるボリュームのある香り。" },
        { "step": "味わい", "text": "アタックは甘みを感じるほど果実味が豊かでアルコール度数が高く、一方で酸味は低めでタンニンは丸みがある。" }
      ],
      "varieties": [
        { "name": "カベルネ・S", "eliminatableAt": 0 },
        { "name": "シラー", "eliminatableAt": 0 },
        { "name": "マルベック", "eliminatableAt": 0 },
        { "name": "ピノ・ノワール", "eliminatableAt": 1 },
        { "name": "カベルネ・フラン", "eliminatableAt": 1 },
        { "name": "ネッビオーロ", "eliminatableAt": 2 },
        { "name": "サンジョヴェーゼ", "eliminatableAt": 2 },
        { "name": "タナ", "eliminatableAt": 2 },
        { "name": "グルナッシュ", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【グルナッシュ】です。<br>「退色が早くエッジが広い」という特有の外観で、色の濃い品種を除外。「ジャムのような甘い香りと白胡椒、強いアルコール感」はピノなどと異なります。最後に「甘い果実味と低い酸、丸いタンニン」が、外観の似ているネッビオーロやサンジョヴェーゼ（酸が高い）から明確に区別するポイントです。"
    },
    {
      "id": 5,
      "hints": [
        { "step": "外観", "text": "深みのある濃いルビーガーネット。黒味が強く、粘性も高い。" },
        { "step": "香り", "text": "ブラックベリーやカシスに加えて、ピーマンやシシトウ、ハラペーニョのような強烈な青々しいピラジン香とカカオ。" },
        { "step": "味わい", "text": "しなやかなアタック。酸味は穏やかで低め、タンニンは豊富だがビロードのように滑らかによく溶け込んでいる。" }
      ],
      "varieties": [
        { "name": "ピノ・ノワール", "eliminatableAt": 0 },
        { "name": "ガメイ", "eliminatableAt": 0 },
        { "name": "グルナッシュ", "eliminatableAt": 0 },
        { "name": "シラー", "eliminatableAt": 1 },
        { "name": "ジンファンデル", "eliminatableAt": 1 },
        { "name": "テンプラニーリョ", "eliminatableAt": 1 },
        { "name": "カベルネ・S", "eliminatableAt": 2 },
        { "name": "カベルネ・フラン", "eliminatableAt": 2 },
        { "name": "カルメネール", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【カルメネール】です。<br>チリを代表する品種。「濃い色調」で淡い品種を除外した後、「強烈なピーマン香（ピラジン）」でボルドー品種以外を除外。カベルネ・Sやフランと悩みますが、「酸が低めでタンニンが極めて滑らか」という点でカルメネールに絞り込めます。"
    },
    {
      "id": 6,
      "hints": [
        { "step": "外観", "text": "濃いルビーからガーネット。エッジにわずかに紫が残り、粘性はやや強い。" },
        { "step": "香り", "text": "プラムのジャム、スモーク、ベーコン、土っぽさに加えて、わずかにマニキュアやシンナーのような揮発酸のニュアンス。" },
        { "step": "味わい", "text": "甘やかな果実味のアタック。酸味とタンニンは中程度ながら主張があり、スモーキーな余韻が残る。" }
      ],
      "varieties": [
        { "name": "ネッビオーロ", "eliminatableAt": 0 },
        { "name": "ピノ・ノワール", "eliminatableAt": 0 },
        { "name": "メルロー", "eliminatableAt": 1 },
        { "name": "カベルネ・S", "eliminatableAt": 1 },
        { "name": "マスカット・B・A", "eliminatableAt": 1 },
        { "name": "カベルネ・フラン", "eliminatableAt": 1 },
        { "name": "シラー", "eliminatableAt": 2 },
        { "name": "カルメネール", "eliminatableAt": 2 },
        { "name": "ピノタージュ", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【ピノタージュ】です。<br>南アフリカの固有品種。「スモークやベーコン、そしてマニキュア（揮発酸）のニュアンス」が古典的な特徴です。シラーにもスモーキーさはありますが、揮発酸の独特なニュアンスや「中程度の酸とタンニンでありながら甘やかなアタック」というバランスがピノタージュの正体を明かします。"
    },
    {
      "id": 7,
      "hints": [
        { "step": "外観", "text": "やや淡いから中程度の深さのルビー色。エッジに若々しい紫色がわずかに残る。" },
        { "step": "香り", "text": "ラズベリーなどの赤系果実に、鉛筆の芯、ピーマンのような青い香りと牡丹の花のような華やかさが混じる。" },
        { "step": "味わい", "text": "軽やかでフレッシュなアタック。クリスピーな高い酸味と、やや青さを伴うサラサラとした軽めのタンニン。" }
      ],
      "varieties": [
        { "name": "ネッビオーロ", "eliminatableAt": 0 },
        { "name": "カベルネ・S", "eliminatableAt": 0 },
        { "name": "シラー", "eliminatableAt": 0 },
        { "name": "ピノ・ノワール", "eliminatableAt": 1 },
        { "name": "ジンファンデル", "eliminatableAt": 1 },
        { "name": "グルナッシュ", "eliminatableAt": 1 },
        { "name": "メルロー", "eliminatableAt": 2 },
        { "name": "カルメネール", "eliminatableAt": 2 },
        { "name": "カベルネ・フラン", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【カベルネ・フラン】（ロワールなどの冷涼産地スタイル）です。<br>外観が「やや淡い」ことから色の濃い品種を除外。「鉛筆の芯やピーマンの香り（ピラジン）」でピノなど赤系果実主体の品種を除外。カルメネールやメルローと比較して「クリスピーな高い酸味と軽やかさ」があるため、カベルネ・フランが残ります。"
    },
    {
      "id": 8,
      "hints": [
        { "step": "外観", "text": "非常に濃い紫がかったルビー色。深みがあり粘性は強い。" },
        { "step": "香り", "text": "ブラックベリーの果実香に、強烈な黒胡椒やブラックオリーブ、そして動物の毛皮や生肉の野性的なニュアンス。" },
        { "step": "味わい", "text": "凝縮した果実味と共に、しっかりとした酸味と豊富だがキメ細やかなタンニン。スパイシーで引き締まった余韻。" }
      ],
      "varieties": [
        { "name": "ピノ・ノワール", "eliminatableAt": 0 },
        { "name": "ガメイ", "eliminatableAt": 0 },
        { "name": "ネッビオーロ", "eliminatableAt": 0 },
        { "name": "メルロー", "eliminatableAt": 1 },
        { "name": "カベルネ・フラン", "eliminatableAt": 1 },
        { "name": "マスカット・B・A", "eliminatableAt": 1 },
        { "name": "ジンファンデル", "eliminatableAt": 2 },
        { "name": "シラーズ（オーストラリア）", "eliminatableAt": 2 },
        { "name": "シラー（フランス）", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【シラー】（北ローヌスタイル）です。<br>「濃い紫のルビー色」で淡い品種を除外。「黒胡椒と動物的な香り」はシラーの典型的な特徴です。味わいの「しっかりとした酸味と引き締まった余韻」が、温暖な産地のオーストラリアン・シラーズやジンファンデル（酸が低めで甘い）との決定的な違いになります。"
    },
    {
      "id": 9,
      "hints": [
        { "step": "外観", "text": "輝きのある濃いルビーガーネット。深みがあり、グラスの壁面に厚い涙を形成する。" },
        { "step": "香り", "text": "ダークチェリー、プラムの果実に、火山灰や火打石のような強いミネラル感、スモーク、乾燥ハーブ。" },
        { "step": "味わい", "text": "若々しく荒々しいほどの非常に豊富なタンニンと、全体を貫く非常に高い酸味を持つ堅牢なフルボディ。" }
      ],
      "varieties": [
        { "name": "ピノ・ノワール", "eliminatableAt": 0 },
        { "name": "ガメイ", "eliminatableAt": 0 },
        { "name": "メルロー", "eliminatableAt": 1 },
        { "name": "ジンファンデル", "eliminatableAt": 1 },
        { "name": "マスカット・B・A", "eliminatableAt": 1 },
        { "name": "カベルネ・S", "eliminatableAt": 2 },
        { "name": "サンジョヴェーゼ", "eliminatableAt": 2 },
        { "name": "カルメネール", "eliminatableAt": 2 },
        { "name": "アリアニコ", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【アリアニコ】です。<br>南イタリアの「バローロ」とも称される品種。「火山灰のミネラル感」が特徴的です。「非常に高い酸と荒々しいほどの強いタンニン」の両方を持つため、サンジョヴェーゼ（タンニンがそこまで強靭ではない）やカベルネ（酸がそこまで突出しない）を除外でき、アリアニコへと行き着きます。"
    },
    {
      "id": 10,
      "hints": [
        { "step": "外観", "text": "熟成によるレンガ色を帯びた、やや深みのあるガーネット。粘性は中程度。" },
        { "step": "香り", "text": "ブラックベリー、なめし皮、腐葉土の熟成香に、アメリカンオークに由来するココナッツ、ディル、バニラの甘い香り。" },
        { "step": "味わい", "text": "なめらかな口当たり。酸味は程よく、タンニンは粉っぽさを残しつつもワインによく溶け込んでいる。" }
      ],
      "varieties": [
        { "name": "ガメイ", "eliminatableAt": 0 },
        { "name": "シラー", "eliminatableAt": 0 },
        { "name": "マルベック", "eliminatableAt": 0 },
        { "name": "ピノ・ノワール", "eliminatableAt": 1 },
        { "name": "カベルネ・フラン", "eliminatableAt": 1 },
        { "name": "サンジョヴェーゼ", "eliminatableAt": 1 },
        { "name": "カベルネ・S", "eliminatableAt": 2 },
        { "name": "ネッビオーロ", "eliminatableAt": 2 },
        { "name": "テンプラニーリョ", "eliminatableAt": 999 }
      ],
      "explanation": "正解は【テンプラニーリョ】（スペインのレセルバ等）です。<br>「レンガ色を帯びたガーネット」で若々しい品種を除外。「ココナッツやディルの香り」はアメリカンオーク樽由来の明確なサインであり、伝統的なリオハのテンプラニーリョの代名詞です。「溶け込んだタンニンと程よい酸」が、ネッビオーロやカベルネ・S（より厳しい構造を持つ）と区別するポイントです。"
    }
  ]
};
let currentQuestion = null;
let currentHintIndex = 0;
let life = 3;
let eliminatedCount = 0;
let gameActive = false;
let previousQuestionIndex = -1;
let msgTimeout;

function startGame() {
  document.getElementById('start-screen').style.display = 'none';
  initGame();
}

function initGame() {
  let newIndex;
  do {
    newIndex = Math.floor(Math.random() * gameData.questions.length);
  } while (newIndex === previousQuestionIndex && gameData.questions.length > 1);
  previousQuestionIndex = newIndex;
  currentQuestion = gameData.questions[newIndex];

  currentHintIndex = 0;
  life = 3;
  eliminatedCount = 0;
  gameActive = true;

  updateLife();
  updateRemaining();
  renderHints();
  renderGrid();

  document.getElementById('explanation-modal').style.display = 'none';
  const nextBtn = document.getElementById('next-hint-btn');
  nextBtn.disabled = false;
  nextBtn.textContent = "次のヒントを見る";
}

function updateLife() {
  const lifeContainer = document.getElementById('life');
  // 失ったグラスに透明度と白黒フィルターをかけてグレーアウトさせる
  lifeContainer.innerHTML = '🍷'.repeat(life) + '<span style="opacity: 0.3; filter: grayscale(100%);">' + '🍷'.repeat(3 - life) + '</span>';
}

function updateRemaining() {
  const rm = document.getElementById('remaining-count');
  rm.textContent = `${9 - eliminatedCount} 品種`;
}

function renderHints() {
  const container = document.getElementById('hint-container');
  container.innerHTML = '';

  currentQuestion.hints.forEach((hint, index) => {
    const box = document.createElement('div');
    box.className = 'hint-box';

    const title = document.createElement('div');
    title.className = 'hint-title';
    title.textContent = `【ヒント${index + 1}：${hint.step}】`;

    const text = document.createElement('div');
    text.className = 'hint-text';
    text.textContent = hint.text;

    box.appendChild(title);
    box.appendChild(text);
    container.appendChild(box);

    if (index <= currentHintIndex) {
      box.classList.add('active');
    }
  });

  setTimeout(() => {
    container.scrollTop = container.scrollHeight;
  }, 50);
}

function nextHint() {
  if (!gameActive) return;

  if (currentHintIndex < 2) {
    currentHintIndex++;
    renderHints();
    if (currentHintIndex === 2) {
      const btn = document.getElementById('next-hint-btn');
      btn.disabled = true;
      btn.textContent = "すべてのヒントを開放済み";
    }
  }
}

function shuffle(array) {
  for (let i = array.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [array[i], array[j]] = [array[j], array[i]];
  }
}

function renderGrid() {
  const grid = document.getElementById('grid');
  grid.innerHTML = '';

  const vars = [...currentQuestion.varieties];
  shuffle(vars);

  vars.forEach(v => {
    const btn = document.createElement('button');
    btn.className = 'variety-btn';
    btn.textContent = v.name;
    btn.dataset.elim = v.eliminatableAt;
    btn.onclick = () => handleVarietyClick(btn);
    grid.appendChild(btn);
  });
}

function showMessage(text, type) {
  const msgBox = document.getElementById('message-overlay');
  const msgText = document.getElementById('message-text');
  msgText.textContent = text;
  msgText.className = type === 'error' ? 'text-error' : 'text-success';

  msgBox.style.display = 'block';

  clearTimeout(msgTimeout);
  msgTimeout = setTimeout(() => {
    msgBox.style.display = 'none';
    msgBox.style.animation = 'none';
    void msgBox.offsetWidth;
    msgBox.style.animation = 'popIn 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards';
  }, 1500);
}

function endGame(isWin) {
  gameActive = false;
  const modal = document.getElementById('explanation-modal');
  const title = document.getElementById('modal-title');
  const text = document.getElementById('modal-text');

  if (isWin) {
    title.innerHTML = " 🎉  クリア！お見事です！";
    title.style.color = "var(--success)";
    modal.querySelector('.modal-content').style.borderTopColor = "var(--success)";
  } else {
    title.innerHTML = " ☠️  ゲームオーバー...";
    title.style.color = "var(--error)";
    modal.querySelector('.modal-content').style.borderTopColor = "var(--error)";
  }

  text.innerHTML = currentQuestion.explanation;
  modal.style.display = 'flex';
}

function handleVarietyClick(btn) {
  if (!gameActive) return;
  if (btn.classList.contains('eliminated')) return;

  const elimAt = parseInt(btn.dataset.elim);

  if (elimAt === 999) {
    life--;
    updateLife();
    showMessage("早計！今のヒントでは除外できません", "error");
    if (life <= 0) {
      setTimeout(() => endGame(false), 1200);
    }
    return;
  }

  if (elimAt > currentHintIndex) {
    life--;
    updateLife();
    showMessage("早計！今のヒントでは除外できません", "error");
    if (life <= 0) {
      setTimeout(() => endGame(false), 1200);
    }
    return;
  }

  btn.classList.add('eliminated');
  eliminatedCount++;
  updateRemaining();

  if (eliminatedCount === 8) {
    showMessage("クリア！完璧な推理です", "success");
    setTimeout(() => endGame(true), 1200);
  }
}
</script>

]]></content:encoded>
					
					<wfw:commentRss>https://cottonblog-wine-expert.com/blind-training-red/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
