:root{--bg:#f8f6fb;--card:#fff;--text:#30283a;--accent:#765493;--soft:#ede4f5;--pink:#f8eaf1;--line:#ded6e5;--error:#a12d4a}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:18px/1.55 system-ui,sans-serif}header,main,footer{max-width:1000px;margin:auto;padding:24px}header{display:flex;justify-content:space-between;gap:16px;align-items:center}header a{font-size:22px;font-weight:750;color:var(--text);text-decoration:none}header span,footer,.muted{font-size:14px}section{padding:32px;background:var(--card);border:1px solid var(--line);border-radius:20px;box-shadow:0 8px 36px #30283a08}h1{font-size:30px;line-height:1.25}h2{font-size:23px}button,.file{font:inherit;cursor:pointer;border:1px solid var(--accent);border-radius:10px;padding:11px 18px;background:white;color:var(--accent)}button:hover{background:var(--soft)}button:focus-visible,a:focus-visible{outline:3px solid var(--accent);outline-offset:4px}button:disabled{opacity:.5;cursor:default}.primary{background:var(--accent);color:white}.primary:hover{background:#614278}.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}.card{background:var(--pink);padding:24px;border-radius:16px;margin:20px 0}.kanji{font:110px/1.3 'Yu Gothic','Meiryo','Noto Sans JP',sans-serif;text-align:center}.word{font-size:44px}.row{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}progress{width:100%;accent-color:var(--accent);height:10px}.draw-layout{display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap}.board{width:min(100%,380px);aspect-ratio:1;touch-action:none;display:block;border:2px solid var(--line);border-radius:12px;background:white}.draw-controls{flex:1;min-width:210px}.draw-controls button{margin:6px 5px 6px 0}#feedback{min-height:70px;padding:12px;background:var(--soft);border-radius:10px}.error,#notice:not(:empty){color:var(--error);background:#fff0f3;padding:14px;border-radius:10px;margin-bottom:16px}label{display:inline-flex;gap:8px;align-items:center;margin:8px 12px 8px 0}select{font:inherit;padding:8px;border:1px solid var(--line);border-radius:8px}dialog{max-width:600px;border:1px solid var(--line);border-radius:20px;padding:28px;color:var(--text)}dialog::backdrop{background:#30283a66}svg{max-width:300px;width:100%;display:block;margin:auto}dl{display:grid;grid-template-columns:1fr auto;gap:12px}dt,dd{margin:0}.small{font-size:14px}footer{color:#66576f}@media(max-width:600px){header{align-items:flex-start;flex-direction:column}main{padding:12px}section{padding:20px}button{min-height:46px}.kanji{font-size:96px}}
:root{color-scheme:light}
[hidden]{display:none!important}
.draw-controls{min-width:0;overflow-wrap:anywhere}
.reference-preview{margin:12px 0;padding:12px;background:var(--pink);border-radius:12px;text-align:center;max-width:230px}
.reference-preview span{display:block}
.reference-character{font:96px/1.2 'Yu Gothic','Meiryo','Noto Sans JP',sans-serif;letter-spacing:normal}
.comparison{margin-top:24px;padding:20px;box-shadow:none;background:var(--bg)}
.comparison-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.comparison-grid>div{min-width:0;padding:12px;background:white;border:1px solid var(--line);border-radius:12px;text-align:center}
.comparison h3{font-size:16px;margin:0 0 10px}
.comparison svg{width:100%;max-width:240px;aspect-ratio:1}
#meaningForm{max-width:540px;margin:auto}
#meaningForm label{display:block}
#meaning{width:100%;padding:12px;border:1px solid var(--accent);border-radius:10px;font:inherit;color:var(--text);background:white}
@media(max-width:450px){.comparison-grid{grid-template-columns:1fr}}
#answerForm{max-width:560px;margin:auto}
#answerForm label{display:block}
#answerInput{width:100%;padding:12px;border:1px solid var(--accent);border-radius:10px;font:inherit;color:var(--text);background:white}
.question-word{font-size:clamp(42px,8vw,96px);overflow-wrap:anywhere}
.word-choice{display:flex;padding:10px;border-bottom:1px solid var(--line)}
.reference-preview svg{max-width:180px}
.choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:24px 0}
.choice{min-height:76px;text-align:left;display:flex;flex-direction:column;justify-content:center;gap:4px;overflow-wrap:anywhere;color:var(--text);border-color:var(--line)}
.choice small{font-size:14px;color:#66576f}
.visual-choices .choice{font:58px/1.3 'Yu Gothic','Meiryo','Noto Sans JP',sans-serif;text-align:center;align-items:center}
.choice:disabled{opacity:1}
.choice.choice-correct,.feedback-success{background:#e8f4eb!important;color:#205b35!important;border-color:#39804f!important}
.choice.choice-wrong,.feedback-error{background:#fff0f2!important;color:#84283d!important;border-color:#ae415a!important}
.choice.choice-eliminated{opacity:.35}
.answer-feedback{margin:20px 0;padding:20px;border:1px solid transparent;border-radius:14px}
@media(max-width:420px){.choices:not(.visual-choices){grid-template-columns:1fr}}
.stroke-demo{display:block;width:min(100%,280px);height:auto;aspect-ratio:1;background:white;border:1px solid var(--line);border-radius:12px;margin:12px auto}
#demo{max-width:320px;margin:12px auto}
.hide-romaji #choices .choice small{display:none}
.answer-next-row{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.answer-feedback details{margin-top:12px}
.answer-feedback summary{cursor:pointer;font-size:14px}
.writing-target{margin:12px 0 18px;padding:18px 24px;border-left:6px solid var(--accent);border-radius:12px;background:var(--soft);font-size:clamp(26px,4vw,40px);font-weight:750;line-height:1.2;letter-spacing:.02em;color:var(--text)}
.writing-details{margin:16px 0;font-size:14px;color:#66576f}
.writing-details summary{cursor:pointer}
.stroke-animation{display:block!important;width:280px!important;max-width:100%!important;height:280px!important;background:white;border:1px solid var(--line);border-radius:12px}
.kanji-examples{display:grid;gap:10px;margin:16px 0;text-align:left}
.kanji-example{background:white;border:1px solid var(--line);border-radius:10px;padding:12px 16px}
.kanji-example .example-word{font-size:28px;margin-right:14px}
.kanji-example .example-reading{font-size:22px}
.hide-romaji .romaji{display:none}
.reading-segments{font-size:34px;line-height:2.2;margin:12px 0;overflow-wrap:anywhere}
.reading-segments ruby{margin-right:5px}
.reading-segments rt{font-size:16px;color:var(--accent)}
.okurigana{color:#66576f;border-bottom:2px dotted var(--accent)}
.reading-explanation{margin-top:20px;padding:16px;background:white;border:1px solid var(--line);border-radius:12px}
.whole-reading{background:var(--soft);border-radius:6px;padding:4px}
#demo.kanji-hero{width:280px;max-width:100%;margin:8px auto 16px;min-height:280px}
.kanji-hero>svg{display:block;width:280px;max-width:100%;height:280px;background:white;border:1px solid var(--line);border-radius:12px}
.kanji-example>.example-reading{margin-inline-end:16px}
.kanji-example>span:last-child{display:block;margin-top:8px}
.save-status{font-size:13px;padding:6px 10px;border-radius:8px;background:var(--soft)}
.save-status.saved{background:#e8f4eb;color:#205b35}
.save-status.unsaved{background:#fff0f2;color:#84283d}
.profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.profile-skill{border:1px solid var(--line);border-radius:12px;padding:18px;background:var(--bg)}
.profile-skill h2{font-size:20px}
.profile-table-wrap{overflow-x:auto}
.profile-table{width:100%;border-collapse:collapse;text-align:left;font-size:15px}
.profile-table th,.profile-table td{padding:10px;border-bottom:1px solid var(--line)}
@media(max-width:600px){.profile-grid{grid-template-columns:1fr}header{flex-wrap:wrap}}
