/* =====================================================
   漢字スクラッチ プラグイン CSS
   スコープ: .ks-plugin-root 以下すべて
   ===================================================== */

/* ---------- 変数 ---------- */
.ks-plugin-root {
    --ks-navy:       #1e3a5f !important;
    --ks-navy-dark:  #142844 !important;
    --ks-navy-light: #2a4f7c !important;
    --ks-gold:       #d4af37 !important;
    --ks-gold-light: #e8c84a !important;
    --ks-white:      #ffffff !important;
    --ks-bg:         #eef2f7 !important;
    --ks-correct:    #2ecc71 !important;
    --ks-wrong:      #e74c3c !important;
    --ks-gray:       #8899aa !important;
    --ks-panel-bg:   #e8eff7 !important;
    --ks-sidebar-w:  220px   !important;

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

.ks-plugin-root *, .ks-plugin-root *::before, .ks-plugin-root *::after {
    box-sizing: border-box !important;
    margin: 0 !important;
    padding: 0 !important;
}

/* ---------- ヘッダー ---------- */
.ks-plugin-root .ks-header {
    width: 100% !important;
    background: var(--ks-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;
}
.ks-plugin-root .ks-header h1 {
    font-family: 'Dela Gothic One', sans-serif !important;
    font-size: 1.3rem !important;
    color: var(--ks-gold) !important;
    letter-spacing: 3px !important;
    font-weight: 400 !important;
    line-height: 1 !important;
}
.ks-plugin-root .ks-hdr-right {
    display: flex !important;
    align-items: baseline !important;
    gap: 6px !important;
}
.ks-plugin-root .ks-score-label {
    font-size: 0.85rem !important;
    color: var(--ks-gold) !important;
}
.ks-plugin-root .ks-score-value {
    font-family: 'Dela Gothic One', sans-serif !important;
    font-size: 2rem !important;
    color: var(--ks-white) !important;
    min-width: 2.5rem !important;
    text-align: right !important;
    line-height: 1 !important;
}

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

/* ---------- サイドバー共通 ---------- */
.ks-plugin-root .ks-sidebar {
    background: var(--ks-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;
}
.ks-plugin-root .ks-sidebar.ks-right {
    border-right: none !important;
    border-left: 1px solid #d0dce8 !important;
}
.ks-plugin-root .ks-sidebar-title {
    font-size: 0.72rem !important;
    font-weight: 700 !important;
    color: var(--ks-gray) !important;
    letter-spacing: 1px !important;
    flex-shrink: 0 !important;
}

/* ---------- 情報ブロック ---------- */
.ks-plugin-root .ks-info-block {
    background: var(--ks-navy-dark) !important;
    border-radius: 10px !important;
    padding: 8px 10px !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 4px !important;
    flex-shrink: 0 !important;
}
.ks-plugin-root .ks-qno {
    font-family: 'Dela Gothic One', sans-serif !important;
    font-size: 0.95rem !important;
    color: var(--ks-gold) !important;
}
.ks-plugin-root .ks-rate-row {
    display: flex !important;
    align-items: center !important;
    gap: 6px !important;
}
.ks-plugin-root .ks-rate-label {
    font-size: 0.75rem !important;
    color: #aabbcc !important;
    white-space: nowrap !important;
}
.ks-plugin-root .ks-rate-track {
    flex: 1 !important;
    height: 10px !important;
    background: #2a4f7c !important;
    border-radius: 5px !important;
    overflow: hidden !important;
}
.ks-plugin-root #ks-rate-fill {
    height: 100% !important;
    width: 0% !important;
    background: linear-gradient(90deg, var(--ks-gold), var(--ks-gold-light)) !important;
    border-radius: 5px !important;
    transition: width 0.2s !important;
}
.ks-plugin-root #ks-rate-num {
    font-family: 'Dela Gothic One', sans-serif !important;
    font-size: 0.9rem !important;
    color: var(--ks-white) !important;
    min-width: 2.5rem !important;
    text-align: right !important;
}

/* ---------- 消しゴム ---------- */
.ks-plugin-root .ks-eraser-block {
    display: flex !important;
    flex-direction: column !important;
    gap: 5px !important;
    flex-shrink: 0 !important;
}
.ks-plugin-root .ks-ctrl-label {
    font-size: 0.75rem !important;
    color: var(--ks-gray) !important;
}
.ks-plugin-root .ks-eraser-row {
    display: flex !important;
    align-items: center !important;
    gap: 6px !important;
}
.ks-plugin-root #ks-eraser-size {
    flex: 1 !important;
    accent-color: var(--ks-navy) !important;
    cursor: pointer !important;
    height: 20px !important;
}
.ks-plugin-root #ks-eraser-circle {
    background: rgba(30,58,95,0.13) !important;
    border: 2px solid var(--ks-navy) !important;
    border-radius: 50% !important;
    flex-shrink: 0 !important;
    width: 26px !important;
    height: 26px !important;
    transition: width 0.1s, height 0.1s !important;
}

