{"id":57687,"date":"2026-04-26T19:57:32","date_gmt":"2026-04-26T10:57:32","guid":{"rendered":"https:\/\/japanesia.net\/jlc\/word-notes\/"},"modified":"2026-04-26T19:57:32","modified_gmt":"2026-04-26T10:57:32","slug":"word-notes","status":"publish","type":"page","link":"https:\/\/japanesia.net\/jlc\/word-notes\/","title":{"rendered":"\u5358\u8a9e\u30ce\u30fc\u30c8"},"content":{"rendered":"<div id=\"jpdd-dashboard\">\n    <div class=\"jpdd-hero\">\n        <div class=\"jpdd-badge\">\ud83d\udcda KAMUS PRIBADI<\/div>\n        <h2 class=\"jpdd-title\">\u3042\u306a\u305f\u306e\u305f\u3081\u306e\u5358\u8a9e\u30ce\u30fc\u30c8<\/h2>\n        <div class=\"jpdd-sub\">JAPANESIA LIVE COLLEGE \u00d7 DICTIONARY<\/div>\n    <\/div>\n    <div id=\"jpdd-stats\" class=\"jpdd-stats\">\n        <div class=\"jpdd-stat\"><span class=\"jpdd-stat-icon\">\ud83d\udcd2<\/span>\u767b\u9332 <span class=\"jpdd-stat-val\" id=\"jpdd-total\">-<\/span><\/div>\n        <div class=\"jpdd-stat\"><span class=\"jpdd-stat-icon\">\u2705<\/span>\u6b63\u89e3 <span class=\"jpdd-stat-val\" id=\"jpdd-correct\">-<\/span><\/div>\n        <div class=\"jpdd-stat\"><span class=\"jpdd-stat-icon\">\u274c<\/span>\u4e0d\u6b63\u89e3 <span class=\"jpdd-stat-val\" id=\"jpdd-wrong\">-<\/span><\/div>\n        <div class=\"jpdd-stat\"><span class=\"jpdd-stat-icon\">\ud83c\udfaf<\/span>\u6b63\u7b54\u7387 <span class=\"jpdd-stat-val\" id=\"jpdd-rate\">-<\/span><\/div>\n    <\/div>\n    <div class=\"jpdd-tabs\">\n        <button class=\"jpdd-tab active\" data-mode=\"list\">\ud83d\udccb \u4e00\u89a7<\/button>\n        <button class=\"jpdd-tab\" data-mode=\"test-meaning\">\ud83c\udfaf \u30c6\u30b9\u30c8: \u610f\u5473\u5f53\u3066<\/button>\n        <button class=\"jpdd-tab\" data-mode=\"test-word\">\ud83d\udd24 \u30c6\u30b9\u30c8: \u5358\u8a9e\u5f53\u3066<\/button>\n        <button class=\"jpdd-tab jpdd-tab-add\" data-mode=\"add\">\u2795 \u81ea\u5206\u3067\u8ffd\u52a0<\/button>\n    <\/div>\n    <div id=\"jpdd-stage\" class=\"jpdd-stage\">\n        <div class=\"jpdd-loading\">\u8aad\u307f\u8fbc\u307f\u4e2d\u2026<\/div>\n    <\/div>\n    <div id=\"jpdd-gate\" class=\"jpdd-gate\" style=\"display:none;\">\n        <div class=\"jpdd-gate-icon\">\ud83d\udd12<\/div>\n        <div class=\"jpdd-gate-title\">JLC\u4f1a\u54e1\u9650\u5b9a\u6a5f\u80fd<\/div>\n        <div class=\"jpdd-gate-msg\">\u3053\u306e\u6a5f\u80fd\u306fJLC\u4f1a\u54e1\u69d8\u9650\u5b9a\u3067\u3059\u3002<br>\u4f1a\u54e1\u306b\u306a\u308b\u3068\u82e6\u624b\u306a\u5358\u8a9e\u3092\u4fdd\u5b58\u3057\u3066\u3001\u3044\u3064\u3067\u3082\u30c6\u30b9\u30c8\u3067\u5fa9\u7fd2\u3067\u304d\u307e\u3059\u3002<\/div>\n        <div id=\"jpdd-login-box\" class=\"jpdd-login-box\">\n            <form class=\"jpdd-login-form\" id=\"jpdd-login-jlc\" method=\"post\" action=\"https:\/\/japanesia.net\/jlc\/wp-login.php\">\n                <div class=\"jpdd-login-row\"><label>\u30e6\u30fc\u30b6\u30fc\u540d \/ \u30e1\u30fc\u30eb<\/label><input type=\"text\" name=\"log\" autocomplete=\"username\" required><\/div>\n                <div class=\"jpdd-login-row\"><label>\u30d1\u30b9\u30ef\u30fc\u30c9<\/label><input type=\"password\" name=\"pwd\" autocomplete=\"current-password\" required><\/div>\n                <input type=\"hidden\" name=\"redirect_to\" value=\"\">\n                <button type=\"submit\" class=\"jpdd-login-submit\">JLC\u306b\u30ed\u30b0\u30a4\u30f3<\/button>\n                <div class=\"jpdd-login-help\"><a href=\"https:\/\/japanesia.net\/jlc\/wp-login.php?action=lostpassword\" target=\"_blank\" rel=\"noopener\">\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5fd8\u308c\u305f<\/a><\/div>\n            <\/form>\n        <\/div>\n        <a href=\"https:\/\/japanesia.net\/first\" class=\"jpdd-gate-btn\">JLC\u306b\u3064\u3044\u3066\u8a73\u3057\u304f<\/a>\n    <\/div>\n<\/div>\n<style id=\"jpdd-style\">\n#jpdd-dashboard{font-family:'Kosugi Maru','Hiragino Maru Gothic ProN',sans-serif;color:#1d3557;margin:32px auto;max-width:980px;}\n#jpdd-dashboard *{box-sizing:border-box;}\n#jpdd-dashboard .jpdd-hero{background:linear-gradient(135deg,#9b5de5,#ff6b9d 50%,#ff8a3d);background-size:200% 200%;animation:jpdd-shift 14s ease infinite;border-radius:24px;padding:36px 24px 30px;text-align:center;color:#fff;box-shadow:0 12px 40px rgba(155,93,229,.30);margin-bottom:22px;position:relative;overflow:hidden;}\n@keyframes jpdd-shift{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}\n#jpdd-dashboard .jpdd-hero::before{content:\"\";position:absolute;inset:0;background-image:radial-gradient(circle at 20% 25%,#fff 1.5px,transparent 2.5px),radial-gradient(circle at 78% 30%,#ffd166 2px,transparent 3px),radial-gradient(circle at 30% 80%,#fff 1.5px,transparent 2.5px),radial-gradient(circle at 86% 72%,#26c6da 2px,transparent 3px);background-size:280px 280px,250px 250px,260px 260px,220px 220px;opacity:.55;pointer-events:none;animation:jpdd-tw 5s ease-in-out infinite;}\n@keyframes jpdd-tw{0%,100%{opacity:.4}50%{opacity:.85}}\n#jpdd-dashboard .jpdd-badge{position:relative;z-index:2;display:inline-block;background:rgba(255,255,255,.95);color:#ff6b9d;padding:6px 22px;border-radius:999px;font-size:13px;font-weight:800;letter-spacing:2px;box-shadow:0 4px 0 rgba(0,0,0,.12),0 8px 18px rgba(0,0,0,.20);margin-bottom:14px;}\n#jpdd-dashboard .jpdd-title{position:relative;z-index:2;font-size:30px;font-weight:900;text-shadow:2px 2px 0 rgba(230,57,70,.8),4px 4px 0 rgba(244,196,48,.6),6px 6px 16px rgba(0,0,0,.30);letter-spacing:1.5px;margin:0 0 6px;line-height:1.2;}\n#jpdd-dashboard .jpdd-sub{position:relative;z-index:2;font-size:12px;font-weight:800;letter-spacing:3px;color:#ffd166;text-shadow:1px 1px 0 rgba(0,0,0,.25);}\n#jpdd-dashboard .jpdd-stats{display:flex;justify-content:center;gap:10px;margin-bottom:20px;flex-wrap:wrap;}\n#jpdd-dashboard .jpdd-stat{background:#fff;border-radius:14px;padding:10px 18px;font-size:13px;font-weight:700;display:flex;align-items:center;gap:6px;box-shadow:0 4px 12px rgba(0,0,0,.08);}\n#jpdd-dashboard .jpdd-stat-icon{font-size:18px;}\n#jpdd-dashboard .jpdd-stat-val{color:#ff6b9d;font-size:18px;font-weight:900;}\n#jpdd-dashboard .jpdd-tabs{display:flex;justify-content:center;gap:8px;margin-bottom:20px;flex-wrap:wrap;}\n#jpdd-dashboard .jpdd-tab{cursor:pointer;background:#fff;border:none;padding:10px 20px;border-radius:999px;font-size:13px;font-weight:800;color:#9b5de5;box-shadow:0 4px 0 #d4b8f0,0 8px 16px rgba(155,93,229,.18);transition:all .2s;font-family:inherit;letter-spacing:.5px;}\n#jpdd-dashboard .jpdd-tab:hover{transform:translateY(-2px);}\n#jpdd-dashboard .jpdd-tab.active{background:linear-gradient(135deg,#9b5de5,#ff6b9d);color:#fff;box-shadow:0 4px 0 #6c3eb8,0 8px 16px rgba(155,93,229,.30);}\n#jpdd-dashboard .jpdd-tab-add{background:#fff;color:#3aaf5e !important;box-shadow:0 4px 0 #b8e0c4,0 8px 16px rgba(58,175,94,.18) !important;}\n#jpdd-dashboard .jpdd-tab-add.active{background:linear-gradient(135deg,#3aaf5e,#26c6da) !important;color:#fff !important;box-shadow:0 4px 0 #2a8847,0 8px 16px rgba(58,175,94,.30) !important;}\n#jpdd-dashboard .jpdd-add-form{max-width:540px !important;width:100% !important;margin:0 auto !important;background:#fff !important;border-radius:24px !important;padding:28px 24px !important;box-shadow:0 12px 30px rgba(29,53,87,.18) !important;box-sizing:border-box !important;}\n#jpdd-dashboard .jpdd-add-title{font-size:18px !important;font-weight:800 !important;color:#1d3557 !important;margin:0 0 6px !important;padding:0 !important;display:flex !important;align-items:center !important;flex-wrap:nowrap !important;white-space:nowrap !important;gap:8px !important;line-height:1.4 !important;}\n#jpdd-dashboard .jpdd-add-icon{display:inline-flex !important;align-items:center !important;justify-content:center !important;flex:0 0 24px !important;width:24px !important;height:24px !important;text-align:center !important;background:linear-gradient(135deg,#3aaf5e,#26c6da) !important;color:#fff !important;border-radius:50% !important;font-size:14px !important;font-weight:900 !important;line-height:1 !important;padding:0 !important;margin:0 !important;}\n#jpdd-dashboard .jpdd-add-sub{font-size:12px !important;color:#7a8da3 !important;margin:0 0 18px !important;padding:0 !important;line-height:1.5 !important;}\n#jpdd-dashboard .jpdd-add-row{margin:0 0 12px !important;padding:0 !important;display:block !important;width:100% !important;}\n#jpdd-dashboard .jpdd-add-row label{display:block !important;font-size:11px !important;font-weight:700 !important;color:#5a6f85 !important;letter-spacing:.5px !important;margin:0 0 4px !important;padding:0 !important;}\n#jpdd-dashboard .jpdd-add-row input,#jpdd-dashboard .jpdd-add-row textarea,#jpdd-dashboard .jpdd-add-row select{width:100% !important;display:block !important;border:2px solid #e1ecf6 !important;border-radius:10px !important;padding:9px 12px !important;font-size:14px !important;color:#1d3557 !important;outline:none !important;font-family:inherit !important;background:#f8fbff !important;transition:all .2s !important;box-sizing:border-box !important;margin:0 !important;}\n#jpdd-dashboard .jpdd-add-row input:focus,#jpdd-dashboard .jpdd-add-row textarea:focus,#jpdd-dashboard .jpdd-add-row select:focus{border-color:#9b5de5;background:#fff;box-shadow:0 0 0 3px rgba(155,93,229,.12);}\n#jpdd-dashboard .jpdd-add-row textarea{min-height:60px;resize:vertical;}\n#jpdd-dashboard .jpdd-add-submit{display:block;width:100%;background:linear-gradient(135deg,#3aaf5e,#26c6da);color:#fff;border:none;padding:11px 16px;border-radius:999px;font-size:14px;font-weight:800;cursor:pointer;font-family:inherit;letter-spacing:1px;box-shadow:0 4px 0 #2a8847,0 8px 16px rgba(58,175,94,.30);transition:all .2s;margin-top:6px;}\n#jpdd-dashboard .jpdd-add-submit:hover{transform:translateY(-1px);box-shadow:0 5px 0 #2a8847,0 10px 20px rgba(58,175,94,.40);}\n#jpdd-dashboard .jpdd-add-submit:disabled{opacity:.5;cursor:not-allowed;transform:none;}\n#jpdd-dashboard .jpdd-add-msg{font-size:12px;text-align:center;margin-top:10px;min-height:16px;}\n#jpdd-dashboard .jpdd-add-msg.ok{color:#3aaf5e;font-weight:700;}\n#jpdd-dashboard .jpdd-add-msg.err{color:#e63946;}\n#jpdd-dashboard .jpdd-card.is-custom::before{background:linear-gradient(90deg,#3aaf5e,#26c6da) !important;}\n#jpdd-dashboard .jpdd-card.is-custom .jpdd-tag{background:#e8f7ee;color:#3aaf5e;}\n#jpdd-dashboard .jpdd-stage{min-height:300px;}\n#jpdd-dashboard .jpdd-loading{text-align:center;color:#9b5de5;padding:40px 20px;font-size:14px;}\n#jpdd-dashboard .jpdd-empty{text-align:center;color:#aaa;padding:50px 20px;}\n#jpdd-dashboard .jpdd-empty-icon{font-size:64px;opacity:.4;margin-bottom:12px;}\n#jpdd-dashboard .jpdd-empty-title{font-size:18px;font-weight:800;color:#666;margin-bottom:6px;}\n#jpdd-dashboard .jpdd-empty-msg{font-size:13px;line-height:1.6;color:#999;}\n#jpdd-dashboard .jpdd-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;}\n#jpdd-dashboard .jpdd-card{position:relative;background:#fff;border-radius:16px;padding:16px 18px 14px;box-shadow:0 4px 14px rgba(29,53,87,.10);border:2px solid transparent;transition:all .25s;}\n#jpdd-dashboard .jpdd-card::before{content:\"\";position:absolute;top:0;left:0;right:0;height:5px;background:linear-gradient(90deg,#9b5de5,#ff6b9d);border-radius:16px 16px 0 0;}\n#jpdd-dashboard .jpdd-card:nth-child(4n+2)::before{background:linear-gradient(90deg,#26c6da,#4a90e2);}\n#jpdd-dashboard .jpdd-card:nth-child(4n+3)::before{background:linear-gradient(90deg,#f4c430,#ff8a3d);}\n#jpdd-dashboard .jpdd-card:nth-child(4n)::before{background:linear-gradient(90deg,#3aaf5e,#26c6da);}\n#jpdd-dashboard .jpdd-card:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(155,93,229,.18);border-color:rgba(255,107,157,.20);}\n#jpdd-dashboard .jpdd-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:6px;margin-top:6px;}\n#jpdd-dashboard .jpdd-lemma{font-size:20px;font-weight:800;color:#1d3557;letter-spacing:.3px;flex:1;}\n#jpdd-dashboard .jpdd-pos{display:inline-block;background:linear-gradient(135deg,#9b5de5,#ff6b9d);color:#fff;padding:2px 10px;border-radius:999px;font-size:10px;font-weight:800;letter-spacing:.5px;flex-shrink:0;align-self:center;}\n#jpdd-dashboard .jpdd-meaning{font-size:14px;color:#1d3557;font-weight:700;line-height:1.5;margin-bottom:8px;white-space:pre-wrap;word-break:break-word;}\n#jpdd-dashboard .jpdd-tag{display:inline-block;background:#f5e1ff;color:#9b5de5;font-size:10px;font-weight:700;padding:1px 8px;border-radius:6px;margin-right:4px;letter-spacing:.5px;}\n#jpdd-dashboard .jpdd-stats-mini{display:flex;gap:8px;font-size:11px;color:#7a8da3;margin-bottom:8px;}\n#jpdd-dashboard .jpdd-stats-mini span{display:inline-flex;align-items:center;gap:3px;}\n#jpdd-dashboard .jpdd-card-actions{display:flex;gap:6px;margin-top:8px;}\n#jpdd-dashboard .jpdd-act{cursor:pointer;border:none;padding:5px 10px;border-radius:8px;font-size:11px;font-weight:700;font-family:inherit;background:#f5f5f5;color:#666;transition:all .2s;}\n#jpdd-dashboard .jpdd-act:hover{background:#eee;}\n#jpdd-dashboard .jpdd-act.del{background:#fdeaec;color:#e63946;}\n#jpdd-dashboard .jpdd-act.del:hover{background:#e63946;color:#fff;}\n#jpdd-dashboard .jpdd-quiz{background:#fff;border-radius:24px;padding:32px 28px;box-shadow:0 12px 30px rgba(29,53,87,.20);position:relative;overflow:hidden;max-width:640px;margin:0 auto;}\n#jpdd-dashboard .jpdd-quiz::before{content:\"\";position:absolute;top:0;left:0;right:0;height:8px;background:linear-gradient(90deg,#e63946,#f4c430,#4a90e2);}\n#jpdd-dashboard .jpdd-q-progress{font-size:12px;color:#7a8da3;text-align:center;margin-bottom:14px;letter-spacing:1px;font-weight:700;}\n#jpdd-dashboard .jpdd-q-bar{background:#f0f0f5;border-radius:999px;height:6px;overflow:hidden;margin-bottom:18px;}\n#jpdd-dashboard .jpdd-q-bar-fill{height:100%;background:linear-gradient(90deg,#9b5de5,#ff6b9d,#f4c430);background-size:200% 100%;animation:jpdd-rb 3s linear infinite;border-radius:999px;transition:width .4s;}\n@keyframes jpdd-rb{from{background-position:0% 0}to{background-position:200% 0}}\n#jpdd-dashboard .jpdd-q-target{text-align:center;margin-bottom:24px;padding:18px;background:linear-gradient(135deg,#fff8e7,#f5e1ff);border-radius:16px;}\n#jpdd-dashboard .jpdd-q-word{font-size:34px;font-weight:900;color:#1d3557;letter-spacing:1px;line-height:1.1;}\n#jpdd-dashboard .jpdd-q-pos{display:inline-block;background:linear-gradient(135deg,#9b5de5,#ff6b9d);color:#fff;padding:2px 12px;border-radius:999px;font-size:11px;font-weight:800;letter-spacing:1px;margin-top:8px;}\n#jpdd-dashboard .jpdd-q-q{text-align:center;font-size:13px;color:#9b5de5;font-weight:700;margin-bottom:14px;letter-spacing:1.5px;}\n#jpdd-dashboard .jpdd-q-choices{display:grid;grid-template-columns:1fr 1fr;gap:12px;}\n#jpdd-dashboard .jpdd-q-choice{cursor:pointer;border:2.5px solid #e1ecf6;background:#f8fbff;padding:14px 12px;border-radius:14px;font-size:14px;font-weight:700;color:#1d3557;transition:all .2s;font-family:inherit;text-align:center;display:flex;align-items:center;justify-content:center;gap:8px;min-height:60px;}\n#jpdd-dashboard .jpdd-q-choice:hover{border-color:#9b5de5;background:#fff;transform:translateY(-2px);box-shadow:0 4px 12px rgba(155,93,229,.15);}\n#jpdd-dashboard .jpdd-q-choice.ok{border-color:#3aaf5e;background:#e8f7ee;animation:jpdd-ok .5s ease;}\n#jpdd-dashboard .jpdd-q-choice.ng{border-color:#e63946;background:#fdeaec;animation:jpdd-ng .4s ease;}\n@keyframes jpdd-ok{0%,100%{transform:scale(1)}50%{transform:scale(1.05)}}\n@keyframes jpdd-ng{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}\n#jpdd-dashboard .jpdd-q-cn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:#9b5de5;color:#fff;font-size:11px;font-weight:800;flex-shrink:0;}\n#jpdd-dashboard .jpdd-q-choice.ok .jpdd-q-cn{background:#3aaf5e;}\n#jpdd-dashboard .jpdd-q-choice.ng .jpdd-q-cn{background:#e63946;}\n#jpdd-dashboard .jpdd-q-skip{display:block;margin:14px auto 0;background:transparent;border:none;color:#9b5de5;font-size:12px;font-weight:700;cursor:pointer;text-decoration:underline dotted;font-family:inherit;}\n#jpdd-dashboard .jpdd-result{text-align:center;padding:30px 20px;background:#fff;border-radius:24px;box-shadow:0 12px 30px rgba(29,53,87,.20);max-width:480px;margin:0 auto;}\n#jpdd-dashboard .jpdd-result-icon{font-size:60px;margin-bottom:8px;}\n#jpdd-dashboard .jpdd-result-title{font-size:20px;font-weight:800;color:#1d3557;margin-bottom:8px;}\n#jpdd-dashboard .jpdd-result-score{font-size:48px;font-weight:900;color:#ff6b9d;text-shadow:2px 2px 0 #f4c430;margin:14px 0;}\n#jpdd-dashboard .jpdd-result-msg{font-size:13px;color:#5a6f85;margin-bottom:18px;}\n#jpdd-dashboard .jpdd-result-btn{cursor:pointer;border:none;padding:10px 22px;border-radius:999px;font-size:13px;font-weight:800;background:linear-gradient(135deg,#9b5de5,#ff6b9d);color:#fff;font-family:inherit;letter-spacing:1px;box-shadow:0 4px 0 #6c3eb8,0 8px 14px rgba(155,93,229,.30);}\n\/* \u554f\u984c\u6570\u9078\u629e\u753b\u9762 *\/\n#jpdd-dashboard .jpdd-qcount{text-align:center;padding:34px 24px;background:linear-gradient(135deg,#fff8e7,#f5e1ff);border-radius:24px;box-shadow:0 12px 30px rgba(29,53,87,.20);max-width:480px;margin:0 auto;}\n#jpdd-dashboard .jpdd-qcount-title{font-size:22px;font-weight:800;color:#1d3557;margin-bottom:6px;letter-spacing:.5px;}\n#jpdd-dashboard .jpdd-qcount-sub{font-size:14px;color:#5a6f85;margin-bottom:14px;}\n#jpdd-dashboard .jpdd-qcount-info{font-size:11px;color:#9b5de5;background:#fff;display:inline-block;padding:4px 14px;border-radius:999px;font-weight:700;margin-bottom:18px;letter-spacing:.5px;box-shadow:0 2px 6px rgba(155,93,229,.15);}\n#jpdd-dashboard .jpdd-qcount-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:10px;margin-bottom:16px;}\n#jpdd-dashboard .jpdd-qcount-btn{cursor:pointer;border:none;padding:14px 12px;border-radius:14px;font-size:15px;font-weight:800;background:linear-gradient(135deg,#9b5de5,#ff6b9d);color:#fff;font-family:inherit;letter-spacing:.5px;box-shadow:0 4px 0 #6c3eb8,0 6px 14px rgba(155,93,229,.25);transition:all .15s;}\n#jpdd-dashboard .jpdd-qcount-btn:hover{transform:translateY(-2px);box-shadow:0 6px 0 #6c3eb8,0 10px 20px rgba(155,93,229,.30);}\n#jpdd-dashboard .jpdd-qcount-btn:active{transform:translateY(2px);box-shadow:0 2px 0 #6c3eb8,0 3px 8px rgba(155,93,229,.20);}\n#jpdd-dashboard .jpdd-qcount-cancel{cursor:pointer;border:none;padding:8px 16px;border-radius:999px;font-size:11px;font-weight:700;background:transparent;color:#9b5de5;font-family:inherit;text-decoration:underline dotted;letter-spacing:.5px;}\n\/* \u7d50\u679c\u753b\u9762\u306e\u56de\u7b54\u4e00\u89a7 *\/\n#jpdd-dashboard .jpdd-r-list-title{margin:24px 0 10px;font-size:14px;font-weight:800;color:#1d3557;text-align:left;letter-spacing:.5px;}\n#jpdd-dashboard .jpdd-r-list{text-align:left;display:flex;flex-direction:column;gap:8px;}\n#jpdd-dashboard .jpdd-r-item{background:#f8fbff;border-radius:14px;border:2px solid #e1ecf6;overflow:hidden;transition:all .2s;}\n#jpdd-dashboard .jpdd-r-item.jpdd-r-ok{border-color:#7bc950;background:#f3fbf0;}\n#jpdd-dashboard .jpdd-r-item.jpdd-r-ng{border-color:#ff8aa1;background:#fff5f7;}\n#jpdd-dashboard .jpdd-r-item.jpdd-r-sk{border-color:#d4af37;background:#fffbf0;}\n#jpdd-dashboard .jpdd-r-item[open]{box-shadow:0 4px 12px rgba(29,53,87,.10);}\n#jpdd-dashboard .jpdd-r-summary{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;font-size:13px;font-weight:700;color:#1d3557;list-style:none;user-select:none;}\n#jpdd-dashboard .jpdd-r-summary::-webkit-details-marker{display:none;}\n#jpdd-dashboard .jpdd-r-summary::after{content:'\\25BC';margin-left:auto;font-size:9px;color:#9b5de5;transition:transform .2s;}\n#jpdd-dashboard .jpdd-r-item[open] .jpdd-r-summary::after{transform:rotate(180deg);}\n#jpdd-dashboard .jpdd-r-no{font-size:11px;color:#9b5de5;font-weight:800;min-width:22px;}\n#jpdd-dashboard .jpdd-r-status{font-size:16px;}\n#jpdd-dashboard .jpdd-r-lemma{font-weight:800;color:#1d3557;font-size:14px;}\n#jpdd-dashboard .jpdd-r-pos{font-size:10px;background:#9b5de5;color:#fff;padding:2px 8px;border-radius:999px;font-weight:700;}\n#jpdd-dashboard .jpdd-r-body{padding:12px 14px 14px;border-top:1px solid rgba(155,93,229,.15);background:#fff;}\n#jpdd-dashboard .jpdd-r-userans{font-size:12px;color:#e63946;background:#ffe5ec;padding:8px 12px;border-radius:10px;margin-bottom:10px;font-weight:600;}\n#jpdd-dashboard .jpdd-r-meaning{font-size:13px;color:#1d3557;line-height:1.7;background:#f8fbff;padding:10px 12px;border-radius:10px;margin-bottom:10px;white-space:normal;}\n#jpdd-dashboard .jpdd-r-examples{display:flex;flex-direction:column;gap:8px;margin-bottom:8px;}\n#jpdd-dashboard .jpdd-r-example{background:#fff8e7;border-left:3px solid #f4c430;padding:8px 12px;border-radius:6px;}\n#jpdd-dashboard .jpdd-r-ex-idn{font-size:13px;color:#1d3557;font-weight:600;line-height:1.5;}\n#jpdd-dashboard .jpdd-r-ex-jp{font-size:12px;color:#5a6f85;line-height:1.6;margin-top:3px;}\n#jpdd-dashboard .jpdd-r-ex-ann{font-size:10px;color:#9b5de5;font-weight:700;margin-top:4px;letter-spacing:.5px;}\n#jpdd-dashboard .jpdd-r-tag{font-size:10px;color:#fff;background:linear-gradient(135deg,#9b5de5,#ff6b9d);display:inline-block;padding:3px 10px;border-radius:999px;font-weight:700;}\n#jpdd-dashboard .jpdd-gate{text-align:center;padding:40px 20px;background:linear-gradient(135deg,#fff8e7,#f5e1ff);border-radius:24px;}\n#jpdd-dashboard .jpdd-gate-icon{font-size:64px;margin-bottom:12px;}\n#jpdd-dashboard .jpdd-gate-title{font-size:22px;font-weight:800;color:#1d3557;margin-bottom:10px;}\n#jpdd-dashboard .jpdd-gate-msg{font-size:14px;color:#5a6f85;line-height:1.7;margin-bottom:18px;}\n#jpdd-dashboard .jpdd-gate-btn{display:inline-block;cursor:pointer;border:none;padding:12px 28px;border-radius:999px;font-size:14px;font-weight:800;background:linear-gradient(135deg,#9b5de5,#ff6b9d);color:#fff;text-decoration:none;letter-spacing:1px;box-shadow:0 4px 0 #6c3eb8,0 8px 18px rgba(155,93,229,.30);margin-top:8px;}\n#jpdd-dashboard .jpdd-login-box{max-width:380px;margin:0 auto 18px;background:#fff;border-radius:18px;padding:18px 16px;box-shadow:0 8px 24px rgba(155,93,229,.12);text-align:left;}\n#jpdd-dashboard .jpdd-login-row{margin-bottom:10px;}\n#jpdd-dashboard .jpdd-login-row label{display:block;font-size:11px;font-weight:700;color:#5a6f85;margin-bottom:4px;letter-spacing:.5px;}\n#jpdd-dashboard .jpdd-login-row input{width:100%;border:2px solid #e1ecf6;border-radius:10px;padding:9px 12px;font-size:14px;color:#1d3557;outline:none;font-family:inherit;background:#f8fbff;box-sizing:border-box;}\n#jpdd-dashboard .jpdd-login-row input:focus{border-color:#9b5de5;background:#fff;}\n#jpdd-dashboard .jpdd-login-submit{display:block;width:100%;background:linear-gradient(135deg,#9b5de5,#ff6b9d);color:#fff;border:none;padding:11px 16px;border-radius:999px;font-size:14px;font-weight:800;cursor:pointer;font-family:inherit;letter-spacing:1px;box-shadow:0 4px 0 #6c3eb8,0 6px 14px rgba(155,93,229,.30);transition:all .2s;margin-top:6px;}\n#jpdd-dashboard .jpdd-login-submit:hover{transform:translateY(-1px);}\n#jpdd-dashboard .jpdd-login-help{text-align:center;margin-top:10px;font-size:11px;}\n#jpdd-dashboard .jpdd-login-help a{color:#9b5de5;text-decoration:none;}\n#jpdd-dashboard .jpdd-login-help a:hover{text-decoration:underline;}\n@media(max-width:600px){\n#jpdd-dashboard .jpdd-hero{padding:28px 18px 24px;border-radius:20px;}\n#jpdd-dashboard .jpdd-title{font-size:22px;letter-spacing:1px;}\n#jpdd-dashboard .jpdd-sub{font-size:11px;}\n#jpdd-dashboard .jpdd-list{grid-template-columns:1fr;}\n#jpdd-dashboard .jpdd-q-word{font-size:26px;}\n#jpdd-dashboard .jpdd-q-choices{grid-template-columns:1fr;}\n#jpdd-dashboard .jpdd-tab{padding:8px 14px;font-size:11px;}\n}\n\/* Single-column layout: hide theme sidebar \/ make main column full width when dashboard is present *\/\nbody.jpdd-dashboard-page .l-sub,\nbody.jpdd-dashboard-page aside.l-sub,\nbody.jpdd-dashboard-page #sidebar,\nbody.jpdd-dashboard-page .sidebar,\nbody.jpdd-dashboard-page #side,\nbody.jpdd-dashboard-page .side,\nbody.jpdd-dashboard-page .secondary,\nbody.jpdd-dashboard-page .widget-area{display:none !important;}\nbody.jpdd-dashboard-page .l-main,\nbody.jpdd-dashboard-page .l-content,\nbody.jpdd-dashboard-page #main,\nbody.jpdd-dashboard-page .main,\nbody.jpdd-dashboard-page .content-area,\nbody.jpdd-dashboard-page .primary{width:100% !important;max-width:100% !important;flex:1 1 100% !important;float:none !important;margin-right:0 !important;}\nbody.jpdd-dashboard-page .l-content,\nbody.jpdd-dashboard-page .l-container{max-width:1100px !important;width:100% !important;margin-left:auto !important;margin-right:auto !important;}\n\/* Hide page title (\u5358\u8a9e\u30ce\u30fc\u30c8) and breadcrumbs on word-notes page *\/\nbody.jpdd-dashboard-page .entry-title,\nbody.jpdd-dashboard-page .post-ttl,\nbody.jpdd-dashboard-page .post-title,\nbody.jpdd-dashboard-page h1.entry-title,\nbody.jpdd-dashboard-page .l-title,\nbody.jpdd-dashboard-page .entry-header,\nbody.jpdd-dashboard-page .post-header,\nbody.jpdd-dashboard-page .ttl-area,\nbody.jpdd-dashboard-page .breadcrumb,\nbody.jpdd-dashboard-page .pankuzu,\nbody.jpdd-dashboard-page nav.breadcrumb{display:none !important;}\n\/* Strip SANGO\/theme decoration that bleeds into the dashboard (background images, ::before circles, etc.) *\/\nbody.jpdd-dashboard-page .entry-content,\nbody.jpdd-dashboard-page .post-content,\nbody.jpdd-dashboard-page .post_content,\nbody.jpdd-dashboard-page article.post,\nbody.jpdd-dashboard-page article{background:transparent !important;background-image:none !important;box-shadow:none !important;border:none !important;padding:0 !important;margin:0 !important;}\nbody.jpdd-dashboard-page .entry-content::before,\nbody.jpdd-dashboard-page .entry-content::after,\nbody.jpdd-dashboard-page .post-content::before,\nbody.jpdd-dashboard-page .post-content::after,\nbody.jpdd-dashboard-page article::before,\nbody.jpdd-dashboard-page article::after{display:none !important;content:none !important;}\n\/* Remove default top\/bottom paragraph margins inside dashboard so cards don't overlap *\/\nbody.jpdd-dashboard-page .entry-content > p,\nbody.jpdd-dashboard-page .post-content > p{margin:0 !important;padding:0 !important;}\n\/* Make absolutely sure the dashboard root is on its own stacking context *\/\nbody.jpdd-dashboard-page #jpdd-dashboard{position:relative !important;z-index:1 !important;background:transparent !important;}\n\/* Re-assert dashboard internal styles in case theme overrides them *\/\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-list{display:grid !important;grid-template-columns:repeat(auto-fill,minmax(280px,1fr)) !important;gap:14px !important;}\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-card{position:relative !important;background:#fff !important;border-radius:16px !important;padding:16px 18px 14px !important;box-shadow:0 4px 14px rgba(29,53,87,.10) !important;border:2px solid transparent !important;transform:none !important;animation:none !important;overflow:visible !important;}\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-card::before{content:\"\" !important;position:absolute !important;top:0 !important;left:0 !important;right:0 !important;bottom:auto !important;height:5px !important;width:auto !important;background:linear-gradient(90deg,#9b5de5,#ff6b9d) !important;background-image:linear-gradient(90deg,#9b5de5,#ff6b9d) !important;border-radius:16px 16px 0 0 !important;border:none !important;box-shadow:none !important;transform:none !important;animation:none !important;}\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-card:nth-child(4n+2)::before{background:linear-gradient(90deg,#26c6da,#4a90e2) !important;background-image:linear-gradient(90deg,#26c6da,#4a90e2) !important;}\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-card:nth-child(4n+3)::before{background:linear-gradient(90deg,#f4c430,#ff8a3d) !important;background-image:linear-gradient(90deg,#f4c430,#ff8a3d) !important;}\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-card:nth-child(4n)::before{background:linear-gradient(90deg,#3aaf5e,#26c6da) !important;background-image:linear-gradient(90deg,#3aaf5e,#26c6da) !important;}\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-card::after{display:none !important;content:none !important;background:none !important;}\n\/* Reset card children that theme may decorate *\/\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-card *::before,\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-card *::after,\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-card-actions::before,\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-card-actions::after,\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-card-head::before,\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-card-head::after,\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-meaning::before,\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-meaning::after,\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-stats-mini::before,\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-stats-mini::after{display:none !important;content:none !important;background:none !important;}\n\/* Inner card blocks: kill any theme-applied background images \/ borders *\/\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-card-head,\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-meaning,\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-stats-mini,\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-card-actions,\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-tag,\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-act{background-image:none !important;border:none !important;box-shadow:none !important;}\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-tag{background:#f5e1ff !important;color:#9b5de5 !important;}\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-act{background:#f5f5f5 !important;}\nbody.jpdd-dashboard-page #jpdd-dashboard .jpdd-act.del{background:#fdeaec !important;color:#e63946 !important;}\n<\/style>\n<script id=\"jpdd-script\">\n(function(){\nvar $=function(s){return document.querySelector(s);};\nvar stage=$('#jpdd-stage'), gate=$('#jpdd-gate'), tabs=document.querySelectorAll('.jpdd-tab');\nvar SAVED=[], MODE='list';\nvar Q={idx:0,total:0,correct:0,wrong:0,seq:[]};\n\nfunction esc(s){return (s+'').replace(\/[&<>\"']\/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c];});}\nfunction shuffle(a){var b=a.slice();for(var i=b.length-1;i>0;i--){var j=Math.floor(Math.random()*(i+1));var t=b[i];b[i]=b[j];b[j]=t;}return b;}\n\nfunction updateStats(){\n    var t=SAVED.length, c=0, w=0;\n    SAVED.forEach(function(s){c+=parseInt(s.correct_count||0,10);w+=parseInt(s.wrong_count||0,10);});\n    var rate=(c+w)>0 ? Math.round(c\/(c+w)*100) : 0;\n    $('#jpdd-total').textContent=t;\n    $('#jpdd-correct').textContent=c;\n    $('#jpdd-wrong').textContent=w;\n    $('#jpdd-rate').textContent=rate+'%';\n}\n\nvar NONCE=window.jpdwRestNonce||'';\nvar REST=window.jpdwRestBase||'\/wp-json\/jp-dict\/v1';\n\/\/ Cross-site bridge: on main site (japanesia.net root, not \/jlc\/), use JLC's REST API\n\/\/ so the same JLC user sees the same saved words from both \/word-notes\/ and \/jlc\/word-notes\/.\nvar jpddIsMainSide = (window.location.pathname.indexOf('\/jlc\/') === -1);\nvar jpddInit = Promise.resolve();\nif(jpddIsMainSide){\n    REST = '\/jlc\/wp-json\/jp-dict\/v1';\n    jpddInit = fetch('\/jlc\/wp-admin\/admin-ajax.php?action=rest-nonce',{credentials:'same-origin'})\n        .then(function(r){return r.text();})\n        .then(function(t){ if(t && t.replace(\/\\s+\/g,'') !== '0'){ NONCE = t.trim(); } })\n        .catch(function(){});\n}\n\/\/ Add body class so theme sidebar can be hidden via CSS for single-column layout\ntry{ document.body.classList.add('jpdd-dashboard-page'); }catch(e){}\nfunction fetchSaved(){\n    return fetch(REST+'\/saved',{credentials:'same-origin',headers:{'X-WP-Nonce':NONCE}})\n        .then(function(r){if(r.status===401||r.status===403){throw new Error('not_member');}return r.json();})\n        .then(function(j){SAVED=j.saved||[];updateStats();return SAVED;});\n}\n\n\/\/ Closing-tag helpers: WordPress on the main site strips literal '<\/xxx>' patterns\n\/\/ from JS strings inside the dashboard heredoc. We build the closing tag at\n\/\/ runtime using a unicode-escaped '<' so the source no longer contains a\n\/\/ literal '<\/xxx>' substring (the filter only matches the literal pattern).\nvar LT='<'; \/\/ = '<'\nvar ED=LT+'\/div>',ES=LT+'\/span>',EB=LT+'\/button>',ETA=LT+'\/textarea>',ESEL=LT+'\/select>',EOPT=LT+'\/option>',EH=LT+'\/h2>',ELBL=LT+'\/label>',ELI=LT+'\/li>',EUL=LT+'\/ul>',EFORM=LT+'\/form>',EA=LT+'\/a>',EI=LT+'\/i>',EP=LT+'\/p>',EDET=LT+'\/details>',ESUM=LT+'\/summary>';\nfunction renderList(){\n    if(!SAVED.length){\n        stage.innerHTML='<div class=\"jpdd-empty\"><div class=\"jpdd-empty-icon\">\ud83d\udced'+ED+'<div class=\"jpdd-empty-title\">\u307e\u3060\u5358\u8a9e\u304c\u767b\u9332\u3055\u308c\u3066\u3044\u307e\u305b\u3093'+ED+'<div class=\"jpdd-empty-msg\">\u8a18\u4e8b\u30da\u30fc\u30b8\u306e\u53f3\u4e0b\u306b\u3042\u308b<br>\ud83d\udcd6\u8f9e\u66f8\u30dc\u30bf\u30f3\u304b\u3089\u5358\u8a9e\u3092\u691c\u7d22 \u2192 \u767b\u9332\u3067\u304d\u307e\u3059'+ED+ED;\n        return;\n    }\n    var html='<div class=\"jpdd-list\">';\n    SAVED.forEach(function(s){\n        var tag=s.field_tag?'<span class=\"jpdd-tag\">'+esc(s.field_tag)+ES:'';\n        var pos=s.pos?'<span class=\"jpdd-pos\">'+esc(s.pos)+ES:'';\n        var customCls=s.is_custom?' is-custom':'';\n        html+='<div class=\"jpdd-card'+customCls+'\" data-saved-id=\"'+s.saved_id+'\">'+\n            '<div class=\"jpdd-card-head\"><div class=\"jpdd-lemma\">'+esc(s.lemma)+ED+pos+ED+\n            '<div class=\"jpdd-meaning\">'+tag+esc(s.meaning_jp)+ED+\n            '<div class=\"jpdd-stats-mini\"><span>\u2705 '+(s.correct_count||0)+ES+'<span>\u274c '+(s.wrong_count||0)+ES+ED+\n            '<div class=\"jpdd-card-actions\"><button class=\"jpdd-act del\" data-act=\"del\" data-saved-id=\"'+s.saved_id+'\">\u524a\u9664'+EB+ED+\n        ED;\n    });\n    html+=ED;\n    stage.innerHTML=html;\n}\n\nfunction renderAddForm(){\n    stage.innerHTML='<div class=\"jpdd-add-form\">'+\n        '<div class=\"jpdd-add-title\"><span class=\"jpdd-add-icon\">+'+ES+'\u81ea\u5206\u3067\u5358\u8a9e\u3092\u8ffd\u52a0'+ED+\n        '<div class=\"jpdd-add-sub\">\u8f9e\u66f8\u306b\u7121\u3044\u5358\u8a9e\u3084\u3001\u899a\u3048\u305f\u3044\u8868\u73fe\u3092\u81ea\u7531\u306b\u767b\u9332\u3067\u304d\u307e\u3059\u3002'+ED+\n        '<div class=\"jpdd-add-row\"><label>\u5358\u8a9e\uff08\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u8a9e\uff09<span style=\"color:#e63946;\">*'+ES+ELBL+'<input type=\"text\" id=\"jpdd-add-lemma\" placeholder=\"\u4f8b: gotong royong\" autocomplete=\"off\" maxlength=\"100\">'+ED+\n        '<div class=\"jpdd-add-row\"><label>\u610f\u5473\uff08\u65e5\u672c\u8a9e\uff09<span style=\"color:#e63946;\">*'+ES+ELBL+'<textarea id=\"jpdd-add-meaning\" placeholder=\"\u4f8b: \u52a9\u3051\u5408\u3044\u3001\u5354\u529b\" maxlength=\"500\">'+ETA+ED+\n        '<div class=\"jpdd-add-row\"><label>\u54c1\u8a5e\uff08\u4efb\u610f\uff09'+ELBL+'<select id=\"jpdd-add-pos\"><option value=\"\">--\u9078\u629e--'+EOPT+'<option>\u540d\u8a5e'+EOPT+'<option>\u52d5\u8a5e'+EOPT+'<option>\u5f62\u5bb9\u8a5e'+EOPT+'<option>\u526f\u8a5e'+EOPT+'<option>\u6328\u62f6'+EOPT+'<option>\u4ee3\u540d\u8a5e'+EOPT+'<option>\u7591\u554f\u8a5e'+EOPT+'<option>\u524d\u7f6e\u8a5e'+EOPT+'<option>\u63a5\u7d9a\u8a5e'+EOPT+'<option>\u6570\u8a5e'+EOPT+'<option>\u305d\u306e\u4ed6'+EOPT+ESEL+ED+\n        '<div class=\"jpdd-add-row\"><label>\u30e1\u30e2\uff08\u4efb\u610f\uff09'+ELBL+'<textarea id=\"jpdd-add-notes\" placeholder=\"\u4f7f\u3044\u65b9\u3084\u4f8b\u6587\u306a\u3069\" maxlength=\"500\">'+ETA+ED+\n        '<button class=\"jpdd-add-submit\" id=\"jpdd-add-submit\">\u5358\u8a9e\u30ce\u30fc\u30c8\u306b\u767b\u9332'+EB+\n        '<div class=\"jpdd-add-msg\" id=\"jpdd-add-msg\">'+ED+\n    ED;\n    document.getElementById('jpdd-add-submit').addEventListener('click',submitAddForm);\n}\n\nfunction submitAddForm(){\n    var lemma=document.getElementById('jpdd-add-lemma').value.trim();\n    var meaning=document.getElementById('jpdd-add-meaning').value.trim();\n    var pos=document.getElementById('jpdd-add-pos').value;\n    var notes=document.getElementById('jpdd-add-notes').value.trim();\n    var msg=document.getElementById('jpdd-add-msg');\n    var btn=document.getElementById('jpdd-add-submit');\n    if(!lemma || !meaning){\n        msg.className='jpdd-add-msg err';\n        msg.textContent='\u5358\u8a9e\u3068\u610f\u5473\u306f\u5fc5\u9808\u3067\u3059';\n        return;\n    }\n    btn.disabled=true;\n    msg.className='jpdd-add-msg';\n    msg.textContent='\u9001\u4fe1\u4e2d\u2026';\n    fetch(REST+'\/saved\/custom',{\n        method:'POST',\n        headers:{'Content-Type':'application\/json','X-WP-Nonce':NONCE},\n        credentials:'same-origin',\n        body:JSON.stringify({lemma:lemma, meaning_jp:meaning, pos:pos, notes:notes})\n    }).then(function(r){return r.json();}).then(function(j){\n        if(j && j.saved){\n            msg.className='jpdd-add-msg ok';\n            msg.textContent=j.already?'\u3059\u3067\u306b\u767b\u9332\u6e08\u307f\u3067\u3059':'\u2705 \u767b\u9332\u5b8c\u4e86\uff01';\n            document.getElementById('jpdd-add-lemma').value='';\n            document.getElementById('jpdd-add-meaning').value='';\n            document.getElementById('jpdd-add-pos').value='';\n            document.getElementById('jpdd-add-notes').value='';\n            \/\/ refresh saved list\n            fetchSaved();\n        } else {\n            msg.className='jpdd-add-msg err';\n            msg.textContent='\u30a8\u30e9\u30fc\uff1a'+(j.message||'\u767b\u9332\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f');\n        }\n        btn.disabled=false;\n    }).catch(function(){\n        msg.className='jpdd-add-msg err';\n        msg.textContent='\u901a\u4fe1\u30a8\u30e9\u30fc';\n        btn.disabled=false;\n    });\n}\n\n\/\/ \u30c6\u30b9\u30c8\u4e2d\u306b\u7b54\u3048\u304c\u898b\u3048\u3066\u3057\u307e\u3046\u7b87\u6240\u3092\u9664\u53bb\u3059\u308b\u30d8\u30eb\u30d1\u30fc\n\/\/ \u3010\u95a2\u9023\u3011\u3084\u3010\u6d3b\u7528\u3011\u306b\u306f\u6d3e\u751f\u8a9e\/\u6d3b\u7528\u5f62\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u51fa\u984c\u6642\u306b\u306f\u524a\u9664\u3059\u308b\n\/\/ \u91cd\u8981: PHP\u51fa\u529b\u6642\u306bWordPress\u304c\u65e5\u672c\u8a9e\u3092HTML\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u5316\u3059\u308b\u305f\u3081\u3001\n\/\/ JavaScript\u30bd\u30fc\u30b9\u5185\u3067\u306fUnicode\u30a8\u30b9\u30b1\u30fc\u30d7(\\uXXXX)\u3092\u4f7f\u3046\u5fc5\u8981\u304c\u3042\u308b\nfunction cleanForQuiz(text){\n    if(!text) return '';\n    var s=String(text);\n    \/\/ U+3010 = \u3010 (\u5de6\u9685\u4ed8\u304d\u62ec\u5f27)\u3002PHP\u51fa\u529b\u6642\u306bHTML\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u5316\u3055\u308c\u308b\u3053\u3068\u3092\u907f\u3051\u308b\u305f\u3081\n    \/\/ \u6587\u5b57\u30b3\u30fc\u30c9\u304b\u3089\u306e\u52d5\u7684\u69cb\u7bc9\u3092\u4f7f\u7528\u3002\u3059\u3079\u3066\u306e\u3010\u30de\u30fc\u30ab\u30fc\u3067\u5b89\u5168\u5074\u306b\u30ab\u30c3\u30c8\n    var openBracket=String.fromCharCode(12304);\n    var idx=s.indexOf(openBracket);\n    if(idx>=0) s=s.substring(0,idx);\n    return s.replace(\/\\s+$\/,'').replace(\/^\\s+\/,'');\n}\n\/\/ \u554f\u984c\u6570\u9078\u629e\u753b\u9762\u3092\u8868\u793a\nfunction startQuiz(mode){\n    if(SAVED.length<2){\n        stage.innerHTML='<div class=\"jpdd-empty\"><div class=\"jpdd-empty-icon\">\ud83d\udced'+ED+'<div class=\"jpdd-empty-title\">\u30c6\u30b9\u30c8\u306b\u306f2\u8a9e\u4ee5\u4e0a\u306e\u767b\u9332\u304c\u5fc5\u8981\u3067\u3059'+ED+'<div class=\"jpdd-empty-msg\">\u8f9e\u66f8\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u304b\u3089\u3082\u3046\u5c11\u3057\u5358\u8a9e\u3092\u767b\u9332\u3057\u3066\u304f\u3060\u3055\u3044'+ED+ED;\n        return;\n    }\n    var max=SAVED.length;\n    var modeLabel=(mode==='test-meaning'?'\ud83c\udfaf \u610f\u5473\u5f53\u3066':'\ud83d\udd24 \u5358\u8a9e\u5f53\u3066');\n    \/\/ \u5019\u88dc\u30ea\u30b9\u30c8\uff08\u767b\u9332\u6570\u3092\u8d85\u3048\u308b\u3082\u306e\u306f\u9664\u5916\u3001ALL \u306f\u6700\u5f8c\u306b\u8ffd\u52a0\uff09\n    var candidates=[5,10,20,30,50,100];\n    var options=[];\n    candidates.forEach(function(n){ if(n<=max) options.push(n); });\n    \/\/ ALL\uff08\u5168\u4ef6\uff09\u306f max \u304c\u5019\u88dc\u3068\u88ab\u3089\u306a\u3044\u5834\u5408\u306e\u307f\u8ffd\u52a0\n    if(options.indexOf(max)<0) options.push(max);\n    var btnsHtml=options.map(function(n){\n        var label=(n===max && options.length>1?'\u5168\u90e8 ('+n+')':n+'\u554f');\n        return '<button class=\"jpdd-qcount-btn\" data-n=\"'+n+'\">'+label+EB;\n    }).join('');\n    stage.innerHTML='<div class=\"jpdd-qcount\">'+\n        '<div class=\"jpdd-qcount-title\">'+modeLabel+ED+\n        '<div class=\"jpdd-qcount-sub\">\u4f55\u554f\u6311\u6226\u3057\u307e\u3059\u304b\uff1f'+ED+\n        '<div class=\"jpdd-qcount-info\">\u767b\u9332\u5358\u8a9e\uff1a'+max+'\u8a9e'+ED+\n        '<div class=\"jpdd-qcount-grid\">'+btnsHtml+ED+\n        '<button class=\"jpdd-qcount-cancel\" id=\"jpdd-qcount-cancel\">\u30ad\u30e3\u30f3\u30bb\u30eb'+EB+\n    ED;\n    stage.querySelectorAll('.jpdd-qcount-btn').forEach(function(b){\n        b.addEventListener('click',function(){\n            var n=parseInt(b.dataset.n,10);\n            beginQuiz(mode, n);\n        });\n    });\n    document.getElementById('jpdd-qcount-cancel').addEventListener('click',function(){\n        \/\/ \u30bf\u30d6\u3092\u300c\u4e00\u89a7\u300d\u306b\u623b\u3059\n        var listTab=document.querySelector('[data-mode=\"list\"]');\n        if(listTab) listTab.click();\n    });\n}\n\/\/ \u5b9f\u969b\u306b\u30af\u30a4\u30ba\u3092\u958b\u59cb\u3059\u308b\nfunction beginQuiz(mode, total){\n    Q.idx=0;Q.correct=0;Q.wrong=0;Q.total=Math.min(total||10, SAVED.length);\n    Q.results=[]; \/\/ \u5404\u554f\u984c\u306e\u7d50\u679c\u3092\u4fdd\u5b58\uff08\u6b63\u89e3\u3001\u4e0d\u6b63\u89e3\u3001\u30b9\u30ad\u30c3\u30d7\uff09\n    \/\/ Anki-style weighted selection: less-known words appear more often\n    Q.seq=weightedSample(SAVED,Q.total);\n    Q.mode=mode;\n    nextQ();\n}\n\/\/ Weight calculation: untested or wrong-heavy words get higher weight\nfunction jpddWeight(w){\n    var c=parseInt(w.correct_count||0,10);\n    var n=parseInt(w.wrong_count||0,10);\n    var total=c+n;\n    if(total===0) return 12; \/\/ never tested \u2192 top priority\n    var acc=c\/total;\n    \/\/ 0% accuracy \u2192 weight 14, 100% accuracy \u2192 weight 1\n    var base=Math.max(1, Math.round(14 - acc*13));\n    \/\/ Bonus weight for words wrong recently (high wrong_count overall)\n    if(n>=3 && acc<.5) base+=4;\n    if(c>=5 && acc>=.85) base=Math.max(1,base-2); \/\/ mastered words get less\n    return base;\n}\nfunction weightedSample(pool,n){\n    if(pool.length<=n) return shuffle(pool);\n    var weighted=[];\n    pool.forEach(function(w){\n        var weight=jpddWeight(w);\n        for(var i=0;i<weight;i++) weighted.push(w);\n    });\n    weighted=shuffle(weighted);\n    var result=[]; var seen={};\n    for(var i=0;i<weighted.length && result.length<n;i++){\n        var key=weighted[i].word_id+'|'+(weighted[i].saved_id||'');\n        if(!seen[key]){ seen[key]=true; result.push(weighted[i]); }\n    }\n    return result;\n}\nfunction nextQ(){\n    if(Q.idx>=Q.total){return showResult();}\n    var v=Q.seq[Q.idx];\n    var distractors=shuffle(SAVED.filter(function(x){return x.word_id!==v.word_id;})).slice(0,3);\n    var choices=shuffle([v].concat(distractors));\n    var ci=choices.indexOf(v);\n    var question, choiceText;\n    if(Q.mode==='test-meaning'){\n        question='\u3053\u306e\u5358\u8a9e\u306e\u610f\u5473\u306f\uff1f';\n        \/\/ \u9078\u629e\u80a2\u306e\u610f\u5473\u6587\u3082\u3010\u95a2\u9023\u3011\u3010\u6d3b\u7528\u3011\u3092\u9664\u53bb\u3057\u3066\u7b54\u3048\u304c\u30d0\u30ec\u306a\u3044\u3088\u3046\u306b\u3059\u308b\n        choiceText=function(c){return esc(cleanForQuiz(c.meaning_jp));};\n    } else {\n        question='\u3053\u306e\u610f\u5473\u306e\u5358\u8a9e\u306f\uff1f';\n        choiceText=function(c){return esc(c.lemma);};\n    }\n    var displayMain, displaySub;\n    if(Q.mode==='test-meaning'){\n        displayMain='<div class=\"jpdd-q-word\">'+esc(v.lemma)+ED+(v.pos?'<div class=\"jpdd-q-pos\">'+esc(v.pos)+ED:'');\n    } else {\n        \/\/ \u51fa\u984c\u6642\u306e\u610f\u5473\u3082\u3010\u95a2\u9023\u3011\u3010\u6d3b\u7528\u3011\u3092\u9664\u53bb\uff08lemma\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u3068\u7b54\u3048\u304c\u30d0\u30ec\u308b\u305f\u3081\uff09\n        displayMain='<div class=\"jpdd-q-word\">'+esc(cleanForQuiz(v.meaning_jp))+ED;\n    }\n    var pct=Math.round((Q.idx)\/Q.total*100);\n    stage.innerHTML='<div class=\"jpdd-quiz\">'+\n        '<div class=\"jpdd-q-progress\">'+(Q.idx+1)+' \/ '+Q.total+' &middot; \u2705 '+Q.correct+' &middot; \u274c '+Q.wrong+ED+\n        '<div class=\"jpdd-q-bar\"><div class=\"jpdd-q-bar-fill\" style=\"width:'+pct+'%;\">'+ED+ED+\n        '<div class=\"jpdd-q-q\">'+question+ED+\n        '<div class=\"jpdd-q-target\">'+displayMain+ED+\n        '<div class=\"jpdd-q-choices\">'+\n            choices.map(function(c,i){return '<button class=\"jpdd-q-choice\" data-i=\"'+i+'\"><span class=\"jpdd-q-cn\">'+(i+1)+ES+choiceText(c)+EB;}).join('')+\n        ED+\n        '<button class=\"jpdd-q-skip\">\u30b9\u30ad\u30c3\u30d7 \u2192'+EB+\n    ED;\n    stage.querySelectorAll('.jpdd-q-choice').forEach(function(b){\n        b.addEventListener('click',function(){\n            var i=parseInt(b.dataset.i,10);\n            stage.querySelectorAll('.jpdd-q-choice').forEach(function(x){x.style.pointerEvents='none';});\n            var ok=(i===ci);\n            if(ok){b.classList.add('ok');Q.correct++;}\n            else{b.classList.add('ng');stage.querySelectorAll('.jpdd-q-choice')[ci].classList.add('ok');Q.wrong++;}\n            \/\/ \u7d50\u679c\u3092\u8a18\u9332\n            Q.results.push({word:v, status:(ok?'correct':'wrong'), userChoice:choices[i]});\n            \/\/ record server-side\n            fetch(REST+'\/test-result',{\n                method:'POST',\n                headers:{'Content-Type':'application\/json','X-WP-Nonce':NONCE},\n                credentials:'same-origin',\n                body:JSON.stringify({word_id:v.word_id, correct:ok})\n            }).catch(function(){});\n            \/\/ update local\n            if(ok) v.correct_count=(parseInt(v.correct_count||0,10)+1);\n            else v.wrong_count=(parseInt(v.wrong_count||0,10)+1);\n            updateStats();\n            setTimeout(function(){Q.idx++;nextQ();},1300);\n        });\n    });\n    stage.querySelector('.jpdd-q-skip').addEventListener('click',function(){\n        Q.results.push({word:v, status:'skipped', userChoice:null});\n        Q.idx++;nextQ();\n    });\n}\n\/\/ \u4f8b\u6587\u30bb\u30eb\u3092\u30d1\u30fc\u30b9\u3057\u3066\u8868\u793a\u7528HTML\u3092\u751f\u6210\nfunction jpddRenderExamples(examplesText){\n    if(!examplesText) return '';\n    var lines = String(examplesText).split('\\n').filter(function(l){return l.trim();});\n    if(lines.length===0) return '';\n    var html='<div class=\"jpdd-r-examples\">';\n    lines.forEach(function(ln){\n        var p=ln.split('|');\n        var idn=(p[0]||'').trim();\n        var jp=(p[1]||'').trim();\n        var ann=(p[2]||'').trim();\n        if(!idn) return;\n        html+='<div class=\"jpdd-r-example\">';\n        html+='<div class=\"jpdd-r-ex-idn\">'+esc(idn)+ED;\n        if(jp) html+='<div class=\"jpdd-r-ex-jp\">'+esc(jp)+ED;\n        if(ann) html+='<div class=\"jpdd-r-ex-ann\">'+esc(ann)+ED;\n        html+=ED;\n    });\n    html+=ED;\n    return html;\n}\nfunction showResult(){\n    var pct=Q.total>0?Math.round(Q.correct\/Q.total*100):0;\n    var msg='', icon='';\n    if(pct>=90){icon='\ud83c\udfc6';msg='\u5b8c\u74a7\uff01\u7d20\u6674\u3089\u3057\u3044\uff01';}\n    else if(pct>=70){icon='\ud83c\udf89';msg='\u3088\u304f\u51fa\u6765\u307e\u3057\u305f\uff01';}\n    else if(pct>=50){icon='\ud83d\udcaa';msg='\u3082\u3046\u5c11\u3057\uff01';}\n    else{icon='\ud83d\udcda';msg='\u5fa9\u7fd2\u3057\u307e\u3057\u3087\u3046';}\n\n    \/\/ \u7d50\u679c\u4e00\u89a7\u3092\u751f\u6210\n    var resultsHtml='';\n    if(Q.results && Q.results.length>0){\n        resultsHtml='<div class=\"jpdd-r-list-title\">\ud83d\udccb \u56de\u7b54\u4e00\u89a7\uff08\u30af\u30ea\u30c3\u30af\u3067\u8a73\u7d30\u5c55\u958b\uff09'+ED;\n        resultsHtml+='<div class=\"jpdd-r-list\">';\n        Q.results.forEach(function(r,idx){\n            var w=r.word;\n            var statusIcon=r.status==='correct'?'\u2705':(r.status==='wrong'?'\u274c':'\u23ed\ufe0f');\n            var statusClass=r.status==='correct'?'ok':(r.status==='wrong'?'ng':'sk');\n            resultsHtml+='<details class=\"jpdd-r-item jpdd-r-'+statusClass+'\">';\n            resultsHtml+='<summary class=\"jpdd-r-summary\">';\n            resultsHtml+='<span class=\"jpdd-r-no\">'+(idx+1)+'.'+ES;\n            resultsHtml+='<span class=\"jpdd-r-status\">'+statusIcon+ES;\n            resultsHtml+='<span class=\"jpdd-r-lemma\">'+esc(w.lemma)+ES;\n            if(w.pos)resultsHtml+='<span class=\"jpdd-r-pos\">'+esc(w.pos)+ES;\n            resultsHtml+=ESUM; \/\/ close summary properly (using LT constant to avoid PHP filter)\n            \/\/ detail body\n            resultsHtml+='<div class=\"jpdd-r-body\">';\n            \/\/ \u4e0d\u6b63\u89e3\u6642\uff1a\u30e6\u30fc\u30b6\u30fc\u9078\u629e\u3092\u8868\u793a\n            if(r.status==='wrong' && r.userChoice){\n                if(Q.mode==='test-meaning'){\n                    resultsHtml+='<div class=\"jpdd-r-userans\">\u3042\u306a\u305f\u306e\u7b54\u3048: '+esc(cleanForQuiz(r.userChoice.meaning_jp))+ED;\n                } else {\n                    resultsHtml+='<div class=\"jpdd-r-userans\">\u3042\u306a\u305f\u306e\u7b54\u3048: '+esc(r.userChoice.lemma)+ED;\n                }\n            }\n            \/\/ \u6b63\u89e3\u306e\u610f\u5473\uff08\u30d5\u30eb\u3001\u95a2\u9023\u8a9e\u542b\u3080\uff09\n            if(w.meaning_jp){\n                var meaningHtml=esc(w.meaning_jp).replace(\/\\n\/g,'<br>');\n                resultsHtml+='<div class=\"jpdd-r-meaning\">'+meaningHtml+ED;\n            }\n            \/\/ \u4f8b\u6587\n            if(w.examples){\n                resultsHtml+=jpddRenderExamples(w.examples);\n            }\n            \/\/ \u30d5\u30a3\u30fc\u30eb\u30c9\u30bf\u30b0\n            if(w.field_tag){\n                resultsHtml+='<div class=\"jpdd-r-tag\">\ud83c\udff7 '+esc(w.field_tag)+ED;\n            }\n            resultsHtml+=ED; \/\/ close body\n            resultsHtml+=EDET; \/\/ close details (using LT constant to avoid PHP filter)\n        });\n        resultsHtml+=ED; \/\/ close list\n    }\n\n    stage.innerHTML='<div class=\"jpdd-result\">'+\n        '<div class=\"jpdd-result-icon\">'+icon+ED+\n        '<div class=\"jpdd-result-title\">'+msg+ED+\n        '<div class=\"jpdd-result-score\">'+Q.correct+' \/ '+Q.total+ED+\n        '<div class=\"jpdd-result-msg\">\u6b63\u7b54\u7387 '+pct+'%'+ED+\n        '<button class=\"jpdd-result-btn\" id=\"jpdd-replay\">\u3082\u3046\u4e00\u56de \ud83d\udd04'+EB+\n        resultsHtml+\n    ED;\n    document.getElementById('jpdd-replay').addEventListener('click',function(){startQuiz(Q.mode);});\n}\n\nstage.addEventListener('click',function(e){\n    var del=e.target.closest('[data-act=\"del\"]');\n    if(del){\n        var id=del.dataset.savedId;\n        if(!confirm('\u3053\u306e\u5358\u8a9e\u3092\u524a\u9664\u3057\u307e\u3059\u304b\uff1f')) return;\n        fetch(REST+'\/saved\/'+id,{\n            method:'DELETE',\n            headers:{'X-WP-Nonce':NONCE},\n            credentials:'same-origin'\n        }).then(function(r){return r.json();}).then(function(){\n            SAVED=SAVED.filter(function(s){return String(s.saved_id)!==String(id);});\n            updateStats();\n            if(MODE==='list')renderList();\n        });\n    }\n});\n\ntabs.forEach(function(t){\n    t.addEventListener('click',function(){\n        tabs.forEach(function(x){x.classList.remove('active');});\n        t.classList.add('active');\n        MODE=t.dataset.mode;\n        if(MODE==='list')renderList();\n        else if(MODE==='add')renderAddForm();\n        else startQuiz(MODE);\n    });\n});\n\n\/\/ Login form: set redirect_to to current page (works for both main \/word-notes\/ and JLC \/jlc\/word-notes\/)\n(function(){\n    var formJlc = document.getElementById('jpdd-login-jlc');\n    if(formJlc){\n        var rJlc = formJlc.querySelector('input[name=redirect_to]');\n        if(rJlc) rJlc.value = window.location.href;\n    }\n})();\n\njpddInit.then(fetchSaved).then(function(){\n    renderList();\n}).catch(function(err){\n    if(String(err).indexOf('not_member')>-1 || String(err).indexOf('401')>-1 || String(err).indexOf('403')>-1){\n        document.getElementById('jpdd-stage').style.display='none';\n        document.querySelector('.jpdd-tabs').style.display='none';\n        document.getElementById('jpdd-stats').style.display='none';\n        gate.style.display='block';\n    } else {\n        stage.innerHTML='<div class=\"jpdd-empty\"><div class=\"jpdd-empty-icon\">\u26a0\ufe0f'+ED+'<div class=\"jpdd-empty-title\">\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f'+ED+'<div class=\"jpdd-empty-msg\">\u30ed\u30b0\u30a4\u30f3\u72b6\u614b\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044'+ED+ED;\n    }\n});\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"pmpro_default_level":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-57687","page","type-page","status-publish","hentry","pmpro-has-access"],"_links":{"self":[{"href":"https:\/\/japanesia.net\/jlc\/wp-json\/wp\/v2\/pages\/57687","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/japanesia.net\/jlc\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/japanesia.net\/jlc\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/japanesia.net\/jlc\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/japanesia.net\/jlc\/wp-json\/wp\/v2\/comments?post=57687"}],"version-history":[{"count":0,"href":"https:\/\/japanesia.net\/jlc\/wp-json\/wp\/v2\/pages\/57687\/revisions"}],"wp:attachment":[{"href":"https:\/\/japanesia.net\/jlc\/wp-json\/wp\/v2\/media?parent=57687"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}