@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;600;700;800&family=Noto+Serif+JP:wght@500;600;700&display=swap');
:root{--ink:#263e35;--green:#31584c;--muted:#758078;--paper:#f7f7f0;--line:#e2e7dc;--accent:#c1d0a2;--pink:#f0dcd0;--white:#fff;--red:#a64e43;font-family:'Noto Sans JP',sans-serif;color:var(--ink);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--paper);font-size:14px;line-height:1.7}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #b68d3b;outline-offset:4px}a{color:var(--green)}button{border:0;background:transparent;color:inherit}h1,h2,h3,p{margin:0}h1,h2,.serif{font-family:'Noto Serif JP',serif}h1{font-size:32px;line-height:1.6;font-weight:600;letter-spacing:.04em}h2{font-size:23px;font-weight:600}h3{font-size:17px}small{font-size:12px}svg{width:22px;height:22px;vertical-align:middle;flex-shrink:0}.app-shell{min-height:100vh;display:grid;grid-template-columns:230px 1fr}.sidebar{background:#fbfcf7;border-right:1px solid var(--line);padding:39px 22px;position:fixed;inset:0 auto 0 0;width:230px;display:flex;flex-direction:column;z-index:5}.brand{display:flex;align-items:center;gap:11px;padding:0 11px 38px}.brand-mark{font-family:serif;font-size:27px;background:var(--green);color:white;width:43px;height:43px;display:grid;place-items:center;border-radius:13px}.brand-name{font-family:'Noto Serif JP',serif;font-weight:700;font-size:21px;letter-spacing:.06em}.brand small{display:block;font-size:9px;letter-spacing:.12em;color:var(--muted)}.nav{display:grid;gap:9px}.nav button{text-align:left;display:flex;align-items:center;gap:12px;border-radius:9px;padding:13px 15px;font-size:13px;color:#6c786e}.nav button.active{background:#e7eddf;color:var(--green);font-weight:700}.nav button:hover{background:#eff2e8}.nav-label{font-size:10px;color:#9bA495;padding:25px 14px 8px;letter-spacing:.1em}.sidebar-bottom{margin-top:auto;padding-top:40px}.side-note{font-size:10px;line-height:1.9;color:#8a9387;padding:18px 14px 0}.main{grid-column:2;padding:0 48px 28px;max-width:1420px;width:100%;margin:auto}.topbar{height:94px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}.breadcrumb{color:#92998d;font-size:12px}.top-right{display:flex;align-items:center;gap:15px}.mode-badge{font-size:10px;border:1px solid #dce2d4;border-radius:5px;padding:5px 9px;color:#6e7c68}.avatar{width:34px;height:34px;border-radius:50%;background:#e4ebd8;display:inline-grid;place-items:center}.top-right button{font-size:12px}.page-heading{padding:34px 0 27px;display:flex;justify-content:space-between;align-items:center;gap:15px}.eyebrow{font-size:10px;letter-spacing:.14em;color:#84907b;margin-bottom:8px}.subtitle{color:var(--muted);font-size:12px;margin-top:6px}.date{color:#7d8778;font-size:12px}.card{background:var(--white);border:1px solid var(--line);border-radius:15px;padding:26px}.hero{background:#eaf0e2;display:grid;grid-template-columns:1fr 260px;position:relative;overflow:hidden;padding:31px 34px;min-height:232px;border-color:#dfe6d4}.hero h2{font-size:29px;line-height:1.65;margin:8px 0 11px}.hero p{font-size:12px;color:#6b7a61}.hero .btn{margin-top:21px}.hero-art{position:relative;width:230px;height:190px;align-self:center;justify-self:center;transform:rotate(7deg)}.practice-sheet{position:absolute;inset:4px 20px 5px 12px;background:#fffdf6;box-shadow:0 10px 25px #53643912;border-radius:5px;padding:18px}.sheet-top{font-size:8px;letter-spacing:.15em;color:#99a28c;border-bottom:1px solid #cdd6b8;padding-bottom:8px;margin-bottom:12px}.sheet-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.sheet-grid span{height:54px;border:1px solid #ccd6bc;display:grid;place-items:center;font-family:'Noto Serif JP',serif;font-size:34px;color:#4f7058;background:linear-gradient(90deg,transparent 49.4%,#e5e9df 49.5%,#e5e9df 50.5%,transparent 50.6%),linear-gradient(transparent 49.4%,#e5e9df 49.5%,#e5e9df 50.5%,transparent 50.6%)}.pencil{position:absolute;background:#bb7c53;width:11px;height:175px;right:1px;top:19px;transform:rotate(24deg);border-radius:4px 4px 1px 1px;box-shadow:3px 0 #e0b18c inset}.pencil:after{content:'';position:absolute;bottom:-14px;border-left:5.5px solid transparent;border-right:5.5px solid transparent;border-top:15px solid #bca68b}.stamp{position:absolute;right:-3px;bottom:2px;background:#f5e9a8;width:53px;height:53px;border-radius:50%;display:grid;place-items:center;color:#8e7956;font-size:23px;transform:rotate(-20deg)}.btn{min-height:43px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:10px 19px;font-weight:600;font-size:12px;border:1px solid var(--line);background:white;transition:background .15s,transform .15s}.btn:hover{background:#edf1e7;transform:translateY(-1px)}.btn.primary{background:var(--green);border-color:var(--green);color:white}.btn.primary:hover{background:#244538}.btn.danger{color:var(--red);border-color:#ecd6d0}.btn.soft{background:#edf1e6}.btn.large{min-height:55px;font-size:16px}.btn.full{width:100%}.btn.small{min-height:34px;padding:5px 12px;font-size:11px}.link{font-size:12px;color:var(--green);text-decoration:none}.link:hover{text-decoration:underline}.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:29px 0 16px}.section-title h2{font-family:inherit;font-size:16px;font-weight:600}.section-title small{font-size:11px;color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:21px}.stat{padding:21px 24px;display:flex;gap:17px;align-items:center}.stat-icon{width:42px;height:42px;border-radius:12px;background:#eef2e6;color:#72905d;display:grid;place-items:center}.stat:nth-child(2) .stat-icon{background:#f8efe1;color:#b89767}.stat:nth-child(3) .stat-icon{background:#eeeaf4;color:#9685aa}.stat-label{font-size:11px;color:var(--muted)}.stat-value{font-family:'Noto Serif JP',serif;font-size:28px;line-height:1.5;font-weight:600}.stat-value span{font-family:inherit;font-size:11px;margin-left:5px;font-weight:400;color:var(--muted)}.learner-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.learner-card{position:relative}.learner-head{display:flex;align-items:center;gap:13px}.learner-icon{width:48px;height:48px;border-radius:15px;background:#f1eddd;font-size:28px;display:grid;place-items:center}.learner-info h3{font-size:16px}.learner-info small{color:var(--muted);font-size:10px}.tag{font-size:10px;display:inline-block;background:#edf2e8;color:#70845e;border-radius:5px;padding:3px 8px}.tag.warm{background:#faf0dc;color:#9f8246}.tag.gray{background:#f0f1ed;color:#818c7a}.learner-head>.tag{margin-left:auto}.progress-caption{display:flex;justify-content:space-between;font-size:11px;color:#8a9383;margin:24px 0 9px}.progress-track{height:6px;border-radius:6px;background:#edf0e7;overflow:hidden}.progress-fill{height:100%;background:#97af75;border-radius:6px}.learner-meta{display:flex;justify-content:space-between;font-size:10px;color:#8c9486;margin:11px 0 22px}.learner-meta strong{font-weight:500;color:#697b5d}.learner-footer{border-top:1px solid #f0f2e9;padding-top:17px;display:flex;justify-content:space-between;align-items:center;gap:8px}.learner-footer small{font-size:10px;color:#939a8c}.bottom-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:20px;margin-top:24px}.week-days{display:grid;grid-template-columns:repeat(7,1fr);gap:10px;margin-top:26px;text-align:center}.day-label{font-size:10px;color:#9aa18e}.day-dot{width:33px;height:33px;border:1px solid #e3e8da;border-radius:50%;display:grid;place-items:center;margin:9px auto;font-size:11px;color:#a0aa92}.day-dot.done{background:#aabd8f;color:white;border-color:#aabd8f}.day-dot.current{border:1px solid #7e9662;color:#68814f}.week-note{font-size:10px;color:#9aa18e;margin-top:12px}.tip{background:#f1f0e6;border-color:#e8e7d9;position:relative}.tip .eyebrow{margin-bottom:16px}.tip h3{font-family:'Noto Serif JP',serif;font-size:19px;line-height:1.8;max-width:240px}.tip p{font-size:11px;color:#8d927e;line-height:1.9;max-width:260px;margin-top:9px}.tip-symbol{position:absolute;right:24px;bottom:26px;font-size:46px;color:#b4bea0;transform:rotate(15deg)}.footer{display:flex;justify-content:space-between;gap:15px;color:#a0a795;font-size:10px;margin-top:31px;padding-top:20px;border-top:1px solid var(--line)}.notice{border:1px solid #e7dfbf;background:#faf7e9;border-radius:9px;padding:13px 17px;font-size:12px;color:#877b54;margin:0 0 20px;display:flex;align-items:center;justify-content:space-between;gap:14px}.notice p{flex:1}.empty{padding:45px 22px;text-align:center;color:var(--muted)}.empty h3{color:var(--ink);margin-bottom:8px}.empty .btn{margin-top:18px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:19px}.field{display:grid;gap:7px;font-size:12px}.field input,.field select,.field textarea,.search{border:1px solid #dce2d4;border-radius:8px;padding:12px;background:#fdfefa;min-width:0;width:100%;color:var(--ink)}.field input[type=checkbox]{width:18px;height:18px}.field textarea{min-height:88px;resize:vertical}.field.wide{grid-column:1/-1}.check{display:flex;align-items:center;gap:9px;font-size:12px;min-height:32px}.check input{accent-color:var(--green);width:17px;height:17px}.actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:24px}.divider{border:0;border-top:1px solid var(--line);margin:26px 0}.muted{color:var(--muted);font-size:12px}.stack{display:grid;gap:18px}.split{display:grid;grid-template-columns:1fr 1fr;gap:22px}.range-grid{display:flex;flex-wrap:wrap;gap:9px;margin-top:18px}.kanji-option{width:49px;height:49px;display:grid;place-items:center;border:1px solid var(--line);border-radius:9px;font-family:serif;font-size:25px;position:relative;background:#fcfdf9}.kanji-option input{position:absolute;opacity:0}.kanji-option:has(input:checked){background:#e5edda;border-color:#8fa475;color:var(--green)}.kanji-option:focus-within{outline:3px solid #b68d3b}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;text-align:left;font-size:12px}th{font-size:10px;font-weight:500;color:#9ba38f;padding:12px 9px;border-bottom:1px solid var(--line)}td{padding:14px 9px;border-bottom:1px solid #eff1e9;white-space:nowrap}td.character{font-family:serif;font-size:28px}.tabs{display:flex;gap:9px;margin-bottom:20px;flex-wrap:wrap}.tabs .btn.active{background:var(--green);color:white;border-color:var(--green)}.quiz{max-width:760px;margin:30px auto}.quiz-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;font-size:12px;color:var(--muted)}.quiz .card{text-align:center;padding:40px 30px;margin-top:25px;min-height:380px}.quiz-instruction{font-size:12px;color:var(--muted);margin-bottom:35px}.question{font-family:'Noto Serif JP',serif;font-size:30px;line-height:2.3;word-break:auto-phrase}.reading{display:inline-block;color:#476746;border-bottom:2px solid #b6c995;padding:0 8px}.answer-kanji{font-family:'Noto Serif JP',serif;font-size:88px;line-height:1.5;letter-spacing:.05em;margin:15px auto}.quiz-note{font-size:12px;color:var(--muted);margin-top:20px}.quiz-actions{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-top:25px}.quiz-actions .btn{font-size:17px;min-height:58px}.quiz-actions .wrong{background:#fbf0e8;color:#9f6d50;border-color:#eed6c4}.score-circle{width:150px;height:150px;border-radius:50%;border:9px solid #d8e3c6;margin:25px auto 17px;display:flex;align-items:center;justify-content:center;font-family:'Noto Serif JP',serif;font-size:43px}.score-circle small{font-size:17px}.score-stats{display:flex;justify-content:center;gap:35px;margin:25px 0}.score-stats strong{display:block;font-size:23px}.score-stats span{font-size:11px;color:var(--muted)}.result-characters{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.result-characters span{font-family:serif;font-size:27px;width:48px;height:48px;display:grid;place-items:center;background:#f9efe3;border-radius:8px}.review-row{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:20px 0;border-bottom:1px solid var(--line)}.review-row .q-char{font-family:serif;font-size:35px;width:50px}.review-text{flex:1}.review-text p{font-size:14px}.review-text small{font-size:10px;color:var(--muted)}.review-row .actions{margin:0}.welcome{max-width:660px;margin:50px auto;text-align:center}.welcome .brand{justify-content:center;padding-bottom:25px}.welcome h1{font-size:34px}.welcome p{margin:20px 0;font-size:13px;color:var(--muted);line-height:2}.welcome .field{text-align:left}.welcome .btn{width:100%}.welcome .hero-art{margin:20px auto 35px}.welcome-options{display:grid;gap:12px}.modal-backdrop{position:fixed;inset:0;background:#20362b66;z-index:20;display:grid;place-items:center;padding:20px}.modal{background:var(--paper);border-radius:18px;padding:30px;width:100%;max-width:540px;max-height:90vh;overflow:auto}.modal h2{margin-bottom:24px}.error{background:#f9eae3;border:1px solid #ecd4cb;border-radius:8px;padding:12px;color:#a15646;font-size:12px;margin-bottom:20px}.loading{text-align:center;margin:100px 20px;color:var(--muted)}#toast{position:fixed;bottom:27px;left:50%;transform:translateX(-50%);background:var(--green);color:white;padding:12px 23px;border-radius:10px;z-index:100;font-size:12px;display:none;max-width:90vw;box-shadow:0 5px 25px #172e2226}#toast.show{display:block}.privacy{font-size:13px;line-height:2}.privacy h3{margin:20px 0 10px}.privacy p{margin-bottom:12px}.restore-input{max-width:100%;font-size:12px}.filtered-caption{display:flex;justify-content:space-between;align-items:center;margin:15px 0}.icon-radio{display:flex;gap:10px;flex-wrap:wrap}.icon-radio label{cursor:pointer;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:24px}.icon-radio input{accent-color:var(--green)}
@media(min-width:1450px){.main{padding:0 64px 28px}.hero{padding:38px 42px}.hero h2{font-size:34px}.learner-card{padding:30px}}
@media(max-width:1100px){.sidebar{width:190px;padding:30px 14px}.app-shell{grid-template-columns:190px 1fr}.main{padding:0 27px 25px}.brand{padding-left:7px;gap:8px}.brand-name{font-size:18px}.brand-mark{width:36px;height:36px}.hero{grid-template-columns:1fr 195px;padding:25px}.hero-art{transform:scale(.88) rotate(7deg);width:210px}.hero h2{font-size:26px}.stat{padding:18px 15px;gap:10px}.stat-icon{width:34px;height:34px}.learner-card{padding:21px}.bottom-grid{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.app-shell{display:block}.sidebar{inset:auto 0 0 0;width:100%;height:70px;border-right:0;border-top:1px solid var(--line);padding:7px 10px;background:#fbfcf7f5;backdrop-filter:blur(12px)}.sidebar>.brand,.nav-label,.sidebar-bottom{display:none}.nav{display:flex;justify-content:space-around;gap:2px}.nav button{flex:1;flex-direction:column;justify-content:center;gap:3px;font-size:9px;padding:6px 3px}.nav svg{width:20px;height:20px}.nav .desktop-only{display:none}.main{padding:0 20px 90px}.topbar{height:70px}.top-right{gap:9px}.breadcrumb{font-size:10px}.top-right button{font-size:10px}.mode-badge{font-size:8px}.page-heading{padding:25px 0 22px}h1{font-size:25px}.date{font-size:10px}.hero{grid-template-columns:1fr 150px;padding:25px 22px;min-height:215px}.hero h2{font-size:23px}.hero-art{width:190px;height:180px;transform:scale(.78) rotate(7deg);transform-origin:center}.hero .btn{margin-top:16px}.hero p{font-size:10px}.eyebrow{font-size:8px}.stats{gap:8px;margin-top:15px}.stat{display:block;padding:15px 12px}.stat-icon{width:29px;height:29px;margin-bottom:10px}.stat-icon svg{width:17px;height:17px}.stat-value{font-size:25px}.stat-label{font-size:9px}.stat-value span{font-size:9px}.learner-grid,.bottom-grid,.split{grid-template-columns:1fr}.bottom-grid{gap:15px;margin-top:19px}.section-title{margin-top:25px}.section-title h2{font-size:14px}.card{padding:23px}.tip{min-height:195px}.footer{font-size:9px;flex-wrap:wrap}.form-grid{grid-template-columns:1fr}.field.wide{grid-column:auto}.quiz{margin-top:24px}.quiz .card{padding:33px 20px;min-height:330px}.question{font-size:25px}.quiz-actions{gap:10px}.quiz-actions .btn{font-size:15px;padding:10px}.review-row{flex-wrap:wrap;gap:12px}.review-row .actions{width:100%;justify-content:flex-end}.notice{align-items:flex-start}.notice .btn{white-space:nowrap;font-size:10px;padding:5px 9px}.welcome{margin:25px auto}.welcome h1{font-size:28px}.welcome .hero-art{margin:0 auto}.modal{padding:25px}.score-stats{gap:25px}}
.question-kind-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:15px}.answer-kanji.answer-reading{font-size:36px;line-height:1.8;overflow-wrap:anywhere}.answer-kanji.answer-word{font-size:60px}.answer-or{font-size:20px;color:var(--muted)}.filter-row{display:flex;gap:13px;align-items:end;flex-wrap:wrap}.filter-row .field{flex:1;min-width:145px}.coverage-summary{display:flex;gap:22px;flex-wrap:wrap;margin-bottom:20px;font-size:12px;color:var(--muted)}.coverage-summary strong{color:var(--green);margin-left:6px}.pagination{display:flex;align-items:center;justify-content:center;gap:20px;margin-top:23px;font-size:12px}.review-select input{width:18px;height:18px;accent-color:var(--green)}.validation-error{color:var(--red)}.catalog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(70px,1fr));gap:10px}.catalog-kanji{background:white;border:1px solid var(--line);border-radius:10px;padding:12px 4px;display:grid;gap:4px;text-align:center}.catalog-kanji>span{font-family:'Noto Serif JP',serif;font-size:30px}.catalog-kanji small{font-size:9px;color:var(--muted)}.catalog-kanji.selected{background:#e8efdc;border-color:#829964}.catalog-detail{margin-top:22px}.catalog-detail h2{font-size:40px;margin-bottom:12px}.source-note{margin-top:24px;font-size:11px;color:var(--muted);line-height:2}.kanji-option[hidden]{display:none}.brand small{white-space:nowrap;font-size:8px}.kind-reading_on,.kind-reading_kun{background:#ede9f5;color:#79658f}.kind-writing_word{background:#faf0df;color:#957741}.kind-reading_special{background:#e3eef5;color:#527c95}
.brand-name{white-space:nowrap;font-size:20px}.sidebar{overflow-y:auto}
@media(max-width:760px){.filtered-caption{align-items:flex-start;gap:10px;flex-direction:column}.filtered-caption .actions{gap:6px}.filtered-caption .btn{font-size:10px}.review-row .q-char{width:33px}.review-row .review-text{min-width:160px}.question-kind-options{grid-template-columns:1fr}.coverage-summary{gap:10px}.answer-kanji.answer-reading{font-size:29px}.answer-kanji.answer-word{font-size:45px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
.answer-kanji.answer-sentence{font-size:34px;line-height:1.9;overflow-wrap:anywhere;margin:24px 0}.review-row .q-char{flex-shrink:0;text-align:center}.review-row .q-char small{display:block;font-family:inherit;font-size:11px;color:var(--muted)}.review-row .actions{max-width:235px;justify-content:flex-end;gap:8px}.assessment-weak span{width:auto;min-width:48px;padding:8px 12px;height:auto;font-size:20px}.question-kind-options .check{line-height:1.6}#assessment-preview{border:1px solid var(--line);background:#f2f5eb;border-radius:8px;padding:12px;line-height:1.9}.question{overflow-wrap:anywhere}
@media(max-width:760px){.answer-kanji.answer-sentence{font-size:27px}.review-row .actions{max-width:none}}
.writing-target{text-decoration:underline;text-decoration-color:#759158;text-decoration-thickness:2px;text-underline-offset:.23em;text-decoration-skip-ink:none}.inline-assessment{margin-top:28px}.grading-help{font-size:12px;color:var(--muted);line-height:1.9}.answer-kanji.answer-inline{line-height:2.7;font-size:34px;letter-spacing:0;word-break:normal;overflow-wrap:anywhere;margin:15px 0 20px}.inline-assess{position:relative;display:inline-block;vertical-align:baseline;min-width:44px;min-height:56px;padding:0 .08em;font:inherit;line-height:1.7;color:var(--ink);border-radius:5px;border-bottom:2px solid #a4b78f;touch-action:manipulation}.inline-assess.okurigana{border-bottom-style:dotted}.inline-assess:hover{background:#edf2e7}.inline-assess.wrong{background:#fff0eb;border-bottom-color:#c66b5d}.inline-mark{position:absolute;top:-.66em;left:50%;transform:translateX(-50%);font-family:'Noto Sans JP',sans-serif;font-size:.8em;line-height:1;font-weight:700;color:#bc4438;pointer-events:none}.inline-assessment .actions{margin:24px 0 10px}.score-stats{grid-template-columns:repeat(auto-fit,minmax(90px,1fr))}
@media(max-width:760px){.answer-kanji.answer-inline{font-size:28px}.inline-assess{min-width:35px;min-height:48px}.quiz .card{padding:30px 18px}.quiz-instruction{line-height:1.9}}
.icon-picker{padding:0;margin:0;border:0;min-width:0;text-align:left}.icon-picker legend{font-size:12px;margin-bottom:10px}.icon-picker .icon-radio{display:grid;grid-template-columns:repeat(auto-fit,minmax(48px,1fr));gap:8px}.icon-picker .icon-radio label{position:relative;display:grid;place-items:center;padding:7px;min-height:48px;background:#fff}.icon-picker .icon-radio input{position:absolute;opacity:0;width:1px;height:1px}.icon-picker .icon-radio label:has(input:checked){background:#e4edd9;border:2px solid #759158;padding:6px}.icon-picker .icon-radio label:focus-within{outline:3px solid #b68d3b;outline-offset:2px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.main{align-self:start;margin-top:0;margin-bottom:0}
.child-header{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:94px;padding:14px 0;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:8;background:var(--paper)}.child-picker{display:flex;align-items:center;gap:12px;min-width:0;max-width:430px;flex:1}.child-picker-icon{width:52px;height:52px;display:grid;place-items:center;border-radius:16px;background:#e7eddf;font-size:31px;flex-shrink:0}.child-picker select{font:600 18px 'Noto Sans JP',sans-serif;color:var(--ink);background:transparent;border:0;border-radius:8px;padding:12px 24px 12px 4px;min-width:0;width:100%;cursor:pointer}.child-settings{min-width:66px;min-height:46px;flex-shrink:0}.child-header-title{font-family:'Noto Serif JP',serif;font-size:22px}
.child-home{max-width:660px;margin:30px auto 45px}.child-home h1{font-size:26px;margin-bottom:20px}.home-practice{margin-top:16px;padding:27px;border:1px solid var(--line);border-radius:16px;background:white;text-align:center}.home-practice>p{font-size:14px;margin-bottom:13px;color:var(--muted)}.practice-count{font-size:13px;color:var(--green)}.home-practice .actions{margin-top:19px}.home-practice .btn.large{font-size:17px;min-height:60px}.home-review{margin-top:12px;width:100%;border-color:transparent;background:transparent;min-height:46px;color:var(--green)}.home-week{padding:24px 10px 0;margin-top:20px;border-top:1px solid var(--line)}.home-week h2{font-family:inherit;font-size:14px}.home-week .week-days{margin-top:15px}.home-week .day-dot{width:38px;height:38px}
.child-catalog{max-width:940px;margin:auto}.child-catalog .page-heading{padding:27px 0 20px}.level-options{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:9px}.level-option.btn{display:grid;gap:3px;padding:12px 6px;min-height:70px;text-align:center}.level-option strong{font-size:14px}.level-option>span{font-size:11px;font-weight:400;color:var(--muted)}.level-option.active{border:2px solid #789161;background:#e7efdd;padding:11px 5px}.level-option.active>span{color:var(--green)}.catalog-level-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:24px 0 16px}.catalog-level-heading h2{font-size:23px}.catalog-level-heading p{font-size:12px;color:var(--muted);margin-top:4px}.catalog-level-heading .btn{min-height:48px;font-size:13px}.level-change-note{font-size:12px;line-height:1.9;color:#7e7355;background:#f6f1e1;border-radius:9px;padding:11px 14px;margin-bottom:16px}.learning-legend{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:18px}.legend-item{display:flex;gap:6px;align-items:center;font-size:11px;border-radius:8px;padding:7px 10px;border:1px solid var(--line);background:white}.legend-item strong{font-size:12px}.status-symbol{font-family:'Noto Sans JP',sans-serif;font-weight:700}.legend-item.mastered{background:#e5f0de;color:#345c36;border-color:#b6cf9f}.legend-item.weak{background:#fff0e8;color:#99482f;border-color:#e8b69f}.legend-item.learning{background:#edf3f5;color:#446778;border-color:#c6d9df}.legend-item.unseen{color:#7b8476}.catalog-search{display:flex;gap:9px;margin-bottom:18px}.catalog-search .field{flex:1;min-width:0}.catalog-search input{background:white;min-height:46px}.catalog-search .btn{min-height:46px}.child-catalog .catalog-grid{grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:10px}.child-catalog .catalog-kanji{position:relative;padding:22px 6px 10px;min-height:108px;gap:3px;border-radius:11px;color:#657061}.catalog-kanji .catalog-character{font-family:'Noto Serif JP',serif;font-size:32px;color:inherit;line-height:1.5}.catalog-kanji .status-symbol{position:absolute;top:6px;right:8px;font-family:'Noto Sans JP',sans-serif;font-size:13px;color:inherit;line-height:1.1}.child-catalog .catalog-kanji small{font-size:10px;color:inherit;white-space:nowrap}.child-catalog .catalog-kanji.mastered{background:#e5f0de;color:#345c36;border-color:#a9c58f}.child-catalog .catalog-kanji.weak{background:#fff0e8;color:#99482f;border-color:#dfa587}.child-catalog .catalog-kanji.learning{background:#edf3f5;color:#446778;border-color:#b8cfd6}.child-catalog .catalog-kanji.selected{outline:3px solid #b68d3b;outline-offset:1px}.catalog-kanji .okurigana-flag{font:500 9px 'Noto Sans JP',sans-serif;background:#fae9c6;color:#885e25;border-radius:4px;padding:2px 4px;line-height:1.5;margin-top:3px}.okurigana-note{color:#916727;margin:8px 0}.child-catalog .catalog-detail{line-height:2}.child-catalog .catalog-detail>p{margin-bottom:7px}.child-catalog .source-note summary{cursor:pointer;min-height:44px;padding:10px 0}
.catalog-level-heading{position:sticky;top:94px;z-index:4;padding:12px 0;background:var(--paper);border-bottom:1px solid var(--line)}
@media(max-width:760px){.child-header{min-height:80px;padding:10px 0;gap:10px}.child-picker{gap:9px}.child-picker-icon{width:43px;height:43px;font-size:27px;border-radius:13px}.child-picker select{font-size:16px;min-height:48px;padding-right:12px}.child-settings{min-width:58px;padding:8px 12px}.child-home{margin:22px auto 20px}.child-home h1{font-size:24px;margin-bottom:15px}.home-practice{padding:24px 18px}.home-practice .btn.large{font-size:15px}.home-week{padding:20px 0 0}.home-week .week-days{gap:3px}.home-week .day-dot{width:32px;height:32px}.level-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.level-option.btn{min-height:62px;padding:9px 6px}.level-option.active{padding:8px 5px}.catalog-level-heading{align-items:center;margin:20px 0 14px;gap:8px}.catalog-level-heading h2{font-size:19px}.catalog-level-heading .btn{font-size:12px;padding:10px 13px;min-width:118px}.learning-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.legend-item{font-size:11px;padding:7px 9px}.legend-item strong{margin-left:auto}.child-catalog .catalog-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.child-catalog .catalog-kanji{min-height:100px;padding:20px 4px 8px}.catalog-kanji .catalog-character{font-size:29px}.child-catalog .catalog-kanji small{font-size:9px}.main{padding-bottom:calc(90px + env(safe-area-inset-bottom))}.sidebar{height:calc(70px + env(safe-area-inset-bottom));padding-bottom:calc(7px + env(safe-area-inset-bottom))}}

@media(max-width:760px){.catalog-level-heading{top:80px}}
body.kanji-dialog-open{overflow:hidden}.kanji-dialog{max-width:520px;overscroll-behavior:contain}.kanji-detail-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.kanji-detail .kanji-detail-top h2{font-family:'Noto Serif JP',serif;font-size:64px;line-height:1.3;margin:0 0 10px}.kanji-detail-close{min-height:44px;flex-shrink:0}.kanji-detail-caption{margin-top:16px;font-size:12px;color:var(--muted)}.kanji-detail-counts{display:flex;gap:24px;padding:10px 0 4px;font-size:12px;color:var(--muted)}.kanji-detail-counts b{font-size:21px;color:var(--green);font-weight:500}.kanji-detail-counts>span:last-child b{color:#99482f}.kanji-reading-section{border-top:1px solid var(--line);margin-top:20px;padding-top:16px}.kanji-reading-section h3,.kanji-okurigana-detail h3{font-size:14px}.kanji-readings{font-size:18px;color:var(--green);margin:8px 0 12px;line-height:1.8;overflow-wrap:anywhere}.kanji-example-list{list-style:none;display:grid;gap:8px;margin:0;padding:0}.kanji-example-list li{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:10px 12px;background:#f0f3e9;border-radius:8px}.kanji-example-list strong{font-weight:500;font-size:17px;overflow-wrap:anywhere}.kanji-example-list li>span{font-size:13px;color:var(--muted);overflow-wrap:anywhere;text-align:right}.kanji-reading-empty{font-size:12px;color:var(--muted);line-height:1.8;margin-top:8px}.kanji-okurigana-detail{background:#fff4df;border-radius:9px;padding:13px;margin-top:16px}.kanji-example-source{font-size:10px;color:var(--muted);margin-top:20px;line-height:1.9}.kanji-example-source summary{cursor:pointer;min-height:44px;padding:12px 0}.result-characters .result-kanji{font-family:'Noto Serif JP',serif;font-size:25px;color:var(--green);border:1px solid #d4dfc6;background:#eef3e6;min-width:52px;min-height:52px;padding:8px 14px;border-radius:9px;line-height:1.6}.result-characters .result-kanji:hover{background:#e2ebd4}.result-characters .result-kanji:focus-visible,.catalog-kanji:focus-visible{outline:3px solid #a68540;outline-offset:3px}.result-characters .result-kanji[data-word]:not([data-word=""]){font-family:inherit;font-size:15px}
@media(max-width:600px){.kanji-dialog{padding:22px;max-height:calc(100dvh - 32px)}.kanji-dialog .kanji-detail-top h2{font-size:56px}.kanji-example-list li{flex-wrap:wrap;gap:4px 12px}.kanji-example-list strong{font-size:16px}.kanji-example-list li>span{font-size:12px}.kanji-detail-counts{gap:20px}.kanji-detail-close{font-size:12px}}
.child-selection-controls{display:flex;align-items:center;gap:18px;flex:1;min-width:0;max-width:550px}.child-selection-controls .child-picker{position:relative;max-width:none}.child-picker select{appearance:none;-webkit-appearance:none;padding-right:25px;text-overflow:ellipsis}.picker-chevron{width:14px;height:14px;flex-shrink:0;color:var(--green);pointer-events:none}.child-picker>.picker-chevron{position:absolute;right:5px;top:50%;transform:translateY(-50%)}.header-level{display:flex;align-items:center;justify-content:center;gap:10px;flex-shrink:0;min-height:52px;padding:6px 9px;border:0;border-radius:10px;background:transparent;color:var(--ink);cursor:pointer}.header-level:hover{background:#eaf0e2}.header-level:focus-visible{outline:3px solid #a68540;outline-offset:2px}.header-level-label{text-align:left;font-size:12px;font-weight:500;line-height:1.5;color:var(--muted)}.header-level strong{font-family:'Noto Sans JP',sans-serif;font-size:32px;line-height:1.2;font-weight:600;color:var(--green)}
@media(max-width:760px){.child-selection-controls{gap:10px;max-width:none}.header-level{gap:7px;padding:5px 3px;min-height:48px}.header-level-label{font-size:10px}.header-level strong{font-size:28px}.picker-chevron{width:12px;height:12px}.child-picker select{padding-left:0;padding-right:19px}.child-picker>.picker-chevron{right:2px}}
button.legend-item{font-family:inherit;cursor:pointer;min-height:44px;text-align:left;transition:box-shadow .15s}button.legend-item:hover{box-shadow:0 0 0 2px #78916155}button.legend-item[aria-pressed="true"]{outline:3px solid #a68540;outline-offset:2px;font-weight:600}button.legend-item:focus-visible{box-shadow:0 0 0 4px #a6854055}.catalog-filter-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;margin-bottom:14px}.catalog-filter-summary p{font-size:12px;color:var(--muted)}.catalog-filter-summary .btn{min-height:44px;font-size:11px;padding:7px 12px}
.quiz-toolbar{display:flex;align-items:stretch;gap:12px;min-height:60px;margin-top:18px}.quiz-toolbar>.btn{flex:1;min-height:60px;font-size:17px}.quiz-toolbar>.wrong{background:#fbf0e8;color:#9f6d50;border-color:#eed6c4}.quiz .tag+.quiz-instruction{margin-top:18px}
@media(max-width:760px){.quiz-toolbar>.btn{font-size:15px}.quiz-toolbar{gap:10px}}
.quiz .quiz-writing-card{text-align:center}.quiz-writing-card>.quiz-instruction{font-size:12px;line-height:1.9;min-height:3.8em;margin:0 0 20px;text-align:center}.quiz-writing-body{font-family:'Noto Serif JP',serif;font-size:34px;line-height:2.7;text-align:center}.quiz-writing-body .question,.quiz-writing-body .answer-kanji.answer-inline{font:inherit;letter-spacing:0;margin:0;overflow-wrap:anywhere;word-break:normal}.quiz-writing-body .inline-assessment{margin:0}.quiz-writing-body .inline-assess{padding-left:0;padding-right:0;text-align:center}
@media(max-width:760px){.quiz-writing-body{font-size:28px}}
.study-history{max-width:860px;margin:auto}.history-view-tabs .btn{min-height:48px;flex:1;max-width:220px}.history-list-tabs .btn{font-size:12px;min-height:44px}.history-calendar-layout{display:grid;gap:22px}.history-calendar{padding:26px}.history-month-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.history-month-heading h2{font-family:inherit;font-size:22px;letter-spacing:.03em}.calendar-month-nav{min-width:44px;min-height:44px;font-size:26px;padding:0 12px;line-height:1}.history-month-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0 16px}.history-month-summary p{font-size:12px;color:var(--muted)}.history-month-summary .btn{min-height:44px}.history-weekdays,.history-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.history-weekdays{margin-bottom:8px;text-align:center;font-size:12px;color:var(--muted)}.history-weekdays>span:first-child{color:#a15744}.calendar-day{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:0;min-height:72px;padding:8px 2px;border:1px solid var(--line);border-radius:10px;background:#fbfcf7;font-variant-numeric:tabular-nums}.calendar-day.has-study{background:#edf3e3;border-color:#c6d9b4}.calendar-day.is-today{box-shadow:inset 0 0 0 2px #97ad7d}.calendar-day-number{font-size:16px}.calendar-question-count{font-size:12px;font-weight:600;color:var(--green);line-height:1.4;max-width:100%;overflow-wrap:anywhere}.calendar-day:hover{border-color:#789161}.calendar-day[aria-pressed="true"]{background:var(--green);color:white;border-color:var(--green)}.calendar-day[aria-pressed="true"] .calendar-question-count{color:inherit}.history-calendar,.history-day-result{scroll-margin-top:110px}.history-day-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.history-day-heading h2{font-family:inherit;font-size:19px;line-height:1.7;min-width:0}.history-day-heading>.btn{flex-shrink:0;min-height:44px;font-size:11px;padding:8px 12px}.history-day-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:22px 0 0}.history-day-stats>div{background:#f1f4e9;border-radius:10px;padding:16px 12px;min-width:0}.history-day-stats dt{font-size:11px;color:var(--muted)}.history-day-stats dd{font-size:27px;color:var(--green);font-weight:600;margin:7px 0 0;overflow-wrap:anywhere;line-height:1.5}.history-day-stats dd small{font-size:12px;font-weight:400;white-space:nowrap}.history-empty{font-size:13px;color:var(--muted);margin:24px 0 4px;line-height:1.9}.history-mistakes-heading{font-size:14px;margin:26px 0 14px}.history-mistakes{justify-content:flex-start}.history-all-correct{margin-top:24px;color:var(--green);font-size:14px}.history-result-date{display:block;font-size:12px;color:var(--muted);font-weight:400}
@media(max-width:760px){.history-calendar{padding:19px 14px}.history-calendar-layout{gap:16px}.history-month-heading h2{font-size:19px}.history-weekdays,.history-calendar-grid{gap:4px}.calendar-day{min-height:59px;border-radius:8px;gap:3px;padding:6px 1px}.calendar-day-number{font-size:14px}.calendar-question-count{font-size:10px}.history-month-summary p{font-size:11px}.history-day-result{padding:22px 16px}.history-day-heading h2{font-size:17px}.history-day-stats{gap:7px;margin-top:18px}.history-day-stats>div{padding:13px 8px}.history-day-stats dt{font-size:10px;min-height:34px}.history-day-stats dd{font-size:23px;margin-top:3px}.history-day-stats dd small{font-size:10px}.history-calendar,.history-day-result{scroll-margin-top:92px}.history-list-tabs{gap:7px}.history-list-tabs .btn{font-size:11px;padding:8px 10px}}
.range-bulk .field textarea{min-height:92px;font-size:20px;line-height:1.7;letter-spacing:.1em}.range-bulk #range-bulk-help{margin-top:9px;line-height:1.9}.range-bulk .actions{margin-top:13px;gap:9px}.range-bulk .btn{min-height:44px;font-size:12px}.range-bulk-message{min-height:24px;font-size:12px;line-height:1.9;color:var(--green);margin-top:10px;overflow-wrap:anywhere}.range-bulk-message.is-error{color:var(--red)}.range-selection-summary{margin:16px 0 20px;padding:16px;background:#eef3e5;border-radius:11px}.range-selection-summary h3{font-size:14px;margin-bottom:12px}.range-selected-list{display:flex;flex-wrap:wrap;gap:8px}.range-selected-character{display:grid;place-items:center;position:relative;min-height:44px;width:44px;flex:0 0 44px;padding:0;background:white;border:1px solid #cbd9bc;border-radius:8px;font-family:'Noto Serif JP',serif;font-size:23px;color:var(--green)}.range-selected-character>span{position:absolute;top:2px;right:3px;font-family:inherit;font-size:9px;opacity:.65;line-height:1}.range-manual{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:6px 0 16px}.range-manual>summary{font-size:13px;font-weight:500;min-height:44px;padding:11px 0;cursor:pointer}.range-manual>.muted{margin:6px 0 16px;line-height:1.9}.range-manual .actions{gap:8px;margin-top:15px}.range-manual .btn{min-height:44px;font-size:11px}
@media(max-width:760px){.range-selection-summary{padding:13px}.range-selected-list{gap:7px}.range-bulk .actions{align-items:stretch}.range-bulk .btn{font-size:11px;padding:10px}.range-manual .form-grid{gap:13px}}

.spot-learning{margin-top:22px}.spot-learning>p{margin:10px 0 20px}.spot-levels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.spot-level{display:flex;flex-direction:column;gap:5px;min-height:100px;padding:16px 8px}.spot-level strong{font-size:20px}.spot-level span{font-size:12px;font-weight:400;color:var(--muted)}.spot-level.has-progress{border-color:#8fa475;background:#edf2e6}.spot-session-menu{margin-top:22px;color:var(--muted);font-size:12px}.spot-session-menu summary{cursor:pointer;padding:10px 0}.spot-session-menu .btn{margin-top:8px}
@media(max-width:760px){.spot-levels{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.spot-level strong{font-size:19px}}
.kanji-history>h2{font-size:21px;scroll-margin-top:100px}.history-purpose{margin:10px 0 18px}.history-written-count{font-size:13px;margin-bottom:18px}.history-written-count strong{font-size:24px;margin:0 4px}.history-level-filter{max-width:260px;margin:0 0 18px}.kanji-history-table{table-layout:fixed;width:100%}.kanji-history-table th,.kanji-history-table td{padding:8px 6px;white-space:normal;vertical-align:middle}.kanji-history-table th:not(:first-child),.kanji-history-table td:not(:first-child){text-align:center}.kanji-history-table .record-count-column{width:15%;font-size:16px}.kanji-history-table .record-status-column{width:27%}.kanji-record-heading{display:flex;gap:8px;align-items:center;min-width:0}.record-character{font-family:"Noto Serif JP",serif;font-size:32px;line-height:1.4;width:52px;min-width:52px;min-height:52px;border:1px solid var(--line);background:white;border-radius:9px;color:var(--green)}.record-character:hover{background:#edf2e6}.record-description{display:grid;min-width:0;flex:1;gap:3px;font-size:11px;color:var(--muted);overflow-wrap:anywhere}.record-description strong{font-size:12px;color:var(--ink)}.record-description small{font-size:10px;color:#916727}.record-status{display:inline-flex;justify-content:center;font-size:10px;white-space:nowrap;padding:5px 6px;gap:4px}.kanji-history-table .record-count{font-size:19px;font-weight:600;white-space:nowrap}.record-count small{font-size:10px;font-weight:400;margin-left:2px}.history-status-note{margin-top:20px}.kanji-history .pagination{flex-wrap:wrap}
@media(max-width:760px){.kanji-history>h2{font-size:19px}.study-history .history-list-tabs{gap:7px}.history-list-tabs .btn{flex:1;font-size:12px;padding:8px 10px}.record-character{font-size:30px}.history-level-filter{max-width:none}.kanji-history-table th,.kanji-history-table td{padding:8px 3px}.record-description{font-size:10px}.record-description strong{font-size:11px}.record-status{padding:5px 4px;gap:3px}.kanji-history-table .record-count{font-size:18px}}
