/* =====================================================
   Kanji Trainer style.css
   スコープ: .kanji-app-wrap 以下すべて
   ===================================================== */

.kanji-app-wrap {
  --kt-navy:       #1e3a5f !important;
  --kt-navy-dark:  #142844 !important;
  --kt-navy-light: #2a4f7c !important;
  --kt-gold:       #d4af37 !important;
  --kt-gold-light: #e8c84a !important;
  --kt-white:      #ffffff !important;
  --kt-bg:         #eef2f7 !important;
  --kt-correct:    #2ecc71 !important;
  --kt-wrong:      #e74c3c !important;
  --kt-gray:       #8899aa !important;
  --kt-panel-bg:   #e8eff7 !important;
  --kt-sidebar-w:  220px   !important;

  all: unset;
  display: block !important;
  box-sizing: border-box !important;
  font-family: 'BIZ UDGothic', sans-serif !important;
  background: var(--kt-bg) !important;
  height: 100vh !important;
  overflow: hidden !important;
  position: relative !important;
}

.kanji-app-wrap *, .kanji-app-wrap *::before, .kanji-app-wrap *::after {
  box-sizing: border-box !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* ---------- ヘッダー ---------- */
.kanji-app-wrap .kt-header {
  width: 100% !important;
  background: var(--kt-navy) !important;
  padding: 8px 18px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  box-shadow: 0 3px 10px rgba(0,0,0,0.35) !important;
  height: 52px !important;
  flex-shrink: 0 !important;
}
.kanji-app-wrap .kt-header h1 {
  font-family: 'Dela Gothic One', sans-serif !important;
  font-size: 1.3rem !important;
  color: var(--kt-gold) !important;
  letter-spacing: 3px !important;
  font-weight: 400 !important;
  line-height: 1 !important;
}
.kanji-app-wrap .kt-prog {
  font-family: 'Dela Gothic One', sans-serif !important;
  font-size: 0.95rem !important;
  color: var(--kt-gold) !important;
}

/* ---------- 3カラム ---------- */
.kanji-app-wrap .kt-body {
  display: grid !important;
  grid-template-columns: var(--kt-sidebar-w) 1fr var(--kt-sidebar-w) !important;
  height: calc(100vh - 52px) !important;
  overflow: hidden !important;
}

/* ---------- サイドバー共通 ---------- */
.kanji-app-wrap .kt-sidebar {
  background: var(--kt-white) !important;
  border-right: 1px solid #d0dce8 !important;
  display: flex !important;
  flex-direction: column !important;
  overflow: hidden !important;
  padding: 12px 10px !important;
  gap: 10px !important;
}
.kanji-app-wrap .kt-sidebar.kt-right {
  border-right: none !important;
  border-left: 1px solid #d0dce8 !important;
}
.kanji-app-wrap .kt-sidebar-title {
  font-size: 0.72rem !important;
  font-weight: 700 !important;
  color: var(--kt-gray) !important;
  letter-spacing: 1px !important;
  flex-shrink: 0 !important;
}

/* ---------- ぐにゃり度バッジ ---------- */
.kanji-app-wrap .kt-ctrl-block {
  display: flex !important;
  flex-direction: column !important;
  gap: 6px !important;
  flex-shrink: 0 !important;
}
.kanji-app-wrap .kt-ctrl-label {
  font-size: 0.75rem !important;
  color: var(--kt-gray) !important;
}
.kanji-app-wrap .kt-badges {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 6px !important;
}
.kanji-app-wrap .kt-badge {
  padding: 8px 4px !important;
  border: 2px solid #d0dce8 !important;
  border-radius: 10px !important;
  text-align: center !important;
  cursor: pointer !important;
  font-size: 0.78rem !important;
  font-weight: 700 !important;
  color: var(--kt-navy) !important;
  background: var(--kt-panel-bg) !important;
  line-height: 1.4 !important;
  transition: all 0.15s !important;
  user-select: none !important;
}
.kanji-app-wrap .kt-badge.active {
  background: var(--kt-navy) !important;
  color: var(--kt-white) !important;
  border-color: var(--kt-navy) !important;
}

/* ---------- ボタン共通 ---------- */
.kanji-app-wrap .kt-btn {
  width: 100% !important;
  height: 42px !important;
  border: none !important;
  border-radius: 8px !important;
  font-family: 'BIZ UDGothic', sans-serif !important;
  font-size: 0.95rem !important;
  font-weight: 700 !important;
  cursor: pointer !important;
  transition: background 0.15s, opacity 0.2s !important;
  white-space: nowrap !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex-shrink: 0 !important;
}
.kanji-app-wrap .kt-btn:disabled { opacity: 0.4 !important; cursor: not-allowed !important; }
.kanji-app-wrap .kt-btn-answer { background: var(--kt-navy) !important; color: var(--kt-white) !important; }
.kanji-app-wrap .kt-btn-answer:hover:not(:disabled) { background: var(--kt-navy-light) !important; }
.kanji-app-wrap .kt-btn-next   { background: var(--kt-correct) !important; color: var(--kt-white) !important; }
.kanji-app-wrap .kt-btn-next:hover:not(:disabled) { background: #27ae60 !important; }
.kanji-app-wrap .kt-btn-reset  { background: #ffeaea !important; color: var(--kt-wrong) !important; border: 2px solid #f5b8b8 !important; font-size: 0.88rem !important; }
.kanji-app-wrap .kt-btn-back   { background: #f0f0f0 !important; color: #555 !important; border: 2px solid #ccc !important; font-size: 0.85rem !important; }

/* ---------- 中央ステージ ---------- */
.kanji-app-wrap .kt-center {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 16px !important;
  overflow: hidden !important;
  background: var(--kt-bg) !important;
}
.kanji-app-wrap .kt-stage-wrap {
  width: min(calc(100vh - 52px - 32px), calc(100vw - var(--kt-sidebar-w) * 2 - 32px)) !important;
  height: min(calc(100vh - 52px - 32px), calc(100vw - var(--kt-sidebar-w) * 2 - 32px)) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}
.kanji-app-wrap #cv {
  width: 100% !important;
  height: 100% !important;
  border-radius: 16px !important;
  box-shadow: 0 8px 40px rgba(30,58,95,0.25) !important;
  display: block !important;
}

/* ---------- 履歴 ---------- */
.kanji-app-wrap #kt-history-list {
  flex: 1 !important;
  overflow-y: auto !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 6px !important;
}
.kanji-app-wrap .kt-hist-item {
  background: var(--kt-panel-bg) !important;
  border-radius: 8px !important;
  padding: 8px 10px !important;
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
}
.kanji-app-wrap .kt-hi-no    { font-size: 0.72rem !important; color: var(--kt-gray) !important; min-width: 22px !important; }
.kanji-app-wrap .kt-hi-kanji { font-family: 'BIZ UDMincho', serif !important; font-size: 1.5rem !important; color: var(--kt-navy) !important; line-height: 1 !important; font-weight: 700 !important; }
.kanji-app-wrap .kt-hist-empty { font-size: 0.82rem !important; color: var(--kt-gray) !important; text-align: center !important; padding: 20px 0 !important; }

/* ---------- 設定モーダル ---------- */
.kanji-app-wrap .kt-setup {
  position: absolute !important;
  inset: 0 !important;
  background: rgba(20,40,68,0.93) !important;
  display: flex !important;
  align-items: flex-start !important;
  justify-content: center !important;
  z-index: 200 !important;
  overflow-y: auto !important;
  padding: 20px 0 40px !important;
}
.kanji-app-wrap .kt-setup.kt-hidden { display: none !important; }
.kanji-app-wrap .kt-setup-card {
  background: var(--kt-white) !important;
  border-radius: 18px !important;
  padding: 24px 22px !important;
  width: min(96vw, 540px) !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 14px !important;
  box-shadow: 0 10px 40px rgba(0,0,0,0.5) !important;
}
.kanji-app-wrap .kt-setup-card h2 {
  font-family: 'Dela Gothic One', sans-serif !important;
  color: var(--kt-navy) !important;
  font-size: 1.5rem !important;
  text-align: center !important;
  letter-spacing: 3px !important;
  font-weight: 400 !important;
}
.kanji-app-wrap .kt-setup-card h2 span { color: var(--kt-gold) !important; }

/* 学年タブ */
.kanji-app-wrap .kt-grade-tabs { display: flex !important; gap: 5px !important; }
.kanji-app-wrap .kt-grade-tab {
  flex: 1 !important;
  padding: 9px 4px !important;
  border: 2px solid var(--kt-navy-light) !important;
  border-radius: 8px !important;
  background: var(--kt-panel-bg) !important;
  color: var(--kt-navy) !important;
  font-family: 'BIZ UDGothic', sans-serif !important;
  font-weight: 700 !important;
  font-size: 0.95rem !important;
  cursor: pointer !important;
  text-align: center !important;
  transition: all 0.15s !important;
}
.kanji-app-wrap .kt-grade-tab.active {
  background: var(--kt-navy) !important;
  color: var(--kt-white) !important;
  border-color: var(--kt-navy) !important;
}

/* 単元スクロール */
.kanji-app-wrap .kt-unit-scroll {
  border: 1.5px solid #d0dce8 !important;
  border-radius: 10px !important;
  overflow-y: auto !important;
  height: 300px !important;
  background: #fafcff !important;
  padding: 6px !important;
}
.kanji-app-wrap .kt-unit-scroll > * + * { margin-top: 4px !important; }
.kanji-app-wrap .kt-unit-item { border: 1px solid #d8e4f0 !important; border-radius: 8px !important; overflow: hidden !important; }
.kanji-app-wrap .kt-unit-header {
  display: flex !important;
  align-items: center !important;
  padding: 10px 12px !important;
  background: var(--kt-panel-bg) !important;
  gap: 8px !important;
  cursor: pointer !important;
  user-select: none !important;
}
.kanji-app-wrap .kt-unit-header:hover { background: #d8eaf8 !important; }
.kanji-app-wrap .kt-unit-cb-wrap { display: flex !important; align-items: center !important; justify-content: center !important; width: 22px !important; flex-shrink: 0 !important; }
.kanji-app-wrap .kt-unit-cb { width: 18px !important; height: 18px !important; accent-color: var(--kt-navy) !important; cursor: pointer !important; margin: 0 !important; }
.kanji-app-wrap .kt-unit-name { flex: 1 !important; font-size: 0.88rem !important; font-weight: 700 !important; color: var(--kt-navy) !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }
.kanji-app-wrap .kt-unit-count { font-size: 0.78rem !important; color: var(--kt-gray) !important; white-space: nowrap !important; flex-shrink: 0 !important; }
.kanji-app-wrap .kt-unit-toggle { font-size: 0.65rem !important; color: var(--kt-gray) !important; transition: transform 0.2s !important; flex-shrink: 0 !important; margin-left: 4px !important; }
.kanji-app-wrap .kt-unit-toggle.open { transform: rotate(90deg) !important; }

/* 漢字チップ */
.kanji-app-wrap .kt-kanji-grid { display: none !important; flex-wrap: wrap !important; gap: 8px !important; padding: 12px 12px 14px !important; background: #f5f9ff !important; border-top: 1px solid #d8e4f0 !important; }
.kanji-app-wrap .kt-kanji-grid.open { display: flex !important; }
.kanji-app-wrap .kt-kanji-chip { display: flex !important; align-items: center !important; gap: 5px !important; padding: 6px 10px !important; background: var(--kt-white) !important; border: 1.5px solid #c8d8e8 !important; border-radius: 8px !important; cursor: pointer !important; min-width: 52px !important; user-select: none !important; transition: background 0.12s !important; }
.kanji-app-wrap .kt-kanji-chip:hover   { background: #e8f0fa !important; }
.kanji-app-wrap .kt-kanji-chip.checked { background: #e0eeff !important; border-color: var(--kt-navy-light) !important; }
.kanji-app-wrap .kt-kanji-chip input[type="checkbox"] { width: 15px !important; height: 15px !important; accent-color: var(--kt-navy) !important; cursor: pointer !important; margin: 0 !important; }
.kanji-app-wrap .kt-kanji-chip span { font-family: 'BIZ UDMincho', serif !important; font-size: 1.3rem !important; color: var(--kt-navy) !important; line-height: 1 !important; }

/* 選択数 */
.kanji-app-wrap #kt-selected-count { font-size: 0.85rem !important; color: var(--kt-navy) !important; text-align: right !important; font-weight: 700 !important; }
.kanji-app-wrap #kt-selected-count em { color: var(--kt-wrong) !important; font-style: normal !important; }

/* スタートボタン */
.kanji-app-wrap #kt-start-btn {
  width: 100% !important;
  height: 52px !important;
  background: var(--kt-navy) !important;
  color: var(--kt-white) !important;
  border: none !important;
  border-radius: 10px !important;
  font-family: 'Dela Gothic One', sans-serif !important;
  font-size: 1.2rem !important;
  cursor: pointer !important;
  letter-spacing: 3px !important;
  transition: background 0.15s !important;
}
.kanji-app-wrap #kt-start-btn:hover:not(:disabled) { background: var(--kt-navy-light) !important; }
.kanji-app-wrap #kt-start-btn:disabled { opacity: 0.4 !important; cursor: not-allowed !important; }

@media (max-width: 700px) {
  .kanji-app-wrap { --kt-sidebar-w: 160px !important; }
}
