@charset "UTF-8";
.writing-area{max-width:380px;margin:12px auto}.writing-canvas{display:block;width:100%;aspect-ratio:1;border:3px solid #7b91c8;border-radius:16px;background:#fff;touch-action:none;user-select:none;-webkit-user-select:none}.writing-tools{justify-content:center}.model-row{display:flex;gap:22px;align-items:center;flex-wrap:wrap;margin-top:20px}.kanji-model{font-family:"UD Digi Kyokasho NK-R","UD Digi Kyokasho NP-R","Yu Kyokasho","Yu Mincho",serif;font-size:clamp(5rem,22vw,9rem);line-height:1.2;width:1.35em;text-align:center;color:#172448;background:#f0f4ff;border-radius:12px;padding:8px}.compare{display:grid;grid-template-columns:1fr 1fr;gap:18px;max-width:480px;align-items:start;margin-top:10px}.compare .kanji-model{width:100%;height:auto;aspect-ratio:1;display:grid;place-items:center;font-size:clamp(4rem,18vw,8rem)}.compare .result-canvas{touch-action:auto}.writing-review{border-top:1px solid #dce4f8;padding:18px 0}.writing-review button[aria-pressed=true]{background:#e3f3e9;border-color:#176443;color:#145035}@media(max-width:400px){.compare{gap:10px}.writing-tools button{padding:10px}.writing-review .row button{font-size:14px}}
:root{font-family:"BIZ UDPGothic","Yu Gothic",Meiryo,sans-serif;color:#172448;background:#f3f6ff;font-synthesis:none;line-height:1.8;font-size:16px;--blue:#234ed8;--ink:#172448;--soft:#e8eeff;--green:#176443}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:1px solid #c5d0ef;background:white;color:var(--ink);padding:12px 20px;border-radius:14px;min-height:48px;font-weight:700}button:hover{background:#edf2ff}button:disabled{cursor:default;opacity:.65}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #f0a400;outline-offset:4px}.primary{background:var(--blue);color:white;border-color:var(--blue);box-shadow:0 4px 0 #19369a}.primary:hover{background:#1e40b5}.top{max-width:1000px;padding:24px 28px;display:flex;align-items:center;justify-content:space-between;margin:auto;gap:16px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink);font-weight:800;line-height:1.4}.brand-mark{display:grid;place-items:center;background:var(--blue);color:white;font-size:26px;border-radius:14px;width:48px;height:48px}.edition{font-size:14px;text-align:right;color:#536181}main{max-width:944px;margin:auto;padding:12px 28px 36px}h1{font-size:clamp(1.7rem,4vw,2.4rem);line-height:1.55;margin:10px 0 16px;letter-spacing:.02em}h2{font-size:1.35rem;line-height:1.8;margin:14px 0}p{margin:10px 0 18px}.eyebrow,.tag{font-size:14px;font-weight:700;color:#234ed8}.welcome{background:white;border-radius:26px;padding:32px;border:1px solid #dbe3fa}.question{padding:24px 0}.question button{margin:5px}.muted{color:#536181;font-size:14px}footer{text-align:center;padding:18px;font-size:14px;color:#536181}[hidden]{display:none!important}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.spread{justify-content:space-between}.compact{font-size:14px;padding:8px 14px}.week-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:8px 0 22px}.week-tabs button{padding:10px 5px;font-size:14px}.week-tabs button[aria-pressed=true]{background:var(--blue);color:white;border-color:var(--blue)}.hero{display:grid;grid-template-columns:1.1fr 1fr;gap:26px;align-items:center}.hero p{color:#536181}.stamp{display:inline-flex;align-items:center;gap:8px;background:#fff0b5;color:#654400;border-radius:30px;padding:6px 14px;font-weight:700}.route{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin-top:26px}.day{min-width:0;padding:12px 2px;border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:13px}.day strong{font-size:22px}.day.done{background:#e3f3e9;border-color:#72a58a;color:#145035}.day.current{border:2px solid var(--blue);background:#eef2ff}.day.test{border-style:dashed}.topics{padding:18px 0 0;font-size:14px;display:grid;gap:6px}.topics b{display:inline-block;width:72px}.parents{margin:24px 0 0;border-top:1px solid #cdd7ee;padding-top:18px;font-size:14px}.parents summary{cursor:pointer;font-weight:700}.parents a{color:#234ed8}.parents ul{padding-left:22px}.quiz-head{margin-bottom:18px}.progress{height:8px;background:#dce4f8;border-radius:20px;overflow:hidden;margin-top:12px}.progress span{display:block;background:var(--blue);height:100%;transition:width .25s}.quiz{max-width:720px;margin:auto;background:white;border-radius:26px;padding:28px;border:1px solid #dbe3fa}.passage{white-space:pre-wrap;background:#f0f4ff;padding:18px;border-radius:14px;font-size:1.2rem;line-height:2}.prompt{font-size:1.45rem;line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere}.answers{display:grid;gap:12px;margin:22px 0}.answers button{text-align:left;font-size:1.15rem;padding:16px 20px}.answers button.selected{border:2px solid var(--blue);background:#edf2ff}.answers button.correct{border:2px solid var(--green);background:#e7f6ed}.answers button.wrong{border:2px solid #a24612;background:#fff2df}.answer-entry{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:20px 0}.answer-entry input{min-width:0;width:160px;font-size:1.7rem;border:2px solid #a7b7de;border-radius:14px;padding:8px 14px;color:var(--ink)}.feedback{padding:16px 20px;background:#e7f6ed;color:#14482e;border-radius:14px;margin:18px 0;white-space:pre-wrap}.feedback.retry{background:#fff3de;color:#713b0b}.feedback strong{display:block;font-size:1.15rem}.actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:22px}.calc{font:2rem/1.5 "BIZ UDPGothic",monospace;letter-spacing:.2em;display:table;margin:20px auto;text-align:right}.calc .bottom{border-bottom:3px solid #172448;padding-left:10px}.data-table{border-collapse:collapse;width:100%;margin:16px 0}.data-table td,.data-table th{border-bottom:1px solid #d7e0f3;text-align:left;padding:9px;font-size:1.1rem}.data-table th{color:#536181;font-size:14px}.dots{letter-spacing:.13em;color:var(--blue);overflow-wrap:anywhere}.result-top{text-align:center}.result-icon{font-size:44px}.result-score{font-size:2.4rem;color:var(--blue);font-weight:800}.review-list{padding:0;list-style:none;display:grid;gap:16px}.review-list li{border-top:1px solid #dce4f8;padding:16px 0;white-space:pre-wrap}.notice{padding:12px;background:#fff1d8;color:#713b0b;border-radius:12px}.status-list{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.status-item{padding:12px;background:#edf2ff;border-radius:12px}.badge{font-size:26px}.written{font-size:14px;color:#536181}.home-title{margin-top:0}.save-alert{max-width:888px;margin:8px auto;padding:12px 24px;background:#fff1d8;color:#713b0b}.review-answer{color:#176443;font-weight:700}@media(max-width:620px){.top{padding:18px}main{padding:8px 16px 28px}.welcome,.quiz{padding:22px 18px;border-radius:22px}.hero{grid-template-columns:1fr;gap:4px}.route{grid-template-columns:repeat(4,1fr);gap:9px}.day{padding:10px 4px}.hero .primary{width:100%}.week-tabs{gap:6px}.week-tabs button{font-size:13px}.prompt{font-size:1.3rem}.status-list{grid-template-columns:1fr}.answers button{font-size:1.1rem}.edition{font-size:12px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}@media print{header,footer,button,.week-tabs{display:none}.quiz,.welcome{border:0}body{background:white}}

.letter-tabs{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}.letter-tabs button{padding:8px 12px;font-size:14px}.letter-tabs button[aria-pressed=true]{background:#234ed8;color:white}.letter-count{text-align:center;font-weight:700;margin:8px}.word-model{font-family:"Yu Kyokasho","Yu Mincho",serif;font-size:2rem;overflow-wrap:anywhere}.word-comparison{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:12px;margin-top:16px}.letter-comparison{min-width:0;text-align:center}.letter-comparison .kanji-model{width:100%;font-size:clamp(3rem,10vw,5rem);aspect-ratio:1;display:grid;place-items:center;padding:4px}.letter-comparison .result-canvas{touch-action:auto}.clock{max-width:280px;margin:14px auto;text-align:center}.clock svg{display:block;width:100%;height:auto}.clock figcaption{font-size:14px;color:#536181}.time-entry label{display:flex;gap:6px;align-items:center}.time-entry input{width:88px}.time-entry{gap:10px}.quiz-head .row{font-size:14px}.parents{overflow-wrap:anywhere}@media(max-width:400px){.top{padding:14px}.brand{font-size:14px}.week-tabs button{font-size:14px}.edition{font-size:12px}.word-comparison{gap:8px;grid-template-columns:repeat(2,minmax(0,1fr))}.letter-tabs{gap:6px}.letter-tabs button{padding:8px}.model-row{gap:14px}}

.role-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:28px 0}.role-card{display:block;border:2px solid #ced8ef;border-radius:24px;padding:28px;color:#172448;text-decoration:none;transition:transform .15s,border-color .15s}.role-card:hover{transform:translateY(-3px);border-color:#234ed8}.child-role{background:#234ed8;color:#fff;border-color:#234ed8}.child-role:hover{background:#1e40b5}.parent-role{background:#f3f6ff}.role-card h2{font-size:1.75rem}.role-symbol{font-weight:800;font-size:2.8rem;line-height:1.4}.role-action{font-weight:700}.portal>h1{margin-top:8px}.login-card form{display:grid;gap:14px;margin-top:24px}.login-card input,.filter-grid input,.filter-grid select{width:100%;max-width:100%;min-width:0;min-height:48px;padding:10px 12px;border:1px solid #879ccc;border-radius:10px;background:#fff;color:#172448;font-size:16px}.login-card a,.parent-heading a{color:#234ed8}.parent-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.parent-heading h1{font-size:1.8rem;margin-bottom:0}.filter-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:end}.filter-grid label{font-size:14px;font-weight:700}.filter-grid button{grid-column:1/-1}.parent-panel{padding:24px}.history-item{border-top:1px solid #d7e0f3;padding:16px 0}.history-item summary{cursor:pointer;display:grid;grid-template-columns:1fr auto;gap:6px 14px}.history-time{font-size:14px;font-weight:700}.history-prompt,.history-answer{grid-column:1/-1}.history-answer{color:#234ed8;font-weight:700}.outcome{font-size:14px}.good{color:#176443}.review{color:#934512}.history-detail{padding:16px;background:#f3f6ff;border-radius:16px;margin-top:14px;overflow-wrap:anywhere}.history-detail h3{white-space:pre-wrap}.history-detail p{white-space:pre-wrap}.parent-writing{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:12px}.parent-writing canvas{touch-action:auto}.parent-writing b{font-family:"Yu Kyokasho","Yu Mincho",serif;font-size:2rem}.empty-records{text-align:center;padding:28px 10px}.record-calculation{font-size:1.7rem}.history-detail .passage{font-size:1rem}#cloud-status{max-width:888px;margin:0 auto 8px;padding:8px 20px;color:#176443;font-size:14px;display:flex;align-items:center;justify-content:space-between;gap:12px}#cloud-status.pending{color:#713b0b;background:#fff3de}#login-error,#setup-error{color:#9a3023}#history-status{color:#713b0b}@media(max-width:620px){.role-grid{grid-template-columns:1fr;gap:16px}.role-card{padding:22px}.role-card h2{font-size:1.5rem}.role-symbol{font-size:2rem}.role-card p{margin:8px 0}.parent-heading{align-items:flex-start;flex-direction:column}.parent-panel{padding:16px}.filter-grid{gap:12px}.history-item summary{grid-template-columns:1fr}.parent-writing{grid-template-columns:repeat(2,minmax(0,1fr))}.history-detail{padding:12px}}