WK x 3000 Common Words (fixed level + review)

Shows COMMON on Reviews/Lessons and 'C' on Level Vocabulary tiles using offline 3000-word list (column 'japanese') - fixed level detection

// ==UserScript==
// @name         WK x 3000 Common Words (fixed level + review)
// @version      1.1
// @description  Shows COMMON on Reviews/Lessons and 'C' on Level Vocabulary tiles using offline 3000-word list (column 'japanese') - fixed level detection
// @author       NoahCha & AI
// @match        https://www.wanikani.com/*
// @grant        none
// @run-at       document-idle
// @license MIT
// @namespace https://greasyfork.org/users/1513977
// ==/UserScript==

(function() {
  'use strict';

  // --- COMMON_WORDS built from CSV 'japanese' column ---
  const COMMON_WORDS = new Set([
  '行く', '見る', '多い', '家', 'これ', 'それ', '私', '仕事', 'いつ', 'する',
  '出る', '使う', '所', '作る', '思う', '持つ', '買う', '時間', '知る', '同じ',
  '今', '新しい', 'なる', 'まだ', 'あと', '聞く', '言う', '少ない', '高い', '子供',
  'そう', 'もう', '学生', '熱い', 'どうぞ', '午後', '長い', '本', '今年', 'よく',
  '彼女', 'どう', '言葉', '顔', '終わる', '一つ', 'あげる', 'こう', '学校', 'くれる',
  '始める', '起きる', '春', '午前', '別', 'どこ', '部屋', '若い', '車', '置く',
  '住む', '働く', '難しい', '先生', '立つ', '呼ぶ', '大学', '安い', 'もっと', '帰る',
  '分かる', '広い', '数', '近い', 'そこ', '走る', '入れる', '教える', '歩く', '会う',
  '書く', '頭', '売る', '大好き', '体', '直ぐ', '飛ぶ', 'とても', '誰', '好き',
  '読む', '次', 'あなた', '飲む', '古い', '質問', '今日', '友達', '早い', 'どれ',
  '美しい', 'いつも', '足', '起こす', '見せる', '娘', '楽しむ', '色', 'みんな', '取る',
  '勉強', 'できる', '短い', '落ちる', '息子', '白い', '飛行機', '病気', '冬', '年',
  '重い', '胸', '払う', '軽い', '見つける', '忘れる', '酒', 'どちら', '姉', '覚える',
  '狭い', '赤い', '着る', '笑う', '一番', '授業', '週', '漢字', '自転車', '電車',
  '探す', '紙', '歌う', '遅い', '首', '速い', '一緒に', '今月', '遊ぶ', '遠い',
  '弱い', '耳', '座る', '右', '浴びる', '肩', '寝る', '消す', '元気', '全部',
  '去年', '引く', '図書館', '上げる', '緑', '腕', 'ドア', '女の子', '男の子', '私たち',
  '近く', 'やる', 'かなり', '国', '起こる', '秋', '送る', '死ぬ', '気持ち', '乗る',
  'いる', '木', '開ける', '閉める', '続く', 'お医者さん', '円', 'ここ', '待つ', '低い',
  'もらう', '食べる', '兄', '名前', '夫', '一', '結婚', '親', '話す', '少し',
  '閉じる', '時', '米', '切る', '楽しい', '服', '後ろ', '嬉しい', '腰', '日曜日',
  '昼', 'お母さん', '大学生', '終わり', '背', '手伝う', '鼻', '載せる', '悲しい', 'しゃべる',
  '甘い', 'テーブル', '食べ物', '始まる', 'ゲーム', '十', '天気', '暑い', '太い', '晩',
  '土曜日', '痛い', 'お父さん', '多分', '時計', '泊まる', 'どうして', '掛ける', '曲がる', 'お腹',
  'ミーティング', '嫌い', '金曜日', '要る', '無い', '風邪', '黄色い', '優しい', '晴れる', '汚い',
  '茶色', '空く', '上る', 'ご飯', '日', '髪の毛', 'つける', '月曜日', '入る', 'カタカナ',
  '今週', '開く', '水', 'あれ', '二', '締める', 'まずい', '平仮名', '曇る', '触る',
  '駄目', '飲み物', '木曜日', '曜日', 'そば', 'こっち', '火曜日', '渇く', '三', '水曜日',
  '二つ', '今晩', '千', '六日', 'お姉さん', '直る', 'ちょっと', '四', 'これから', '考える',
  '戻る', '変える', '朝', '歯', '頑張る', '携帯電話', '雨', '金', '易しい', 'お兄さん',
  '大きい', '小さい', '辛い', '八', 'あそこ', '来る', '前', '五日', 'いっぱい', '酸っぱい',
  '違う', '細い', '三つ', '八日', '高校生', '上手', '強い', '七', '二十日', '左',
  '二日', '四つ', '暖かい', 'ある', 'いい', '上', '駅', '美味しい', '昨日', '綺麗',
  '五', '九つ', 'お願い', '答える', '先', '寒い', '三日', '下', '大丈夫', '大人',
  '出す', '父', '母', '月', '妹', '冷たい', '弟', '手', '十日', '口',
  '夏', '七つ', '時々', '何', '人', '一人', '一日', '九日', '方', '他',
  '僕', '欲しい', '万', '見える', '道', '五つ', '目', '八つ', '止める', '四日',
  '夜', '来年', '六', '悪い', 'お手洗い', 'ご主人', '本当に', '自分', 'ため', '見つかる',
  '休む', 'ゆっくり', '六つ', '花', '動く', '線', '七日', '以外', '男', '彼',
  '女', '妻', '百', '辺', '店', '閉まる', '問題', '必要', 'もつ', '昨年',
  '治る', 'ドル', 'システム', '以上', '最近', '世界', 'コンピューター', '意味', '増える', '選ぶ',
  '生活', '進める', '続ける', 'ほとんど', '会社', '多く', '話', '上がる', '集める', '声',
  '初めて', '変わる', 'まず', '社会', 'プログラム', '力', '今回', '予定', 'まま', 'テレビ',
  '減る', '消える', '家族', '比べる', '生まれる', 'ただ', 'これら', '調べる', '事故', '電話',
  '外国', '銀行', '十分', 'あまり', '写真', '繰り返す', '種類', '意見', '新聞', '文章',
  '目立つ', '相手', '病院', '厚い', '忙しい', '薄い', '川', '暗い', 'クラス', '黒い',
  'バス', '青い', '買い物', '薬', '砂糖', '休み', '郵便局', '住所', 'こちら', '財布',
  'パスポート', '椅子', '可愛い', 'お祖父さん', '切手', '涼しい', 'いくつ', 'メニュー', '電気', '勝つ',
  '負ける', '建てる', '日記', '売り切れ', 'お巡りさん', '目覚まし時計', 'レシート', 'ティッシュ', '歯ブラシ', '下りる',
  '洗う', 'パート', '氏名', '今夜', '夜中', '来週', '誰か', '今朝', '寿司', '履く',
  'おじさん', 'おばさん', 'お祖母さん', 'いとこ', '辞書', '朝ご飯', '白', 'どっち', 'そっち', '明日',
  '明後日', '一昨日', '庭', '左側', '右側', '指', '眼鏡', '鞄', 'あっち', '大人しい',
  '下手', '厳しい', '一人で', '答え', 'この頃', '残念', '仕舞う', '心配', '外', '大切',
  'ちょうど', '助ける', '勤める', '連れていく', '丈夫', '賑やか', '眠い', '山', '橋', '止まる',
  '降る', '本当', '町', 'お菓子', '緩い', '良い', 'ようこそ', 'お土産', '両親', 'ウェーター',
  'ウェートレス', '絶対に', 'ごちそう', 'フォーク', 'スプーン', '瓶', 'つく', '醤油', '茶碗', '決める',
  '感じる', '生きる', '動かす', '壊れる', '復習', '眉', '客', '机', '風呂', '湯',
  'ぬるい', '風邪薬', '靴下', 'タバコ', 'アイスコーヒー', '天ぷら', '肉', '昨夜', '流行る', '連れて来る',
  '零', '雲', '空', '人気', '兄さん', '姉さん', '平成', '毎月', '半日', '半月',
  'なるほど', 'つまり', 'そのまま', 'はっきり', '大変', '簡単', '似ている', '驚く', '嫌', '喧嘩',
  '遅れる', 'にんじん', 'ジャガイモ', 'ナス', 'やかん', '話し合う', '残す', 'ごちそうする', '合う', '当たる',
  '集まる', '場所', '海', '少年', '孫', '生徒', '高校', '年上', '卒業', '運動',
  '選手', '映画', '英語', '手紙', '動物', '音', '海外', '外国人', '帰国', '彼ら',
  '機械', '基本', '今度', '最後', '最初', '準備', '進む', '直接', '特に', '届く',
  'なぜ', '並ぶ', '運ぶ', '直す', '反対', '場合', '詳しい', 'いたずら', 'お祝い', 'くし',
  'こぼれる', '伝える', '膝', '肘', '枕', '建物', '道路', '四つ角', '曲がり角', '警察',
  '空気', 'スポーツ', 'チャンス', 'クリーニング', 'サービス', 'グループ', '自宅', '家庭', '期間', '年度',
  '経験', '安全', '危険', '注意', '成功', '努力', '説明', '地震', '手術', '火傷',
  '課題', '子', '確認', '実際', '国際', '会議', '提案', '事務所', '教授', '世紀',
  'あちこち', 'そちら', 'あちら', 'もし', 'うるさい', '固い', '深い', '面白い', '全く', '半分',
  '普通', '分', '文化', '毎日', '気を付ける', '守る', 'もちろん', 'やはり', 'いくら', 'よろしく',
  'どなた', '許す', '分ける', '自然', 'アパート', 'ホテル', 'パソコン', 'うまい', '明るい', '急ぐ',
  '歌', '中学校', 'テスト', 'ポスト', 'ハンカチ', '髪', '帽子', '被る', 'ブラウス', '週末',
  '先週', '再来週', 'いつか', '宿題', '鍵', '傘', '乗り換える', '向かう', '本屋', 'お茶',
  '改札口', '晴れ', 'バス停', '曇り', '塩', 'たくさん', '大嫌い', '中', '二階', '無くす',
  'まあまあ', '黄色', 'ランチ', '魚', '味', 'りんご', 'みかん', '皿', 'コーヒー', 'コップ',
  '二人', '止む', '九', '昼間', 'いつ頃', '字', 'お釣り', '名字', 'おじ', 'おば',
  '祖父', '祖母', '大事', '見方', '鳥', '犬', '返事', 'また', '年間', '青',
  '赤', '信号', '非常に', '複雑', '平和', '回る', '若者', '雪', '思い出す', '聞こえる',
  '借りる', '返す', '受け取る', '捨てる', '一緒', '遊び', '移す', '大きさ', '考え', '空港',
  '出発', '地図', '運転', '降りる', 'ガス', '必ず', 'カメラ', '通う', '急に', 'サラリーマン',
  '給料', '曲', '切れる', '正しい', '苦しい', '細かい', '静か', '健康', 'ゴルフ', 'コース',
  '頼む', '困る', 'ずっと', '例えば', 'つもり', 'しばらく', '紹介', '小学校', '公園', '中学',
  '成績', '教科書', '席', '教室', '教師', '試験', '合格', '数学', '数字', '音楽',
  '食事', '壁', '信じる', '育てる', '倒れる', '落とす', '代わる', 'タクシー', '確か', '立てる',
  '中学生', '売れる', '着く', '決まる', '飾る', '殺す', '下げる', '贈る', '訪ねる', '打つ',
  '相談', '玄関', '兄弟', '長男', '高さ', '用', '時代', '位置', '季節', '穴',
  '裏', '島', '海岸', 'ガラス', '風', '科学', '太陽', '台風', '北', '馬',
  '牛肉', '雑誌', '小説', '大使館', '故障', '温度', '何か', '向こう', '真ん中', '遠く',
  '横', 'つまらない', '素晴らしい', '毎年', '来月', '日時', '夕方', '通る', '自動車', '慣れる',
  '撮る', 'やっと', 'どんどん', '並べる', '逃げる', '渡す', '値段', '両方', '約束', '一部',
  'ラジオ', '入院', 'ニュース', '旅行', '用意', '伸びる', 'パーティー', 'ビール', '早く', '番組',
  'ビデオ', '増やす', '振る', '迎える', '無理', '珍しい', '有名', '喜ぶ', '留学', '料理',
  '野菜', '分かれる', '特別', '理由', '自由', '方向', '残る', 'ビル', 'まとめる', '流れる',
  'セーター', 'シャツ', '洗濯', '間違える', 'アイスクリーム', '乾く', '冷める', '色々', '持って行く', '着替える',
  '石鹸', '野球', '昼食', '朝食', '眠る', '初め', '火', '西', '東', '南',
  '夕食', 'なかなか', '励ます', '涙', '夢', '職場', '隣', 'マンション', 'エレベーター', '窓',
  '押す', '入学', '戸', '通り', '亡くなる', '夫婦', '女性', '森', 'トラック', 'レコード',
  '熱', 'ページ', '踊る', '長さ', '厚さ', '秘密', '凄い', '親切', '絶対', '先月',
  '一昨年', '冬休み', '夏休み', '休日', '正月', '思い出', 'たまに', 'おかしい', '浅い', '君',
  '奥さん', '赤ちゃん', '小学生', '貸す', '数える', '生む', '育つ', '是非', '黒', 'おもちゃ',
  '靴', '連絡', '伝言', '預ける', '下がる', '泳ぐ', 'アルバイト', 'コート', '趣味', '散歩',
  '幸せ', '安心', '大勢', '医者', '運転手', '新幹線', '往復', 'コピー', '奥', '重さ',
  '親しい', '修理', 'カード', '挨拶', '階段', '配る', '断る', 'グラム', '濃い', '壊す',
  '桜', '仕方', '絵', '気温', '品物', '吸う', '案内', 'スキー', '金持ち', '尋ねる',
  '叩く', '帰り', '卵', '氷', '留学生', 'ソフト', '歯医者', '蹴る', '敷く', 'ひととき',
  '交通事故', '遭う', '招待', '咲く', '二十歳', '銀', '内側', '池', '石', '愛',
  '課', '大学院', '台所', 'カラー', 'すり', 'キャンプ', 'オートバイ', '建つ', '刺す', '言い方',
  '沈む', '組み立てる', '恐ろしい', '外人', '牛', '食堂', '毎週', '何度', 'さっき', '久しぶり',
  '便利', '迷惑', 'そんなに', 'びっくりする', '足りる', '疲れる', 'ひどい', '全然', '猫', 'デパート',
  'トイレ', '地下鉄', '駐車場', 'ぶつかる', '運賃', '通学', '見送る', '泣く', 'レストラン', 'メモ',
  '予約', '番号', '注文', 'パン', 'ワイン', '材料', '豚肉', '焼く', '匂い', '付ける',
  '痩せる', '届ける', '間に合う', '向く', '強さ', '得意', '塗る', '投げる', '習う', '注目',
  '未来', '箱', '右手', '左手', 'プール', 'ピアノ', '光る', '踏む', '別々', 'ボール',
  '握る', '真っ赤', '拾う', '回す', 'ノート', '辞める', '揺れる', '立派', '練習', '割る',
  '部分', '拭く', '招く', '急', '汚れる', '渡る', '途中', 'インタビュー', '盗む', '普段',
  '旅館', '博物館', 'ホーム', '引っ越す', '荷物', '家賃', '計画', '廊下', '天井', 'ベッド',
  'ソファー', '屋根', '祭り', '離婚', '葉', 'ボート', '燃える', '巻く', 'プラスチック', '訪れる',
  '破る', '関係', '録音', '不幸', '外国語', '着物', '牛乳', '救急車', '果物', '間違い',
  '映画館', '怖い', '鏡', '草', '敬語', '欠席', 'スイッチ', '掃除', '畳', '速さ',
  '林', 'プレゼント', '弁当', 'いつでも', '寂しい', '少しも', '尊敬', 'テニス', '広さ', '読み',
  '我慢', '国籍', '恥ずかしい', 'ボタン', '洋服', '油', '余る', '正直', 'ドラマ', 'ビザ',
  '水道', '店員', '電池', 'ポケット', '握手', 'そろそろ', 'ぶどう', '迷う', '見物', '知らせる',
  '神社', '注射', 'めったに', '作文', '鳴る', '真面目', '申し込む', '冷蔵庫', '気に入る', 'クリスマス',
  'ネクタイ', '誕生日', '独身', '苦い', 'バイオリン', 'バッグ', '今まで', '切符', 'ゴム', '少々',
  '随分', '引っ張る', '焼ける', '鉛筆', '会話', 'ギター', '茶', '暑さ', '胃', '禁煙',
  '丸い', '写る', '喫茶店', 'やっぱり', '週刊誌', '棚', '震える', '磨く', 'カーテン', '火事',
  'ナイフ', '皆さん', '受ける', '付く', '結構', '悪口', '広まる', '内緒', 'つぶる', '用件',
  'ロマンチック', '貯金', 'バイク', '預かる', 'オレンジ', '噛む', 'きつい', '越える', '小包', '新年',
  '配達', '動物園', '封筒', '危ない', 'テキスト', 'ビニール', 'アルバム', '水泳', '混む', 'スカート',
  '取れる', 'ペン', '物', '郵便', '割れる', '駅員', 'おしゃべり', '緑色', '毎朝', '曲げる',
  'きっと', '理科', '下着', '太る', '冷房', '別れる', '出掛ける', '毎晩', '指輪', '腐る',
  '貧乏', 'おしゃれ', '休憩', '舌', 'ジュース', 'ゼロ', '朝刊', '丁寧', '苦手', '引っ越し',
  '歩道', '折れる', '見送り', '夕刊', 'この間', '冷える', 'ピンク', 'グラス', '毛', '黒板',
  '積もる', '半年', '現在', '利用', '方法', '中心', '明らか', '社長', 'ほぼ', '商品',
  '大型', '限る', '記録', '具体的', '効果', '公開', '作品', '迫る', '大会', '背景',
  '文字', '規則', '近所', 'グラフ', '首都', '減らす', '隠れる', '美術館', 'ばか', '暇',
  '絵葉書', 'あんなに', '行き', '通勤', 'ちゃんと', 'のんびり', '緊張', '気付く', '物語', '出口',
  '登る', '真っ白', '下ろす', '貸し出す', 'サッカー', '暖房', '手袋', '留守', '嘘', '遠慮',
  '折る', 'スープ', 'バナナ', '可哀相', 'パトカー', 'ハンバーガー', '毛布', 'エスカレーター', 'お嬢さん', '手帳',
  'タオル', '売店', 'パチンコ', '謝る', 'ケーキ', '天気予報', '変', '一生懸命', '間違う', '事務室',
  'スーツ', 'チケット', 'チョコレート', '脱ぐ', '年賀状', '乗り物', '布団', '役に立つ', '破れる', '用事',
  '写す', '腕時計', '贈り物', 'チャンネル', '冷やす', '片付ける', '乾杯', '停車', '鳴く', 'ガソリンスタンド',
  '片道', '交番', '大分', 'デート', '梅雨', '真っ直ぐ', 'レモン', '上着', '偉い', '書き方',
  '炊く', 'チーズ', 'ドライブ', '踏切', 'ラケット', '受付', '怒る', '化粧', '都合', 'ひげ',
  '本棚', '真っ暗', '沸く', '売り切れる', '押し入れ', '革', 'ぐっすり', '紅茶', '邪魔', 'ソース',
  '足す', 'トマト', 'バター', '発車', 'バレーボール', 'おかず', 'カレンダー', 'とにかく', '楽しみ', '読書',
  '寒気', '夕焼け', '傷める', 'くすぐったい', '泥棒', '襖', '美人', 'タイプライター', '再来年', '冗談',
  '近付く', '電話帳', 'ベル', '干す(ほす)', '金額', '蚊', '悲しむ', 'クーラー', '失礼', '洗濯機',
  '豆腐', '昼寝', '不便', 'ミルク', '向こう側', '億', 'お礼', '着せる', 'サラダ', '代える',
  '四角', '急行', '交差点', '覚める', '昼休み', 'ベルト', '真っ黒', '皆様', 'ラーメン', 'ライター',
  'ワイシャツ', '転ぶ', 'シャワー', '扇風機', '遅刻', '釣る', 'うどん', '仮名', '記念日', '下り',
  '掲示板', '凍る', 'ごみ', 'スーパーマーケット', 'ぶらぶら', 'アナウンサー', '自炊', '年下', '治す', '箸',
  '花見', '引き出し', '訳', 'いかが', '交通費', 'ステレオ', '再会', '滑る', '早口', '裏返す',
  '角', 'きらきら', '三角', '激しい', '経営', '拡大', '姿勢', '周辺', '達する', '当時',
  '当然', '能力', '判断', '過ぎる', '正確', '戦争', '放送', '習慣', 'フィルム', '受け付ける',
  'ダンス', 'こんなに', '吹く', 'まあ', 'メール', 'インターネット', '出身', '職業', 'スター', 'くだらない',
  '名簿', '通常', '家内', '消防署', '再び', '大統領', '入場券', 'ネックレス', 'パジャマ', 'ボールペン',
  'かゆい', '覚ます', 'すいか', '特急', 'のり', '大抵', 'バスケットボール', '酔っ払う', 'どきどき', '欲しがる',
  '早起き', '味噌汁', '読み方', '入り口', '降ろす', '掛かる', 'サンドイッチ', '四角い', '突き当たる', '乾かす',
  '定期券', 'にこにこ', '下る', 'ウール', 'コーラ', 'トイレットペーパー', '乗り換え', '灰皿', 'ハム', '床',
  'ローマ字', 'いちご', 'カレーライス', 'キャッシュカード', '停留所', '床屋', '歯磨き', '夕飯', '酔っ払い', '例',
  'お辞儀', '横断歩道', 'ぐらぐら', '航空便', 'ジャム', 'スリッパ', '畳む', 'トランプ', '日陰', '文房具',
  '免許証', '訳す', 'よろしい', '両替', '片付く', 'カップ', '消しゴム', 'スケート', '鍋', '寝坊',
  '鋏', '真っ青', '汚す', '忘れ物', '掛け算', '臭い', '突き当たり', 'マフラー', '桃', 'アクセサリー',
  'あくび', 'あめ', '上り', 'なるべく', 'じっと', '食器', '延ばす', '薬局', '雄', '雌',
  '和風', 'いびき', 'ピクニック', '地域', '勘違い', '重要', '主人', 'お宅', 'ハイキング', '畑',
  'ボーイフレンド', 'イヤリング', 'ガールフレンド', '柔らか', '納豆', '別に', 'どうしても', '父親', '誘う', '母親',
  '昼前', 'ふらふら', 'こぼす', '持ってくる', '振り向く', '洗面所', '外側', '段々', '包む', '無くなる',
  '豚', '褒める', '沸かす', '暖める', '換える', '安っぽい', 'ぎらぎら', '何とか', 'いよいよ', 'がらがら',
  '缶詰', '怪我', '寒さ', '祝日', 'すき焼き', '葉書', '掃く', '何しろ', 'ぺこぺこ', 'ぺらぺら',
  'レインコート', 'アイス', '塩辛い', 'セロテープ', '大幅', '教育', '工事', '担当', '法律', '丸',
  '発表', '研究', '一方', '国内', '全体', '後', '人間', '刺身', 'ばら', 'ねずみ',
  '以下', '昔', '違い', 'しっかり', '将来', '不思議', '決して', '失敗', '番', '出会う',
  '悩む', '汗', 'すっかり', '代わり', '一言', '豊か', '接続', '抱える', 'エンジン', '少女',
  '無駄', '自動', '先輩', '眺める', '書類', '年月', '燃やす', '線路', '水着', '可愛らしい',
  '仲良し', '梅干し', 'ドレス', '尽くす', '地球', '不親切', 'からから', '本箱', '横書き', 'そば屋',
  '加工', '実験', '愛する', 'あんまり', 'いきなり', '表', '汚れ', '間', '紫', '灰色',
  '血', '顎', '始めに', '暖まる', 'お世辞', '袋', '長袖', '半袖', '形', '景色',
  'ざあざあ', '再来月', '泊める', '叱る', '騒ぐ', '車道', '掃除機', '剃る', '貼る', '台',
  '主に', '倒す', '星', '長女', '爪', '缶', 'とんとん', '袖', '濡れる', 'パーセント',
  '拍手', '弾く', 'ひも', '昼過ぎ', '船', 'まく', '姪', '個人', '歌手', '社員',
  '不動産屋', '最大', '動き', '事件', '過去', '協力', '時期', '経つ', '雷', '責任',
  '願う', '発見', '気', '美容院', '状況', '目的', '企業', '釣り', '漫画', '温泉',
  'トレーニング', '噂', '本物', 'アイデア', '地下', 'マーケット', 'スケジュール', '出張', 'コック', '正午',
  'ブラシ', '書き取る', '歓迎', '開発', '郵便屋さん', '会長', '灰', '骨', '風呂屋', '細か',
  '人々', '寺', '鶏', '港', '移る', '異なる', '提供', '市民', '患者', '元旦',
  '柔らかい', '似合う', '確かめる', '背中', '肌', '順番', 'まとも', 'ぴったり', '思わず', 'より',
  'もったいない', '情報', '諦める', '懐かしい', '怪しい', '示す', 'たっぷり', '早速', '偶然', '続き',
  '合計', '傷', '面倒', '具合', '中止', '手続き', '結果', '建設', '販売', '機能',
  '頃', '日中', '今後', '影響', '分野', '関する', '状態', '価格', '姿', '期待',
  '除く', '一般', '表現', '完成', '変化', '参加', '土地', '検討', '開始', '備える',
  '内容', '与える', '広がる', '事実', '決定', '住宅', '代表', '命令', '立場', 'なお',
  '計算', '可能', '報告', '都市', '政治', '競争', '原因', '活動', '歴史', 'サイト',
  '土産', '現金', '虫', '寄る', '田舎', '帰宅', '重大', 'マイナス', '稼ぐ', '左右',
  '痛み', '誤解', '文句', '欧米', '面接', 'サイン', '年中', '機嫌', '居間', '度々',
  '例文', '怠ける', '転勤', '政府', '所有', 'いずれ', '対する', '教会', 'ご存知', '雀',
  '適当', '残り', '戻す', '体重', 'どうせ', 'あれこれ', '湖', 'とうとう', '負け', '悔しい',
  '姉妹', '助かる', '手前', 'さっぱり', 'ついで', 'すっきり', 'とんでもない', '坂', '飛び込む', 'コメント',
  '書き直す', '看護婦', '就職', '糸', '売り場', '校長', '見学', '進学', '退院', 'テント',
  '踊り', '植える', '幼稚園', 'エアメール', '四季', 'ナイロン', '消防車', 'ハンドバッグ', '農業', 'アイロン',
  'ラッシュアワー', '速達', '予習', '書留', '深さ', 'ウィスキー', 'シャープペンシル', '取引', '設ける', '一定',
  '記者', '基準', '傾向', '契約', '産業', '事情', '実行', '組織', '逮捕', '程度',
  '同様', '要求', '貿易', '輸出', '商業', '船便', '選挙', '住民', '出席', '発言',
  '伴う', '採用', '処理', '解決', '全国', '作業', '生産', '管理', '増加', '特徴',
  '強調', '制度', '株', '加える', '強化', '設計', '段階', '行う', '経済', '工場',
  '技術', '施設', '神', '人口', '党', '輸入', '煮る', 'コンサート', 'ガソリン', 'パンツ',
  'そっくり', '名刺', 'いちいち', 'しつこい', '喉', '身長', '何で', '味噌', '気の毒', 'そっと',
  'こっそり', 'うっかり', 'わざと', 'がっかり', 'ぼんやり', '酢', '羨ましい', '捕まえる', 'ちっとも', '親指',
  '通り過ぎる', '屋上', '蓋', 'いつの間にか', '象', '嫌がる', 'わがまま', '徹夜', 'ふざける', '一度に',
  '頷く', '改札', '手伝い', 'とっくに', '洗剤', '手首', '日帰り', '取り消す', 'あきれる', '月末',
  '咳', 'あいにく', '近寄る', 'うろうろ', '重たい', 'かじる', '長引く', 'せっせと', '横切る', '取り替える',
  'からかう', '好き嫌い', '蒸し暑い', '支度', '薄暗い', '着替え', 'ワンピース', '生年月日', '虫歯', '留守番',
  '張り切る', '意地悪', '生意気', 'シーツ', 'フライパン', '一人一人', '話し掛ける', '追い掛ける', '小指', 'ぴかぴか',
  '中指', 'まぶた', '面倒臭い', 'ゆでる', 'できるだけ', 'もしかしたら', 'いつまでも', 'まぶしい', 'おやつ', '空っぽ',
  'ぶつぶつ', 'すっと', '図々しい', 'にっこり', 'けち', '追い付く', 'くしゃみ', '冷ます', 'だらしない', '甘やかす',
  'いらいら', '薬指', 'のろのろ', 'ポイント', '工業', '構造', 'さすが', '居眠り', '散らかす', '濡らす',
  '日にち', '苛める', '足下', 'うさぎ', '紺', '目茶苦茶', '立ち入り禁止', '間もなく', '通帳', 'しびれる',
  'ぎっしり', 'うがい', '思い付く', '宛名', '戸棚', '焦げる', 'かく', '威張る', '人混み', 'ずらり',
  '思い切り', '青白い', 'しゃがむ', '言葉遣い', '通り掛かる', '御無沙汰', '市場', 'データ', '購入', 'ビジネス',
  '俺', '登録', '体験', 'デザイン', '負担', '詳細', 'アップ', '終了', 'ファン', '予想',
  '企画', '財政', '総合', 'ケース', 'メーカー', '治療', '読者', '職員', '世代', '視点',
  '効率', '資産', '取り組む', 'ルール', '資格', '成果', '前提', '現地', '内部', '所得',
  '恋愛', '支持', '危機', 'マスコミ', '証拠', 'コーナー', 'マーク', '減少', '緊急', '要望',
  'ストレス', '主催', 'ベスト', '犠牲', '暴力', '赤字', '個性', '作戦', 'ショック', 'アンケート',
  'わざわざ', '本気', '悩み', '上司', '説得', 'ブーム', '体力', '正常', 'ヒント', '地獄',
  '後悔', '情熱', '驚き', 'ジャンプ', 'アルコール', 'いい加減', 'わくわく', '言い訳', 'ミュージック', '青春',
  'あっさり', '焦る', '柔軟', 'タレント', 'どうにか', 'コンテスト', 'もてる', 'デザート', 'クイズ', '中毒',
  'ムード', '同情', '学歴', '好調', 'アマチュア', '炒める', 'カメラマン', '問い合わせる', 'しょっちゅう', 'ロープ',
  'ストライキ', 'パンク', 'コマーシャル', 'チェンジ', '待ち合わせ', '時差', '義理', 'さっと', '左利き', 'サボる',
  'だるい', 'ポット', 'レントゲン', '心強い', '無駄遣い', 'バッジ', '眼科', '履歴書', 'インフレーション', '癌',
  '嘘つき', 'おごる', '十字路', 'びっしょり', 'だぶだぶ', 'おだてる', 'かかと', 'ほっと', '傷付ける', 'うつむく',
  '前売り券', '短期', '舐める', '本日', '業界', 'ネットワーク', '弁護士', '入力', '前回', '画面',
  '後半', '自信', '素敵', '当たり前', 'やり方', 'わずか', 'ついに', '次回', 'スピード', 'バイト',
  '不可能', 'アドバイス', '落ち着く', 'せっかく', 'つい', '大手', '部長', '前半', 'たまたま', '相変わらず',
  '支払い', '人数', '課長', 'ファッション', '体調', '付き合う', 'ショッピング', 'あり', '最悪', 'かえる',
  '得', '掴む', '知り合い', 'ペース', '作成', '親子', '話し合い', '本社', '打ち合わせ', '見守る',
  '売り上げ', 'かえって', 'アイドル', '何となく', '年末', '無意識', '駅前', 'やって来る', 'キッチン', 'キス',
  '慌てる', '都内', '残業', '曖昧', 'カタログ', '殴る', '両手', '仲良く', '始め', '知り合う',
  'お手伝い', 'マナー', 'カラオケ', '二度と', '片手', '保育園', 'ずれる', 'ビーチ', 'せいぜい', '後期',
  'エアコン', 'ゆったり', 'ハードウェア', 'リクエスト', '翌年', 'キャンセル', '車内', '大声', '無責任', '片方',
  'ボリューム', '前方', '日本酒', '青空', '不自然', '昨晩', '市役所', 'フルーツ', '年々', '後方',
  'お詫び', '大根', 'むく', '例年', '締め切り', '正に', '蛇', 'ラッシュ', '大げさ', '無理やり',
  '外食', 'キャベツ', '手足', '閉店', '百貨店', 'クッキー', '車椅子', '大雨', '鳩', '中級',
  'おにぎり', 'ひょっとしたら', 'ぐるぐる', '和食', 'どく', 'ウエスト', '忘年会', '包丁', 'ゴールデンウィーク', 'シューズ',
  '未成年', '甥', '葉っぱ', 'やり直す', '大晦日', 'サングラス', '病人', '顔色', '金色', 'にらむ',
  'つかまる', '足首', '散らかる', 'かぼちゃ', '水族館', '品切れ', '腫れる', 'やり直し', 'バーゲン', '男らしい',
  '近道', 'トースト', '好奇心', '実用的', '客観的', '抽象的', '送別会', '敷金', '日米', '専門家',
  'ホット', 'わさび', '初詣', 'ジョギング', '社会人', '大急ぎ', 'セルフサービス', 'くしゃくしゃ', '食パン', '人差し指',
  '洋食', 'じめじめ', 'じろじろ', 'つるつる', 'こしょう', 'びしょびしょ', 'ぎゅうぎゅう', 'バツ', '水色', '領収書',
  '自然に', 'とんかつ', 'ねぎ', 'きゅうり', '鰻', 'まぐろ', 'パイナップル', 'ほうれん草', 'マヨネーズ', '玉ねぎ',
  '焼き肉', '目薬', '寝過ごす', '国際的', '国際化', '区役所', '和室', '本格的', '高速道路', 'とりあえず',
  '先に', 'ぎりぎり', '慌ただしい', '今ごろ', 'くっ付く', '北風', '海老', '思い切って', 'はっと', '宛先',
  'ばらばら', '乗車券', 'ぶるぶる', 'すらすら', '終電', 'ずるい', 'すやすや', 'がたがた', '非常口', 'ざらざら',
  'ぬるぬる', '女らしい', '急用', 'きょろきょろ', 'ぐずぐず', 'ぽかぽか', '洗い物', 'かっと', 'どきっと', '乗り遅れる',
  'くたくた', 'すべすべ', 'にやにや', 'あだ名', '後片付け', 'イカ', 'うきうき', '可愛がる', '餃子', 'げらげら',
  'ごめん', '明々後日', '削減', '贅沢', 'そのうち', 'でこぼこ', '手のひら', '裸足', 'べたべた', '眉毛',
  '割り箸', '日付け', 'ぴたりと', 'まな板', '筆記用具', 'くすぐる', 'かんかん', '白線', '見覚え', 'これまで',
  'からす', '噛み付く', '白菜', 'プロ野球', 'かみそり', '何十', '何百', '何千', 'がくんと', '飛び下りる',
  '通行止め', '行き止まり', '真ん丸', 'いつの間に', 'くっ付ける', '付け足す', '得する', '損する', '言い返す', '体温計',
  '後戻り', '話し声', 'くるくる', '怖がる', '人違い', '取り返す', '乗り降り', '口喧嘩', '起き上がる', 'ぶら下がる',
  '飛び上がる', '泣き声', '持ち物', '細長い', '出入り口', '正座', '大喜び', '落とし物', 'じゃんじゃん', '見違える',
  '合理的', '自主的', '全面的', '円高', '消費者', '上下', '生', 'よける', 'がやがや', '赤ん坊',
  'ワープロ', '新聞社', '寝かす', '者', '性', '会', '事', '点', 'バック', '記事',
  '大', '法', '非常', '感じ', '環境', '理解', '県', '使用', '主義', '国民',
  '場', '労働', '機会', '製品', '自身', 'かかる', '求める', '下さる', '元', '型',
  'それぞれ', '地方', '面', '実は', '地', '議論', '以前', '専門', '申し上げる', '行動',
  '率', '監督', '意識', '認める', '参考', 'チーム', '現実', '価値', 'テーマ', '含む',
  '際', '全て', '大臣', '国家', '試合', '結局', '消費', '人生', '量', '精神',
  'レベル', '我々', '指導', '資料', '団体', '最も', '完全', '品', '男性', '軍',
  '描く', '最終', 'センター', '障害', '医療', '頂く', '金融', '学ぶ', '成長', '登場',
  '知識', '友人', 'イメージ', 'トップ', '税', '変更', '限り', '式', '展開', '興味',
  '含める', '編集', '選択', '無料', '身', '分析', '予算', '目標', '通信', '向ける',
  '時刻', '逆', '最高', '利益', '事務', '出版', 'プロ', '様々', '州', '共通',
  '現代', '被害', '新た', '相当', '更新', '得る', '内', '維持', '料金', '到着',
  'なま物', '章', 'メンバー', '演奏', '案', '希望', '記憶', 'モデル', '方々', '発売',
  '話題', '目指す', '建築', '印象', '権利', '学習', '発展', '現場', '気分', '移動',
  '発行', '宗教', '改正', '倍', '不安', '自ら', '広告', '共同', '年代', 'タイプ',
  '差', '営業', '役割', '改善', '撮影', 'エネルギー', '憲法', '感謝', '感覚', '旅',
  '合わせる', '既に', '現状', '先日', '中央', '似る', '平均', '末', '追加', 'なさる',
  '様子', '活用', '交換', '整備', '想像', 'ああ', '満足', '以降', '比較', '犯罪',
  'おっしゃる', '特定', '基礎', '流れ', 'どうも', '村', '安定', '本人', '雰囲気', '会場',
  '電子', '文', '範囲', '常に', '失う', '日常', '回答', '体制', '調整', '疑問',
  '応援', '感想', '解説', 'シリーズ', '公共', '民間', '裁判', '組合', '本来', '一体',
  '宇宙', '申す', '図', 'クラブ', '観光', '提出', '以来', '離れる', '性格', '検査',
  '信頼', '人物', '触れる', '記念', '役', '費用', '指定', '感情', '関わる', '仲間',
  '整理', '至る', '独立', '賞', '誕生', 'いらっしゃる', '都', '全員', '明確', '少なくとも',
  'セット', '魅力', 'きちんと', '手段', '有効', '集中', '現象', '感動', '禁止', '会員',
  '過ごす', '納得', '収入', 'レポート', '年齢', '舞台', '交通', '他人', '組', '否定',
  '扱う', '修正', '一応', '生じる', '訪問', '引用', '芸術', '解釈', '行', '結論',
  '困難', '回復', '適用', '集団', '事態', 'スタート', '更に', '活躍', '命', '医師',
  'おる', '現れる', '講演', '瞬間', '交流', '標準', 'まるで', 'スタイル', '関心', '取り上げる',
  '伝統', '民主', '制限', '投票', '心理', '大体', '突然', '思想', '応じる', '不足',
  'コード', '世の中', '項目', '旧', '次第', '長期', '著者', '罪', '楽', '操作',
  '支配', '態度', '過程', 'バランス', '連続', '機関', '論'
]);

  // helper: create badge
  function makeBadge(text, white=false) {
    const d = document.createElement('div');
    d.textContent = text || '';
    d.style.cssText = `
      display:inline-block;
      padding:0.35em 0.55em;
      border-radius:30px;
      background-color: rgba(255,255,255,0.3);
      color: ${white ? '#fff' : '#111'};
      font-size:70%;
      font-weight:bold;
      line-height:1;
      vertical-align:middle;
    `;
    return d;
  }

  // --- Review / Lesson: observe header and show COMMON ---
  const reviewBadge = makeBadge('', true);
  reviewBadge.style.marginLeft = '20px';
  reviewBadge.style.marginBottom = '20px';
  let moReview = null;
  let lastReviewWord = null;

  function updateReview() {
    const target = document.querySelector('.character-header__characters');
    const word = target ? target.textContent.trim() : '';
    if (!word || word === lastReviewWord) return;
    lastReviewWord = word;
    if (COMMON_WORDS.has(word)) { reviewBadge.textContent = 'COMMON'; reviewBadge.style.display = 'inline-block'; }
    else { reviewBadge.textContent = ''; reviewBadge.style.display = 'none'; }
  }

  function observeReview() {
    const header = document.querySelector('.character-header');
    if (!header) return;
    if (!header.contains(reviewBadge)) header.appendChild(reviewBadge);
    const target = document.querySelector('.character-header__characters');
    if (!target) return;
    if (moReview) moReview.disconnect();
    moReview = new MutationObserver(updateReview);
    moReview.observe(target, { childList:true, characterData:true, subtree:true });
    updateReview();
  }

  // --- Level tiles: find the japanese text robustly and add C badge ---
  function getTileJapaneseText(tile) {
    // preferred: span with class subject-character__characters
    const span = tile.querySelector('.subject-character__characters');
    if (span && span.textContent && span.textContent.trim()) return span.textContent.trim();
    // alternative: any element with lang="ja" inside tile
    const ja = tile.querySelector('[lang="ja"]');
    if (ja && ja.textContent && ja.textContent.trim()) return ja.textContent.trim();
    // fallback: first text node (trimmed)
    const txt = tile.textContent.trim();
    // if contains newline, take the first line (often the character)
    const firstLine = txt.split('\n').map(s => s.trim()).filter(Boolean)[0] || txt;
    return firstLine;
  }

  function decorateOneLevelTile(tile) {
    if (tile.dataset.commonBadgeDone) return;
    tile.dataset.commonBadgeDone = '1';

    const word = getTileJapaneseText(tile);
    if (!word) return;

    const badge = makeBadge('', false);
    badge.dataset.type = 'vocab';
    // style like WK 新 badge overlay top-left
    badge.style.position = 'absolute';
    badge.style.top = '6px';
    badge.style.left = '6px';
    badge.style.zIndex = '12';
    badge.style.display = 'none';

    const prevPos = getComputedStyle(tile).position;
    if (!prevPos || prevPos === 'static') tile.style.position = 'relative';
    tile.appendChild(badge);

    if (COMMON_WORDS.has(word)) { badge.textContent = 'C'; badge.style.display = 'inline-block'; }
  }

  function decorateLevelPage() {
    const tiles = document.querySelectorAll('.subject-character.subject-character--vocabulary');
    tiles.forEach(decorateOneLevelTile);
  }

  let levelMO = null;
  function observeLevelPage() {
    decorateLevelPage();
    if (!levelMO) {
      levelMO = new MutationObserver(decorateLevelPage);
      levelMO.observe(document.body, { childList:true, subtree:true });
    }
  }

  // --- SPA navigation hooks ---
  const _push = history.pushState;
  history.pushState = function() { _push.apply(this, arguments); setTimeout(run, 250); };
  window.addEventListener('popstate', () => setTimeout(run, 250));

  function run() {
    if (location.pathname.startsWith('/level/')) observeLevelPage();
    else observeReview();
  }

  setTimeout(run, 400);

})();