/* ---------- 判定エリア ---------- */
.ks-plugin-root .ks-judge-block {
    display: flex !important;
    flex-direction: column !important;
    gap: 7px !important;
    flex-shrink: 0 !important;
}
.ks-plugin-root #ks-answer-input {
    width: 100% !important;
    height: 44px !important;
    font-family: 'BIZ UDMincho', serif !important;
    font-size: 1.3rem !important;
    border: 2px solid var(--ks-navy-light) !important;
    border-radius: 8px !important;
    padding: 0 10px !important;
    color: var(--ks-navy) !important;
    outline: none !important;
    text-align: center !important;
    letter-spacing: 4px !important;
    background: white !important;
}
.ks-plugin-root #ks-answer-input:focus {
    border-color: var(--ks-gold) !important;
}

/* ---------- ボタン共通 ---------- */
.ks-plugin-root .ks-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, transform 0.1s, opacity 0.2s !important;
    white-space: nowrap !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}
.ks-plugin-root .ks-btn:active    { transform: scale(0.96) !important; }
.ks-plugin-root .ks-btn:disabled  { opacity: 0.4 !important; cursor: not-allowed !important; transform: none !important; }
.ks-plugin-root .ks-btn-judge     { background: var(--ks-navy) !important; color: var(--ks-white) !important; }
.ks-plugin-root .ks-btn-judge:hover:not(:disabled) { background: var(--ks-navy-light) !important; }
.ks-plugin-root .ks-btn-reveal    { background: #f0f0f0 !important; color: #555 !important; border: 2px solid #ccc !important; font-size: 0.88rem !important; }
.ks-plugin-root .ks-btn-reset     { background: #ffeaea !important; color: var(--ks-wrong) !important; border: 2px solid #f5b8b8 !important; font-size: 0.88rem !important; }
.ks-plugin-root .ks-btn-next      { background: var(--ks-correct) !important; color: var(--ks-white) !important; }
.ks-plugin-root .ks-btn-next:hover:not(:disabled) { background: #27ae60 !important; }

/* ---------- 中央ステージ ---------- */
.ks-plugin-root .ks-center {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 12px !important;
    overflow: hidden !important;
    background: var(--ks-bg) !important;
}
.ks-plugin-root .ks-stage-wrap {
    position: relative !important;
    width: min(calc(100vh - 52px - 24px), calc(100vw - var(--ks-sidebar-w) * 2 - 24px)) !important;
    height: min(calc(100vh - 52px - 24px), calc(100vw - var(--ks-sidebar-w) * 2 - 24px)) !important;
    flex-shrink: 0 !important;
}
.ks-plugin-root .ks-kanji-layer {
    position: absolute !important;
    inset: 0 !important;
    border-radius: 16px !important;
    background: var(--ks-white) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    box-shadow: 0 8px 40px rgba(30,58,95,0.25) !important;
    overflow: hidden !important;
}
.ks-plugin-root .ks-kanji-char {
    font-family: 'BIZ UDMincho', 'Yu Mincho', '游明朝', 'Hiragino Mincho ProN', serif !important;
    /* ステージの幅・高さの90%を占めるサイズ */
    font-size: min(
        calc((100vh - 52px - 24px) * 0.88),
        calc((100vw - var(--ks-sidebar-w) * 2 - 24px) * 0.88)
    ) !important;
    color: var(--ks-navy-dark) !important;
    line-height: 1 !important;
    user-select: none !important;
}
.ks-plugin-root #ks-canvas {
    position: absolute !important;
    inset: 0 !important;
    border-radius: 16px !important;
    cursor: crosshair !important;
    touch-action: none !important;
}

/* ---------- 右サイドバー：履歴 ---------- */
.ks-plugin-root #ks-history-list {
    flex: 1 !important;
    overflow-y: auto !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 6px !important;
}
.ks-plugin-root .ks-hist-item {
    background: var(--ks-panel-bg) !important;
    border-radius: 8px !important;
    padding: 7px 10px !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 2px !important;
}
.ks-plugin-root .khi-top {
    display: flex !important;
    align-items: center !important;
    gap: 6px !important;
}
.ks-plugin-root .khi-no    { font-size: 0.72rem !important; color: var(--ks-gray) !important; min-width: 22px !important; }
.ks-plugin-root .khi-kanji { font-family: 'BIZ UDMincho', serif !important; font-size: 1.5rem !important; color: var(--ks-navy) !important; line-height: 1 !important; font-weight: 700 !important; }
.ks-plugin-root .khi-score { margin-left: auto !important; font-family: 'Dela Gothic One', sans-serif !important; color: var(--ks-gold) !important; font-size: 1rem !important; }
.ks-plugin-root .khi-rate  { font-size: 0.75rem !important; color: var(--ks-navy-light) !important; }
.ks-plugin-root .ks-hist-empty { font-size: 0.82rem !important; color: var(--ks-gray) !important; text-align: center !important; padding: 20px 0 !important; }

/* ---------- フラッシュ ---------- */
.ks-plugin-root .ks-flash {
    position: absolute !important;
    top: 50% !important;
    left: 50% !important;
    transform: translate(-50%,-50%) scale(0.5) !important;
    font-family: 'Dela Gothic One', sans-serif !important;
    font-size: 5rem !important;
    padding: 20px 52px !important;
    border-radius: 20px !important;
    opacity: 0 !important;
    pointer-events: none !important;
    z-index: 999 !important;
}
.ks-plugin-root .ks-flash.show-ok     { background: rgba(46,204,113,0.95) !important; color: white !important; animation: ksFlash 1.1s ease forwards !important; }
.ks-plugin-root .ks-flash.show-ng     { background: rgba(231,76,60,0.92) !important;  color: white !important; animation: ksFlash 0.85s ease forwards !important; }
.ks-plugin-root .ks-flash.show-reveal { background: rgba(80,80,80,0.88) !important;   color: white !important; animation: ksFlash 1.2s ease forwards !important; }
@keyframes ksFlash {
    0%   { opacity:0; transform:translate(-50%,-50%) scale(0.6); }
    20%  { opacity:1; transform:translate(-50%,-50%) scale(1.08); }
    60%  { opacity:1; transform:translate(-50%,-50%) scale(1); }
    100% { opacity:0; transform:translate(-50%,-50%) scale(0.9); }
}

/* ---------- 設定モーダル ---------- */
.ks-plugin-root .ks-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;
}
.ks-plugin-root .ks-setup.hidden { display: none !important; }
.ks-plugin-root .ks-setup-card {
    background: var(--ks-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;
}
.ks-plugin-root .ks-setup-card h2 {
    font-family: 'Dela Gothic One', sans-serif !important;
    color: var(--ks-navy) !important;
    font-size: 1.5rem !important;
    text-align: center !important;
    letter-spacing: 3px !important;
    font-weight: 400 !important;
}
.ks-plugin-root .ks-setup-card h2 span { color: var(--ks-gold) !important; }

/* 学年タブ */
.ks-plugin-root .ks-grade-tabs { display: flex !important; gap: 5px !important; }
.ks-plugin-root .ks-grade-tab {
    flex: 1 !important;
    padding: 9px 4px !important;
    border: 2px solid var(--ks-navy-light) !important;
    border-radius: 8px !important;
    background: var(--ks-panel-bg) !important;
    color: var(--ks-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;
}
.ks-plugin-root .ks-grade-tab.active {
    background: var(--ks-navy) !important;
    color: var(--ks-white) !important;
    border-color: var(--ks-navy) !important;
}

/* 単元スクロールリスト */
.ks-plugin-root .ks-unit-scroll {
    border: 1.5px solid #d0dce8 !important;
    border-radius: 10px !important;
    overflow-y: auto !important;
    height: 320px !important;
    background: #fafcff !important;
    padding: 6px !important;
    display: block !important;
}
.ks-plugin-root .ks-unit-scroll > * + * { margin-top: 4px !important; }

/* 単元行 */
.ks-plugin-root .ks-unit-item {
    border: 1px solid #d8e4f0 !important;
    border-radius: 8px !important;
    overflow: hidden !important;
}
.ks-plugin-root .ks-unit-header {
    display: flex !important;
    align-items: center !important;
    padding: 10px 12px !important;
    background: var(--ks-panel-bg) !important;
    gap: 8px !important;
    user-select: none !important;
    cursor: pointer !important;
}
.ks-plugin-root .ks-unit-header:hover { background: #d8eaf8 !important; }
.ks-plugin-root .ks-unit-cb-wrap {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex-shrink: 0 !important;
    width: 22px !important;
}
.ks-plugin-root .ks-unit-cb {
    width: 18px !important;
    height: 18px !important;
    accent-color: var(--ks-navy) !important;
    cursor: pointer !important;
    flex-shrink: 0 !important;
    margin: 0 !important;
}
.ks-plugin-root .ks-unit-name {
    flex: 1 !important;
    font-size: 0.88rem !important;
    font-weight: 700 !important;
    color: var(--ks-navy) !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    line-height: 1.4 !important;
}
.ks-plugin-root .ks-unit-count {
    font-size: 0.78rem !important;
    color: var(--ks-gray) !important;
    white-space: nowrap !important;
    flex-shrink: 0 !important;
}
.ks-plugin-root .ks-unit-toggle {
    font-size: 0.65rem !important;
    color: var(--ks-gray) !important;
    transition: transform 0.2s !important;
    flex-shrink: 0 !important;
    margin-left: 4px !important;
}
.ks-plugin-root .ks-unit-toggle.open { transform: rotate(90deg) !important; }

/* 漢字チップグリッド */
.ks-plugin-root .ks-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;
}
.ks-plugin-root .ks-kanji-grid.open { display: flex !important; }
.ks-plugin-root .ks-kanji-chip {
    display: flex !important;
    align-items: center !important;
    gap: 5px !important;
    padding: 6px 10px !important;
    background: var(--ks-white) !important;
    border: 1.5px solid #c8d8e8 !important;
    border-radius: 8px !important;
    cursor: pointer !important;
    transition: background 0.12s, border-color 0.12s !important;
    user-select: none !important;
    min-width: 52px !important;
}
.ks-plugin-root .ks-kanji-chip:hover  { background: #e8f0fa !important; }
.ks-plugin-root .ks-kanji-chip.checked { background: #e0eeff !important; border-color: var(--ks-navy-light) !important; }
.ks-plugin-root .ks-kanji-chip input[type="checkbox"] {
    width: 15px !important;
    height: 15px !important;
    accent-color: var(--ks-navy) !important;
    cursor: pointer !important;
    flex-shrink: 0 !important;
    margin: 0 !important;
}
.ks-plugin-root .ks-kanji-chip span {
    font-family: 'BIZ UDMincho', serif !important;
    font-size: 1.3rem !important;
    color: var(--ks-navy) !important;
    line-height: 1 !important;
}

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

/* パネル色 */
.ks-plugin-root .ks-setup-label {
    font-size: 0.82rem !important;
    font-weight: 700 !important;
    color: var(--ks-gray) !important;
    display: block !important;
    margin-bottom: 4px !important;
}
.ks-plugin-root .ks-color-row { display: flex !important; gap: 8px !important; flex-wrap: wrap !important; }
.ks-plugin-root .ks-color-opt {
    width: 34px !important;
    height: 34px !important;
    border-radius: 8px !important;
    border: 3px solid transparent !important;
    cursor: pointer !important;
    transition: border-color 0.15s, transform 0.1s !important;
}
.ks-plugin-root .ks-color-opt:hover  { transform: scale(1.12) !important; }
.ks-plugin-root .ks-color-opt.selected {
    border-color: var(--ks-navy-dark) !important;
    box-shadow: 0 0 0 2px white inset !important;
}

/* スタートボタン */
.ks-plugin-root #ks-start-btn {
    width: 100% !important;
    height: 52px !important;
    background: var(--ks-navy) !important;
    color: var(--ks-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;
}
.ks-plugin-root #ks-start-btn:hover:not(:disabled) { background: var(--ks-navy-light) !important; }
.ks-plugin-root #ks-start-btn:disabled { opacity: 0.4 !important; cursor: not-allowed !important; }

/* 終了画面 */
.ks-plugin-root .ks-finish {
    display: none !important;
    position: absolute !important;
    inset: 0 !important;
    background: rgba(20,40,68,0.95) !important;
    align-items: center !important;
    justify-content: center !important;
    z-index: 200 !important;
}
.ks-plugin-root .ks-finish.active { display: flex !important; }
.ks-plugin-root .ks-finish-card {
    background: var(--ks-white) !important;
    border-radius: 18px !important;
    padding: 36px 28px !important;
    width: min(90vw, 400px) !important;
    text-align: center !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 14px !important;
    box-shadow: 0 8px 40px rgba(0,0,0,0.5) !important;
}
.ks-plugin-root .ks-finish-title {
    font-family: 'Dela Gothic One', sans-serif !important;
    font-size: 1.6rem !important;
    color: var(--ks-gold) !important;
}
.ks-plugin-root .ks-finish-total {
    font-family: 'Dela Gothic One', sans-serif !important;
    font-size: 3.5rem !important;
    color: var(--ks-navy) !important;
}
.ks-plugin-root .ks-finish-total span { font-size: 1.2rem !important; color: var(--ks-gray) !important; }
.ks-plugin-root #ks-finish-summary {
    font-size: 0.88rem !important;
    color: #666 !important;
    line-height: 1.8 !important;
    text-align: left !important;
    max-height: 200px !important;
    overflow-y: auto !important;
}
.ks-plugin-root .ks-replay-btn {
    width: 100% !important;
    height: 50px !important;
    background: var(--ks-navy) !important;
    color: var(--ks-white) !important;
    border: none !important;
    border-radius: 10px !important;
    font-family: 'Dela Gothic One', sans-serif !important;
    font-size: 1.1rem !important;
    cursor: pointer !important;
    letter-spacing: 2px !important;
}

/* レスポンシブ */
@media (max-width: 700px) {
    .ks-plugin-root { --ks-sidebar-w: 160px !important; }
    .ks-plugin-root .ks-kanji-char { font-size: calc((100vw - 160px * 2 - 24px) * 0.88) !important; }
}
