/* 文字入力トレーニングページ専用 */
:root{
  --ji-blue:#2f6fed;
  --ji-blue-soft:#eef4ff;
  --ji-green:#168a5b;
  --ji-green-soft:#eaf8f2;
  --ji-orange:#c86b12;
  --ji-orange-soft:#fff4e8;
  --ji-red:#c24141;
  --ji-border:#dfe6ef;
  --ji-text:#172033;
  --ji-muted:#657085;
  --ji-bg:#f7f9fc;
}

.ji-page{background:var(--ji-bg);color:var(--ji-text);min-height:100vh;}
.ji-main{max-width:1180px;margin:0 auto;padding:28px 18px 64px;}
.ji-hero{background:#fff;border:1px solid var(--ji-border);border-radius:22px;padding:28px;box-shadow:0 12px 34px rgba(25,48,88,.06);}
.ji-kicker{margin:0 0 8px;font-size:13px;font-weight:800;color:var(--ji-blue);letter-spacing:.08em;}
.ji-title{margin:0;font-size:clamp(28px,4vw,42px);line-height:1.2;}
.ji-lead{margin:12px 0 0;max-width:860px;line-height:1.9;color:#3d4758;font-size:15px;}
.ji-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px;}
.ji-tag{display:inline-flex;padding:6px 10px;border-radius:999px;background:var(--ji-blue-soft);color:#2457bd;font-size:12px;font-weight:800;}

.ji-overview{margin-top:24px;display:grid;grid-template-columns:1fr 320px;gap:20px;align-items:start;}
.ji-course,.ji-record-summary{background:#fff;border:1px solid var(--ji-border);border-radius:20px;padding:22px;}
.ji-section-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:14px;}
.ji-section-head h2{margin:0;font-size:22px;}
.ji-section-head p{margin:0;color:var(--ji-muted);font-size:13px;}
.ji-step-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
.ji-step-card{border:1px solid var(--ji-border);background:#fff;border-radius:16px;padding:14px;text-align:left;cursor:pointer;transition:.15s;min-height:130px;color:inherit;}
.ji-step-card:hover{transform:translateY(-2px);border-color:#b9c9e3;box-shadow:0 10px 24px rgba(33,66,120,.08);}
.ji-step-card.is-active{border-color:var(--ji-blue);box-shadow:0 0 0 2px rgba(47,111,237,.12);background:#fbfdff;}
.ji-step-num{display:inline-flex;align-items:center;justify-content:center;min-width:44px;height:25px;padding:0 8px;border-radius:999px;background:var(--ji-blue-soft);color:var(--ji-blue);font-size:11px;font-weight:900;}
.ji-step-card h3{font-size:16px;margin:10px 0 5px;}
.ji-step-card p{margin:0;color:var(--ji-muted);font-size:12px;line-height:1.6;}
.ji-step-stat{margin-top:9px!important;font-weight:800;color:#34455f!important;}

.ji-record-summary h2{margin:0 0 10px;font-size:18px;}
.ji-record-summary p{margin:5px 0;color:var(--ji-muted);font-size:13px;line-height:1.7;}
.ji-last{margin-top:12px;padding:12px;border-radius:14px;background:var(--ji-green-soft);color:#176846;font-size:13px;line-height:1.6;}
.ji-record-summary-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px;}
.ji-record-summary-top #jiAttemptedSets{margin:0;font-weight:800;color:#253653;}
.ji-reset{border:1px solid #d8dee8;background:#fff;color:#4d596b;border-radius:10px;cursor:pointer;font-size:12px;font-weight:700;padding:8px 11px;line-height:1.2;}
.ji-reset:hover{background:#f5f7fa;border-color:#c6ceda;}
.ji-reset:focus-visible{outline:3px solid rgba(60,124,255,.22);outline-offset:2px;}

.ji-selector{margin-top:20px;background:#fff;border:1px solid var(--ji-border);border-radius:20px;padding:22px;}
.ji-category-title{display:flex;align-items:center;gap:10px;margin-bottom:6px;}
.ji-category-title h2{margin:0;font-size:22px;}
.ji-category-description{margin:0 0 16px;color:var(--ji-muted);line-height:1.7;font-size:14px;}
.ji-set-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;}
.ji-set-button{position:relative;border:1px solid var(--ji-border);background:#fafcff;border-radius:14px;padding:13px 12px;text-align:left;cursor:pointer;color:inherit;min-height:88px;}
.ji-set-button:hover{border-color:#adc1e3;background:#f5f9ff;}
.ji-set-button.is-current{border-color:var(--ji-blue);background:var(--ji-blue-soft);}
.ji-set-button strong{display:block;font-size:14px;}
.ji-set-button span{display:block;margin-top:5px;font-size:11px;color:var(--ji-muted);line-height:1.45;}
.ji-set-button .ji-prev-badge{position:absolute;right:8px;top:8px;display:inline-flex;width:auto;margin:0;padding:3px 6px;border-radius:999px;background:#fff0c7;color:#865b00;font-weight:900;font-size:10px;}

.ji-practice{margin-top:20px;background:#fff;border:1px solid var(--ji-border);border-radius:20px;overflow:hidden;}
.ji-practice-head{padding:16px 20px;border-bottom:1px solid var(--ji-border);display:flex;justify-content:space-between;gap:16px;align-items:center;background:#fbfcfe;}
.ji-practice-head h2{margin:0;font-size:18px;}
.ji-progress-text{font-size:13px;color:var(--ji-muted);font-weight:700;}
.ji-progress{height:7px;background:#e9eef5;overflow:hidden;}
.ji-progress-bar{height:100%;width:0;background:var(--ji-blue);transition:width .2s ease;}

.ji-auto-note{margin:0;padding:9px 20px;background:#f2f8ff;color:#315f9d;font-size:12px;font-weight:800;border-bottom:1px solid var(--ji-border);}
.ji-question{padding:26px 22px 24px;}
.ji-instruction{margin:0 0 12px;color:var(--ji-muted);font-size:14px;}
.ji-target{display:flex;justify-content:center;align-items:center;min-height:92px;padding:18px;border-radius:18px;background:#f7f9fd;border:1px solid #e4eaf3;font-size:clamp(28px,5vw,42px);font-weight:800;letter-spacing:.03em;text-align:center;line-height:1.7;}
.ji-target ruby{ruby-position:over;}
.ji-target rt{font-size:.42em;font-weight:700;color:#60708a;letter-spacing:.02em;}
.ji-reading{margin:10px 0 0;text-align:center;color:#526074;font-size:14px;}

.ji-input-wrap{max-width:760px;margin:20px auto 0;}
.ji-input-label{display:block;font-weight:800;font-size:13px;margin-bottom:7px;}
.ji-input{width:100%;height:58px;border:2px solid #ccd6e4;border-radius:14px;padding:0 15px;font:inherit;font-size:21px;outline:none;background:#fff;}
.ji-input:focus{border-color:var(--ji-blue);box-shadow:0 0 0 4px rgba(47,111,237,.10);}
.ji-input[disabled]{background:#f2f4f7;color:#7b8491;}
.ji-help{margin:7px 0 0;color:#778193;font-size:12px;line-height:1.6;}
.ji-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:16px;}
.ji-btn{border:1px solid #ccd5e1;border-radius:999px;background:#fff;color:#26364e;padding:10px 18px;font-weight:800;cursor:pointer;font-size:14px;}
.ji-btn.primary{border-color:#255ecf;background:var(--ji-blue);color:#fff;}
.ji-btn.next{border-color:#12724a;background:var(--ji-green);color:#fff;}
.ji-btn:disabled{opacity:.45;cursor:not-allowed;}
.ji-feedback{min-height:28px;margin:14px auto 0;max-width:760px;text-align:center;font-weight:800;font-size:14px;}
.ji-feedback.good{color:var(--ji-green);}
.ji-feedback.bad{color:var(--ji-red);}

.ji-result{padding:28px 22px;text-align:center;}
.ji-result h2{font-size:26px;margin:0 0 8px;}
.ji-score{font-size:46px;font-weight:900;color:var(--ji-blue);margin:8px 0;}
.ji-result-meta{color:var(--ji-muted);margin:5px 0;}
.ji-result-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;max-width:650px;margin:18px auto 0;}
.ji-result-box{padding:13px;border:1px solid var(--ji-border);border-radius:14px;background:#fafcff;}
.ji-result-box strong{display:block;font-size:19px;}
.ji-result-box span{display:block;margin-top:3px;color:var(--ji-muted);font-size:11px;}

.ji-note-section{margin-top:20px;background:#fff;border:1px solid var(--ji-border);border-radius:20px;padding:22px;}
.ji-note-section h2{margin:0 0 10px;font-size:19px;}
.ji-note-section p,.ji-note-section li{font-size:13px;line-height:1.85;color:#4c596b;}

@media (max-width:980px){
  .ji-overview{grid-template-columns:1fr;}
  .ji-step-grid,.ji-set-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width:640px){
  .ji-main{padding:16px 12px 48px;}
  .ji-hero,.ji-course,.ji-record-summary,.ji-selector{padding:18px;border-radius:16px;}
  .ji-step-grid,.ji-set-grid{grid-template-columns:1fr;}
    .ji-practice-head{align-items:flex-start;flex-direction:column;}
  .ji-question{padding:20px 14px;}
  .ji-target{font-size:27px;min-height:82px;padding:14px 10px;}
  .ji-input{font-size:18px;height:54px;}
  .ji-result-grid{grid-template-columns:1fr;}
}

/* F7〜F10 早見表 */
.ji-key-guide{margin-top:20px;background:#fff;border:1px solid var(--ji-border);border-radius:20px;padding:22px;}
.ji-key-guide-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-end;margin-bottom:14px;}
.ji-key-guide-kicker{margin:0 0 4px;color:var(--ji-blue);font-size:11px;font-weight:900;letter-spacing:.08em;}
.ji-key-guide-head h2{margin:0;font-size:20px;}
.ji-key-guide-head>p{max-width:520px;margin:0;color:var(--ji-muted);font-size:13px;line-height:1.7;}
.ji-key-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;}
.ji-key-card{display:flex;flex-direction:column;gap:5px;min-height:112px;padding:14px;border:1px solid #dce5f1;border-radius:15px;background:#f9fbff;}
.ji-key-card kbd,.ji-key-notes kbd{display:inline-flex;align-items:center;justify-content:center;width:max-content;min-width:42px;padding:4px 8px;border:1px solid #bcc8d8;border-bottom-width:3px;border-radius:7px;background:#fff;color:#27364d;font-family:inherit;font-size:12px;font-weight:900;box-shadow:0 1px 0 rgba(0,0,0,.04);}
.ji-key-card strong{font-size:14px;}
.ji-key-card span{color:var(--ji-muted);font-size:11px;line-height:1.55;}
.ji-key-notes{margin-top:14px;padding:14px 16px;border-radius:14px;background:#f6f8fb;}
.ji-key-notes p{margin:0;color:#4c596b;font-size:12px;line-height:1.8;}
.ji-key-notes p+p{margin-top:6px;}
.ji-key-notes .ji-key-caution{color:#737e8f;font-size:11px;}

/* カテゴリごとの入力方法 */
.ji-category-guide{margin:0 0 16px;padding:14px 16px;border:1px solid #dbe5f2;border-radius:15px;background:#f8fbff;}
.ji-category-guide[hidden]{display:none;}
.ji-category-guide-head span{display:inline-flex;margin-bottom:5px;padding:3px 7px;border-radius:999px;background:var(--ji-blue-soft);color:var(--ji-blue);font-size:10px;font-weight:900;}
.ji-category-guide-head h3{margin:0;font-size:15px;line-height:1.5;}
.ji-category-guide ul{margin:9px 0 0;padding-left:1.3em;}
.ji-category-guide li{margin:4px 0;color:#4d5a6c;font-size:12px;line-height:1.75;}
.ji-category-guide-note{margin:10px 0 0;padding-top:9px;border-top:1px dashed #ccd8e8;color:#6a7586;font-size:11px;line-height:1.75;}

@media (max-width:980px){
  .ji-key-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width:640px){
  .ji-key-guide{padding:18px;border-radius:16px;}
  .ji-key-guide-head{display:block;}
  .ji-key-guide-head>p{margin-top:8px;}
  .ji-key-grid{grid-template-columns:1fr 1fr;}
  .ji-key-card{min-height:105px;padding:12px;}
}


/* ========================================
   v4: 問題画面を「入力方法 → お手本 → 入力」に整理
   ======================================== */
.ji-overview[hidden],
.ji-selector[hidden],
.ji-reference[hidden],
.ji-practice[hidden]{display:none !important;}

.ji-selector-kicker,
.ji-practice-kicker{
  margin:0 0 5px;
  color:var(--ji-blue);
  font-size:10px;
  font-weight:900;
  letter-spacing:.1em;
}

.ji-set-select-title{
  margin:18px 0 10px;
  font-size:14px;
  color:#34455f;
}

.ji-practice{
  max-width:920px;
  margin:26px auto 0;
  box-shadow:0 14px 38px rgba(24,46,82,.07);
}

.ji-practice-head{
  padding:18px 22px;
  align-items:center;
}
.ji-practice-head h2{font-size:20px;}
.ji-practice-head-right{
  display:flex;
  align-items:center;
  gap:12px;
}
.ji-quit{
  border:1px solid #d2dbe7;
  background:#fff;
  color:#536176;
  border-radius:999px;
  padding:7px 12px;
  font-size:11px;
  font-weight:800;
  cursor:pointer;
}
.ji-quit:hover{background:#f5f7fa;}

.ji-question{
  padding:26px 28px 30px;
}

.ji-method-card{
  max-width:760px;
  margin:0 auto 24px;
  padding:16px 18px;
  border:1px solid #bcd0ef;
  border-left:5px solid var(--ji-blue);
  border-radius:16px;
  background:#f6f9ff;
}
.ji-method-card[hidden]{display:none !important;}
.ji-method-head span{
  display:block;
  margin-bottom:7px;
  color:var(--ji-blue);
  font-size:12px;
  font-weight:900;
}
.ji-method-head strong{
  display:block;
  color:#18345f;
  font-size:17px;
  line-height:1.65;
}
.ji-method-items{
  margin-top:8px;
}
.ji-method-items p{
  margin:4px 0 0;
  color:#47566a;
  font-size:13px;
  line-height:1.75;
}
.ji-method-note{
  margin:10px 0 0;
  padding-top:9px;
  border-top:1px dashed #c8d7ea;
  color:#6d7889;
  font-size:11px;
  line-height:1.7;
}

.ji-task-block{
  max-width:760px;
  margin:0 auto;
}
.ji-task-label{
  margin:0 0 7px;
  color:#34455f;
  font-size:13px;
  font-weight:900;
}
.ji-instruction{
  margin:0 0 9px;
  color:#737f91;
  font-size:12px;
}
.ji-target{
  min-height:100px;
  background:#fff;
  border:2px solid #dce4ef;
  box-shadow:inset 0 0 0 1px #f5f7fa;
}

.ji-input-wrap{
  margin-top:26px;
  padding-top:22px;
  border-top:1px solid #e6ebf2;
}
.ji-input-label{
  display:flex;
  align-items:baseline;
  gap:10px;
  margin-bottom:9px;
}
.ji-input-label span{
  color:#1f3150;
  font-size:14px;
  font-weight:900;
}
.ji-input-label small{
  color:#7b8696;
  font-size:11px;
  font-weight:600;
}
.ji-input{
  height:64px;
  padding:0 18px;
  border:3px solid #b9c7d9;
  border-radius:14px;
  background:#fff;
  font-size:24px;
}
.ji-input:focus{
  border-color:var(--ji-blue);
  box-shadow:0 0 0 4px rgba(47,111,237,.11);
}
.ji-help{
  margin-top:8px;
  color:#758093;
  font-size:11px;
}

.ji-feedback{
  min-height:30px;
  margin-top:12px;
  font-size:16px;
}


.ji-reference{
  margin:20px 0 0;
  padding:0;
  border:1px solid var(--ji-border);
  border-radius:16px;
  background:#fff;
  overflow:hidden;
}
.ji-reference summary{
  padding:14px 18px;
  cursor:pointer;
  color:#42526a;
  font-size:13px;
  font-weight:800;
}
.ji-reference[open] summary{border-bottom:1px solid var(--ji-border);}
.ji-reference-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  padding:16px 18px 8px;
}
.ji-reference-grid>div{
  display:flex;
  align-items:center;
  gap:8px;
  padding:10px;
  border-radius:11px;
  background:#f7f9fc;
  font-size:12px;
}
.ji-reference kbd{
  display:inline-flex;
  min-width:38px;
  justify-content:center;
  padding:3px 7px;
  border:1px solid #bcc8d8;
  border-bottom-width:3px;
  border-radius:6px;
  background:#fff;
  font-family:inherit;
  font-weight:900;
}
.ji-reference>p{
  margin:0;
  padding:8px 18px 16px;
  color:#687487;
  font-size:11px;
  line-height:1.7;
}

@media (max-width:640px){
  .ji-practice{margin-top:16px;border-radius:16px;}
  .ji-practice-head{padding:14px 15px;align-items:flex-start;}
  .ji-practice-head-right{flex-direction:column;align-items:flex-end;gap:7px;}
  .ji-question{padding:18px 13px 22px;}
  .ji-method-card{padding:14px 13px;margin-bottom:18px;}
  .ji-method-head strong{font-size:15px;}
  .ji-target{min-height:86px;}
  .ji-input-wrap{margin-top:20px;padding-top:18px;}
  .ji-input-label{display:block;}
  .ji-input-label small{display:block;margin-top:3px;}
  .ji-input{height:58px;font-size:20px;}
  .ji-reference-grid{grid-template-columns:1fr 1fr;}
}


/* ========================================
   v6: 練習画面の視線誘導を整理
======================================== */
.ji-question{
  max-width:860px;
  margin:0 auto;
}
.ji-method-card{
  max-width:760px;
  margin:0 auto 28px;
  padding:18px 20px;
  border:1px solid #cfe0f7;
  border-left:5px solid var(--ji-blue);
  border-radius:14px;
  background:#f7fbff;
}
.ji-method-head{
  display:block;
}
.ji-method-head span{
  display:inline-block;
  margin:0 0 7px;
  color:var(--ji-blue);
  font-size:11px;
  font-weight:900;
  letter-spacing:.06em;
}
.ji-method-head strong{
  display:block;
  color:#1d2f4d;
  font-size:17px;
  line-height:1.5;
}
.ji-method-items{
  margin-top:10px;
}
.ji-method-items p{
  margin:5px 0;
  color:#46556c;
  font-size:13px;
  line-height:1.8;
}
.ji-task-block{
  max-width:760px;
  margin:0 auto;
  padding:0;
}
.ji-task-label{
  margin:0 0 10px;
  color:#263b5e;
  font-size:15px;
  font-weight:900;
}
.ji-target{
  min-height:108px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:18px 20px;
  border:2px solid #d8e1ed;
  border-radius:16px;
  background:#fff;
  font-size:30px;
  line-height:1.7;
}
.ji-reading{
  margin:8px 0 0;
  text-align:center;
  color:#66758a;
  font-size:13px;
}
.ji-input-wrap{
  max-width:760px;
  margin:30px auto 0;
  padding:20px;
  border:2px solid #dbe5f2;
  border-radius:18px;
  background:#fbfcfe;
}
.ji-input-label{
  display:block;
  margin:0 0 10px;
  color:#15355f;
  font-size:16px;
  font-weight:900;
}
.ji-input-label::before{
  content:'↓ ';
  color:var(--ji-blue);
}
.ji-input-field-wrap{
  position:relative;
}
.ji-input{
  width:100%;
  height:68px;
  padding:0 18px;
  border:3px solid #9fb5d2;
  border-radius:14px;
  background:#fff;
  color:#17263c;
  font-size:25px;
}
.ji-input:focus{
  border-color:var(--ji-blue);
  box-shadow:0 0 0 5px rgba(47,111,237,.12);
}
.ji-help{
  margin:9px 0 0;
  color:#6f7d90;
  font-size:11px;
  line-height:1.6;
}
@media (max-width:640px){
  .ji-method-card{margin-bottom:22px;padding:15px 16px;}
  .ji-method-head strong{font-size:15px;}
  .ji-target{min-height:90px;font-size:24px;padding:15px;}
  .ji-input-wrap{margin-top:24px;padding:15px;}
  .ji-input{height:62px;font-size:22px;}
}

/* ========================================
   v7: メニューをグループ化・ヒントを簡潔に
   ======================================== */
.ji-step-grid{
  display:block;
}
.ji-menu-group + .ji-menu-group{
  margin-top:24px;
  padding-top:22px;
  border-top:1px solid #e7ecf3;
}
.ji-menu-group-head{
  display:flex;
  align-items:baseline;
  gap:12px;
  margin-bottom:10px;
}
.ji-menu-group-head h3{
  margin:0;
  font-size:17px;
  color:#213452;
}
.ji-menu-group-head p{
  margin:0;
  color:var(--ji-muted);
  font-size:12px;
  line-height:1.6;
}
.ji-step-grid-inner{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
}
.ji-step-card{
  min-height:112px;
}
.ji-step-card h3{
  margin:0 0 6px;
}
.ji-step-num{display:none !important;}

/* 練習中のカテゴリヒントは短く */
.ji-method-card{
  margin:0 auto 18px;
  padding:12px 15px;
  border:1px solid #d5e1f2;
  border-left:4px solid var(--ji-blue);
  border-radius:12px;
  background:#f8fbff;
}
.ji-tip-label{
  display:inline-block;
  margin-right:8px;
  color:var(--ji-blue);
  font-size:11px;
  font-weight:900;
}
.ji-tip-main{
  display:inline;
  margin:0;
  color:#31445f;
  font-size:13px;
  line-height:1.7;
  font-weight:700;
}
.ji-tip-note{
  margin:6px 0 0;
  color:#748094;
  font-size:11px;
  line-height:1.65;
}

/* 問題ごとのヒント。必要な問題にだけ表示 */
.ji-question-hint{
  max-width:680px;
  margin:10px auto 0;
  padding:9px 12px;
  border-radius:10px;
  background:#fff8e9;
  color:#6f4c18;
  font-size:12px;
  line-height:1.65;
  text-align:center;
  font-weight:700;
}
.ji-question-hint[hidden]{display:none !important;}

@media (max-width:980px){
  .ji-step-grid-inner{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width:640px){
  .ji-menu-group-head{display:block;}
  .ji-menu-group-head p{margin-top:4px;}
  .ji-step-grid-inner{grid-template-columns:1fr;}
}

/* ========================================
   v9: 入力欄のはみ出し防止
======================================== */
.ji-page,
.ji-page *,
.ji-page *::before,
.ji-page *::after{
  box-sizing:border-box;
}
.ji-input-wrap,
.ji-input-field-wrap{
  width:100%;
  max-width:760px;
}
.ji-input{
  display:block;
  width:100%;
  max-width:100%;
  min-width:0;
  box-sizing:border-box;
}


/* ========================================
   v10: 記号キーの位置を視覚表示
======================================== */
.ji-keyboard-hint{
  max-width:760px;
  margin:16px auto 0;
  padding:14px 16px 12px;
  border:1px solid #d9e4f2;
  border-radius:14px;
  background:#f9fbfe;
}
.ji-keyboard-hint[hidden]{display:none !important;}
.ji-keyboard-head{
  display:flex;
  align-items:baseline;
  gap:10px;
  margin-bottom:10px;
}
.ji-keyboard-head span{
  color:var(--ji-blue);
  font-size:12px;
  font-weight:900;
  white-space:nowrap;
}
.ji-keyboard-head p{
  margin:0;
  color:#31445f;
  font-size:12px;
  font-weight:700;
}
.ji-keyboard-scroll{
  overflow-x:auto;
  padding:2px 1px 6px;
}
.ji-keyboard{
  width:max-content;
  min-width:690px;
  margin:0 auto;
}
.ji-key-row{
  display:flex;
  gap:5px;
  margin-top:5px;
}
.ji-key-row:nth-child(2){padding-left:26px;}
.ji-key-row:nth-child(3){padding-left:39px;}
.ji-key-row:nth-child(4){padding-left:8px;}
.ji-key{
  width:45px;
  height:42px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  border:1px solid #cfd8e5;
  border-bottom-width:3px;
  border-radius:7px;
  background:#fff;
  color:#6b7788;
  line-height:1;
  box-shadow:0 1px 1px rgba(26,48,80,.04);
}
.ji-key small{
  min-height:11px;
  margin-bottom:2px;
  font-size:9px;
  font-weight:700;
  color:#8995a6;
}
.ji-key strong{
  font-size:12px;
  font-weight:800;
}
.ji-key.is-wide{width:74px;}
.ji-key.is-active{
  border-color:#2f6fed;
  background:#eaf2ff;
  color:#1249b5;
  box-shadow:0 0 0 2px rgba(47,111,237,.12);
}
.ji-key.is-active small{color:#2f6fed;}
.ji-keyboard-note{
  margin:7px 0 0;
  color:#7b8798;
  font-size:10px;
  line-height:1.55;
}
@media (max-width:640px){
  .ji-keyboard-hint{padding:12px 12px 10px;}
  .ji-keyboard-head{display:block;}
  .ji-keyboard-head p{margin-top:3px;}
}

/* v18: 記号練習はJS側で3周表示（3周目ランダム）＋セット選択誘導 */


/* ========================================
   v12: カテゴリ選択後、次に押す場所を明確化
   ======================================== */
.ji-selector{
  position:relative;
  scroll-margin-top:24px;
  transition:border-color .18s ease, box-shadow .18s ease, background-color .18s ease;
}
.ji-selector.is-attention{
  border:3px solid #e5484d;
  box-shadow:0 0 0 5px rgba(229,72,77,.12), 0 12px 30px rgba(95,32,35,.08);
  background:#fffdfd;
}
.ji-selector-attention{
  display:flex;
  align-items:center;
  gap:9px;
  width:max-content;
  max-width:100%;
  margin:-4px 0 14px;
  padding:8px 12px;
  border-radius:999px;
  background:#fff0f0;
  color:#b4232b;
  font-size:13px;
  line-height:1.4;
}
.ji-selector-attention[hidden]{display:none !important;}
.ji-selector-attention-arrow{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:24px;
  height:24px;
  flex:0 0 24px;
  border-radius:50%;
  background:#e5484d;
  color:#fff;
  font-size:16px;
  font-weight:900;
}
.ji-selector.is-attention .ji-set-grid{
  padding:10px;
  margin:-2px -10px -10px;
  border:2px dashed rgba(229,72,77,.45);
  border-radius:16px;
  background:#fffafa;
}
@media (prefers-reduced-motion:no-preference){
  .ji-selector.is-attention{
    animation:jiSelectorAttention 1.05s ease 1;
  }
  @keyframes jiSelectorAttention{
    0%{box-shadow:0 0 0 0 rgba(229,72,77,.32),0 12px 30px rgba(95,32,35,.08);}
    55%{box-shadow:0 0 0 9px rgba(229,72,77,.13),0 12px 30px rgba(95,32,35,.08);}
    100%{box-shadow:0 0 0 5px rgba(229,72,77,.12),0 12px 30px rgba(95,32,35,.08);}
  }
}
@media (max-width:640px){
  .ji-selector-attention{width:100%;border-radius:13px;}
  .ji-selector.is-attention .ji-set-grid{padding:8px;margin:0 -8px -8px;}
}


/* ========================================
   v13: 見ただけで内容が分かるメニューカード
   ======================================== */
.ji-step-card{
  display:grid;
  grid-template-columns:82px minmax(0,1fr);
  gap:13px;
  align-items:center;
  min-height:132px;
  padding:13px;
}
.ji-card-visual{
  width:82px;
  height:82px;
  border:1px solid #d9e3f0;
  border-radius:16px;
  background:#f6f9fd;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:5px;
  overflow:hidden;
  color:#163966;
}
.ji-step-card.is-active .ji-card-visual{
  background:#eef5ff;
  border-color:#9cbcf2;
}
.ji-v-main{
  display:block;
  font-size:36px;
  line-height:1;
  font-weight:900;
  letter-spacing:.02em;
  white-space:nowrap;
}
.ji-v-main.is-wide{font-size:24px;}
.ji-v-main.is-half{font-family:monospace;}
.ji-v-sub{
  display:block;
  max-width:76px;
  font-size:10px;
  line-height:1.25;
  font-weight:800;
  color:#60728d;
  text-align:center;
  white-space:nowrap;
}
.ji-v-sub kbd,
.ji-v-keys kbd{
  font:inherit;
  border:1px solid #b9c7da;
  border-bottom-width:2px;
  border-radius:6px;
  background:#fff;
  padding:2px 5px;
  color:#243a59;
}
.ji-v-keys{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:4px;
  max-width:76px;
}
.ji-v-keys kbd{font-size:9px;}
.ji-card-copy{min-width:0;}
.ji-step-card h3{margin:0 0 5px;font-size:15px;}
.ji-step-card .ji-card-copy>p:not(.ji-step-stat){
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}

/* カテゴリ選択後は、赤枠内のセットを押すことをさらに明確に */
.ji-selector.is-attention .ji-set-button{
  border-color:#efb0b2;
  background:#fff;
}
.ji-selector.is-attention .ji-set-button:hover,
.ji-selector.is-attention .ji-set-button:focus-visible{
  border-color:#d92d38;
  box-shadow:0 0 0 3px rgba(217,45,56,.12);
}

@media (max-width:720px){
  .ji-step-card{grid-template-columns:68px minmax(0,1fr);min-height:118px;}
  .ji-card-visual{width:68px;height:68px;border-radius:14px;}
  .ji-v-main{font-size:30px;}
  .ji-v-main.is-wide{font-size:20px;}
  .ji-v-sub{max-width:64px;font-size:9px;}
}


/* ========================================
   v14: メニューの視認性・続きから再開
   ======================================== */
.ji-v-sub kbd{margin-right:2px;}
.ji-selector-topline{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  flex-wrap:wrap;
}
.ji-back-menu,
.ji-continue{
  appearance:none;
  border:1px solid #b9c8dc;
  border-radius:10px;
  background:#fff;
  color:#21456f;
  font:inherit;
  font-weight:800;
  cursor:pointer;
  min-height:42px;
  padding:9px 13px;
}
.ji-back-menu:hover,
.ji-back-menu:focus-visible,
.ji-continue:hover,
.ji-continue:focus-visible{
  border-color:#6f9ad3;
  background:#f4f8fe;
  outline:none;
  box-shadow:0 0 0 3px rgba(59,110,170,.12);
}
.ji-selected-label{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  background:#eaf2ff;
  color:#245b9e;
  font-size:11px;
  font-weight:900;
  padding:4px 8px;
  margin-bottom:5px;
}
.ji-continue{
  width:100%;
  margin:10px 0 4px;
  background:#eef5ff;
  border-color:#9dbce8;
}
.ji-overview.is-menu-attention .ji-course{
  outline:3px solid rgba(229,72,77,.78);
  outline-offset:5px;
  border-radius:18px;
}
@media (prefers-reduced-motion:no-preference){
  .ji-overview.is-menu-attention .ji-course{animation:jiMenuAttention .9s ease 1;}
  @keyframes jiMenuAttention{
    0%{outline-color:rgba(229,72,77,0);}
    35%{outline-color:rgba(229,72,77,.9);}
    100%{outline-color:rgba(229,72,77,.78);}
  }
}
@media (max-width:640px){
  .ji-back-menu{width:100%;}
  .ji-selector-topline{align-items:stretch;}
}


/* ========================================
   v15: 初心者向けおすすめ順・回遊導線
   ======================================== */
.ji-beginner-route{
  margin-bottom:20px;
  padding:22px;
  border:1px solid #d8e4f2;
  border-radius:20px;
  background:linear-gradient(180deg,#f8fbff 0%,#fff 100%);
}
.ji-route-head h2{margin:7px 0 5px;font-size:22px;color:#1f3452;}
.ji-route-head p{margin:0;color:var(--ji-muted);font-size:13px;line-height:1.7;}
.ji-route-badge,.ji-free-badge{
  display:inline-flex;align-items:center;width:max-content;max-width:100%;
  border-radius:999px;padding:5px 9px;font-size:11px;font-weight:900;line-height:1.2;
}
.ji-route-badge{background:#fff0d9;color:#93520e;border:1px solid #f0d3aa;}
.ji-free-badge{margin-bottom:7px;background:#eef5ff;color:#245b9e;border:1px solid #cfe0f7;}
.ji-route-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:15px;}
.ji-route-step{
  position:relative;display:grid;grid-template-columns:38px 54px minmax(0,1fr);gap:9px;align-items:center;
  min-width:0;min-height:78px;padding:10px;border:1px solid #d7e0ec;border-radius:14px;background:#fff;
  color:var(--ji-text);font:inherit;text-align:left;cursor:pointer;transition:.15s;
}
.ji-route-step:hover,.ji-route-step:focus-visible{border-color:#7da6df;background:#f7fbff;box-shadow:0 0 0 3px rgba(47,111,237,.1);outline:none;}
.ji-route-num{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:#2f6fed;color:#fff;font-weight:900;font-size:13px;}
.ji-route-icon{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:12px;background:#eef4ff;color:#204f91;font-weight:900;font-size:25px;line-height:1;white-space:nowrap;}
.ji-route-icon-wide{font-size:16px;letter-spacing:-.02em;}
.ji-route-step strong{display:block;font-size:13px;line-height:1.35;}
.ji-route-step small{display:block;margin-top:3px;color:#718096;font-size:10px;line-height:1.45;}
.ji-route-next{margin:12px 0 0;color:#596a80;font-size:11px;line-height:1.65;}
.ji-course{scroll-margin-top:22px;}

.ji-result-next{max-width:720px;margin:24px auto 0;padding-top:18px;border-top:1px solid #e3e9f1;}
.ji-result-next>strong{display:block;margin-bottom:9px;font-size:13px;color:#35465f;}
.ji-result-next-links{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;}
.ji-result-next-links a{display:inline-flex;align-items:center;min-height:38px;padding:7px 11px;border:1px solid #cbd8e8;border-radius:999px;background:#fff;color:#245b9e;text-decoration:none;font-size:11px;font-weight:800;}
.ji-result-next-links a:hover,.ji-result-next-links a:focus-visible{background:#f1f6fd;border-color:#8eb1e0;outline:none;}

.ji-seo-guide,.ji-next-practice{margin-top:22px;background:#fff;border:1px solid var(--ji-border);border-radius:20px;padding:24px;}
.ji-seo-guide h2,.ji-next-head h2{margin:0 0 10px;font-size:21px;color:#203552;}
.ji-seo-guide p,.ji-next-head p{margin:8px 0 0;color:#58667a;font-size:13px;line-height:1.85;}
.ji-next-head>span{display:inline-block;margin-bottom:6px;color:var(--ji-blue);font-size:11px;font-weight:900;letter-spacing:.05em;}
.ji-next-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px;}
.ji-next-card{display:grid;grid-template-columns:54px minmax(0,1fr) 20px;gap:10px;align-items:center;min-width:0;padding:14px;border:1px solid #d9e2ee;border-radius:15px;background:#fbfcfe;color:inherit;text-decoration:none;transition:.15s;}
.ji-next-card:hover,.ji-next-card:focus-visible{border-color:#8fb0dc;background:#f4f8fe;transform:translateY(-1px);outline:none;box-shadow:0 8px 20px rgba(30,67,113,.07);}
.ji-next-icon{display:flex;align-items:center;justify-content:center;width:54px;height:54px;border-radius:14px;background:#eef4ff;color:#245b9e;font-size:21px;font-weight:900;line-height:1;}
.ji-next-card:nth-child(2) .ji-next-icon{font-size:15px;}
.ji-next-card strong{display:block;font-size:14px;color:#213552;line-height:1.4;}
.ji-next-card small{display:block;margin-top:4px;color:#6b788c;font-size:10px;line-height:1.55;}
.ji-next-card b{color:#6384ad;font-size:19px;}

@media (max-width:900px){
  .ji-route-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .ji-next-grid{grid-template-columns:1fr;}
}
@media (max-width:600px){
  .ji-beginner-route,.ji-seo-guide,.ji-next-practice{padding:17px;border-radius:16px;}
  .ji-route-grid{grid-template-columns:1fr;}
  .ji-route-step{grid-template-columns:34px 48px minmax(0,1fr);min-height:72px;}
  .ji-route-icon{width:44px;height:44px;font-size:22px;}
  .ji-route-icon-wide{font-size:15px;}
  .ji-result-next-links{display:grid;grid-template-columns:1fr;}
  .ji-result-next-links a{justify-content:center;border-radius:10px;}
}


/* ========================================
   v16: 情報量を整理して見やすく
   ======================================== */
.ji-route-head p,
.ji-section-head p{
  max-width:680px;
}
.ji-record-summary > p:last-child{
  margin-top:10px;
  font-size:11px;
  line-height:1.6;
  color:#718096;
}

.ji-more-info{
  margin-top:18px;
  border:1px solid var(--ji-border);
  border-radius:16px;
  background:#fff;
  overflow:hidden;
}
.ji-more-info summary{
  position:relative;
  padding:15px 46px 15px 18px;
  color:#40516a;
  font-size:12px;
  font-weight:800;
  cursor:pointer;
  list-style:none;
}
.ji-more-info summary::-webkit-details-marker{display:none;}
.ji-more-info summary::after{
  content:'＋';
  position:absolute;
  right:18px;
  top:50%;
  transform:translateY(-50%);
  color:#69809f;
  font-size:18px;
  font-weight:500;
}
.ji-more-info[open] summary::after{content:'−';}
.ji-more-info[open] summary{border-bottom:1px solid #e5ebf2;}
.ji-more-info-body{padding:18px;}
.ji-more-info-body h2{margin:0 0 8px;font-size:18px;color:#203552;}
.ji-more-info-body>p{margin:0;color:#58667a;font-size:12px;line-height:1.8;}
.ji-faq-list{display:grid;gap:0;margin:16px 0 0;}
.ji-faq-list>div{padding:12px 0;border-top:1px solid #edf1f6;}
.ji-faq-list dt{font-size:12px;font-weight:900;color:#31445f;}
.ji-faq-list dd{margin:5px 0 0;color:#66758a;font-size:11px;line-height:1.7;}

/* 旧SEOボックス用スタイルはv16では未使用 */
.ji-seo-guide{display:none;}

@media (max-width:600px){
  .ji-route-step small{display:none;}
  .ji-route-step{min-height:62px;}
  .ji-more-info summary{padding:14px 42px 14px 15px;}
  .ji-more-info-body{padding:15px;}
}


/* ========================================
   v17: レイアウト崩れ修正
   ======================================== */
.ji-overview{grid-template-columns:1fr;gap:18px;}
.ji-beginner-route,.ji-course,.ji-record-summary{background:#fff;border:1px solid var(--ji-border);border-radius:20px;padding:22px;}
.ji-step-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));align-items:stretch;}
.ji-step-card{min-height:150px;display:flex;flex-direction:column;justify-content:flex-start;}
.ji-step-card h3,.ji-step-card p,.ji-step-stat{word-break:keep-all;overflow-wrap:anywhere;}
.ji-section-head{align-items:flex-start;flex-wrap:wrap;}
.ji-section-head > div{min-width:0;max-width:100%;}
.ji-record-summary{max-width:none;}
.ji-route-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
.ji-route-step{min-width:0;}
@media (max-width:900px){
  .ji-route-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width:640px){
  .ji-beginner-route,.ji-course,.ji-record-summary{padding:18px;border-radius:16px;}
  .ji-route-grid,.ji-step-grid{grid-template-columns:1fr;}
}
