/* HanziPeek · かんじ たんけん（小学生モード） */
.kd-root{--kd-ink:#2b2b2b;--kd-accent:#ff7a59;--kd-accent2:#2bb3a3;--kd-bg:#fffdf7;--kd-line:#eadfcf;
  font-family:"Zen Maru Gothic","Kosugi Maru","Hiragino Maru Gothic ProN","Noto Sans JP","Noto Sans SC",system-ui,sans-serif;color:var(--kd-ink);background:var(--kd-bg);
  border-radius:24px;padding:14px;box-shadow:0 10px 40px rgba(60,40,0,.08);max-width:760px;margin:0 auto}
.kd-root .han{font-family:"Zen Maru Gothic","Kosugi Maru","Hiragino Maru Gothic ProN","Noto Sans JP","KaiXinSong",serif;font-weight:700}
.kd-root button{font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.kd-root button:active{transform:scale(.96)}
.kd-bar{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.kd-logo{font-weight:900;font-size:20px;letter-spacing:.02em}
.kd-sp{flex:1}
.kd-back{height:44px;padding:0 16px;border:0;border-radius:999px;background:#fff;box-shadow:0 2px 0 var(--kd-line);font-size:16px;font-weight:700}
.kd-level{font-size:14px;color:#777;display:inline-flex;align-items:center;gap:6px}
.kd-level select{height:40px;border:2px solid var(--kd-line);border-radius:999px;padding:0 12px;font:inherit;font-size:15px;background:#fff;color:var(--kd-ink)}
.kd-stickers-btn{height:44px;padding:0 16px;border:0;border-radius:999px;background:#ffe88a;font-size:17px;font-weight:900;box-shadow:0 3px 0 #e2c647}
.kd-hero{text-align:center;padding:10px 0 14px}
.kd-hero-t{font-size:26px;font-weight:900;line-height:1.3}
.kd-hero-s{font-size:15px;color:#666;margin-top:6px}
.kd-hero-zh{font-size:12px;color:#999}
.kd-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.kd-tile{display:flex;flex-direction:column;align-items:center;gap:4px;padding:16px 8px 12px;border:0;border-radius:22px;box-shadow:0 4px 0 rgba(0,0,0,.08);transition:transform .1s}
.kd-tile:hover{transform:translateY(-2px)}
.kd-tile-ico{font-size:44px;line-height:1}
.kd-tile-ja{font-size:18px;font-weight:900}
.kd-tile-zh{font-size:11px;color:#777}
.kd-head{display:flex;align-items:center;gap:14px;padding:14px 18px;border-radius:20px;margin-bottom:12px}
.kd-head-ico{font-size:44px}
.kd-head-t{font-size:22px;font-weight:900}
.kd-head-s{font-size:14px;color:#555}
.kd-groups{display:flex;flex-direction:column;gap:10px}
.kd-group{display:flex;align-items:flex-start;gap:12px;padding:10px 12px;background:#fff;border-radius:18px;border:2px solid var(--kd-line)}
.kd-group-h{display:flex;flex-direction:column;align-items:center;min-width:64px;padding-top:4px}
.kd-group-h b{font-size:30px;line-height:1.1}
.kd-group-h span{font-size:11px;color:#888}
.kd-parts{display:flex;flex-wrap:wrap;gap:8px}
.kd-part{width:64px;height:64px;border:3px solid #f0e6d6;border-radius:18px;background:#fffdf7;font-size:32px;line-height:1;color:var(--kd-ink);box-shadow:0 3px 0 #e8dcc8}
.kd-part:hover{border-color:var(--kd-accent)}
.kd-q{font-size:22px;font-weight:900;text-align:center;margin:8px 0 14px}
.kd-q-part{display:inline-block;font-size:40px;color:var(--kd-accent);padding:0 8px;vertical-align:middle}
.kd-pos-row,.kd-cand-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}
.kd-pos-btn{display:flex;flex-direction:column;align-items:center;gap:6px;width:120px;padding:14px 8px;border:3px solid var(--kd-line);border-radius:20px;background:#fff;font-size:18px;font-weight:900;color:var(--kd-ink)}
.kd-pos-btn .kp-grid{transform:scale(1.8);margin:12px 0 10px}
.kd-pos-btn.top{border-color:var(--kd-accent)}
.kd-pos-btn small{font-size:11px;color:var(--kd-accent);font-weight:700}
.kd-hint{text-align:center;color:#777;font-size:14px;margin-bottom:12px}
.kd-cand{position:relative;display:flex;flex-direction:column;align-items:center;width:96px;padding:10px 6px 8px;border:3px solid var(--kd-line);border-radius:20px;background:#fff;color:var(--kd-ink)}
.kd-cand b{font-size:48px;line-height:1.1}
.kd-cand small{font-size:13px;color:#555;margin-top:2px}
.kd-cand em{font-style:normal;font-size:10px;color:#aaa}
.kd-cand.got{border-color:#f2b705;background:#fffbea}
.kd-star{position:absolute;top:-8px;right:-8px;font-size:20px}
.kd-empty{text-align:center;padding:20px;color:#666;font-size:16px}
.kd-loading,.kd-err{text-align:center;padding:14px;color:#777;font-size:16px}
.kd-err{color:#c0392b}
.kd-cta{height:52px;padding:0 22px;border:0;border-radius:999px;background:var(--kd-accent);color:#fff;font-size:18px;font-weight:900;box-shadow:0 4px 0 #d85c3e;margin:6px 4px}
.kd-cta.done{background:#f2b705;box-shadow:0 4px 0 #c99500}
.kd-btn{height:52px;padding:0 20px;border:3px solid var(--kd-line);border-radius:999px;background:#fff;font-size:16px;font-weight:700;color:var(--kd-ink);margin:6px 4px}
/* カード */
.kd-card{display:flex;flex-direction:column;gap:12px}
.kd-card-top{display:flex;align-items:center;gap:18px;padding:14px;background:#fff;border-radius:22px;border:2px solid var(--kd-line);flex-wrap:wrap}
.kd-big{font-size:120px;line-height:1;position:relative;padding-right:40px}
.kd-big .kd-spk.big{position:absolute;right:0;bottom:8px;font-size:28px}
.kd-reads{display:flex;flex-direction:column;gap:8px;flex:1;min-width:200px}
.kd-read{display:flex;align-items:center;gap:8px;font-size:22px}
.kd-read b{font-weight:900}
.kd-read-l{font-size:12px;color:#fff;background:var(--kd-accent2);border-radius:999px;padding:2px 10px}
.kd-tags{display:flex;gap:8px;flex-wrap:wrap;font-size:13px;color:#777}
.kd-tags span{background:#f3efe6;border-radius:999px;padding:2px 10px}
.kd-mean{color:#555}
.kd-spk{border:0;background:transparent;font-size:20px;padding:2px 4px}
.kd-sec,.kd-word,.kd-sent{padding:12px 14px;background:#fff;border-radius:18px;border:2px solid var(--kd-line)}
.kd-sec-t{display:block;font-size:12px;color:#999;margin-bottom:4px;letter-spacing:.08em}
.kd-word b{font-size:30px;margin-right:10px}
.kd-kana{font-size:15px;color:#666;margin-right:6px}
.kd-sent .han{font-size:20px}
.kd-tree{width:100%;max-width:360px;display:block;margin:0 auto;height:auto}
.kd-trace .jp-svg{width:240px;height:240px;position:relative;border-radius:20px;border:2px solid var(--kd-line)}
.kd-trace .jp-svg svg{opacity:.85}
.kd-canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair}
.kd-trace{padding:12px 14px;background:#fff;border-radius:18px;border:2px solid var(--kd-line);margin-top:0!important;border-top:2px solid var(--kd-line)!important}
.kd-trace .jp-struct-t{font-size:12px;color:#999;letter-spacing:.08em;text-transform:none}
.kd-story{padding:10px 14px;background:#fff8e1;border-radius:14px;font-size:14px;color:#555}
.kd-actions{display:flex;justify-content:center;flex-wrap:wrap;padding:6px 0 2px}
.kd-burst{position:fixed;left:50%;top:40%;transform:translate(-50%,-50%);font-size:120px;animation:kdBurst 1.2s ease-out forwards;pointer-events:none;z-index:9999}
@keyframes kdBurst{0%{transform:translate(-50%,-50%) scale(.2);opacity:0}30%{opacity:1}100%{transform:translate(-50%,-120%) scale(1.6);opacity:0}}
/* シールちょう */
.kd-book{display:flex;flex-direction:column;gap:10px}
.kd-book-row{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:18px;flex-wrap:wrap}
.kd-book-ja{font-weight:900;min-width:80px}
.kd-book-chars{display:flex;flex-wrap:wrap;gap:6px}
.kd-sticker{width:52px;height:52px;border:0;border-radius:50%;background:#fff;font-size:26px;box-shadow:0 2px 0 rgba(0,0,0,.1);color:var(--kd-ink)}
@media (max-width:520px){.kd-root{padding:10px;border-radius:16px}.kd-tiles{grid-template-columns:repeat(3,1fr);gap:8px}.kd-tile-ico{font-size:36px}.kd-tile-ja{font-size:15px}.kd-big{font-size:96px}.kd-hero-t{font-size:22px}.kd-cand{width:84px}.kd-cand b{font-size:40px}}
/* 吉祥物 / 描红判定 */
.kd-mascot{display:inline-block;width:56px;height:56px;line-height:0}
.kd-mascot svg{width:100%;height:100%}
.kd-trace-fb{text-align:center;font-size:15px;font-weight:700;color:#555;margin-top:8px;min-height:22px}
.kd-trace-marks{display:flex;justify-content:center;gap:6px;margin-top:6px;flex-wrap:wrap}
.kd-mark{width:28px;height:28px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:14px;font-weight:900;background:#f3efe6;color:#999}
.kd-mark.now{background:#ffe88a;color:#2b2b2b;box-shadow:0 0 0 3px #ffd23f}
.kd-mark.ok{background:#2bb3a3;color:#fff}
.kd-mark.ng{background:#ff5e5e;color:#fff}
.kd-trace .jp-svg .jp-stroke-nums text{font-size:9px;fill:#ff7a59}
