:root{--washi: #1c1a17;--washi-deep: #26221d;--sumi: #f2ecdc;--sumi-soft: #a89e8c;--shu: #d9654c;--shu-deep: #b4402c;--ai: #5588ad;--ai-deep: #2c465e;--midori: #22c55e;--rule: rgba(242, 236, 220, .14);--white: #ffffff}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;overflow-x:hidden}body{background:var(--washi);background-image:radial-gradient(circle at 12% 8%,rgba(242,236,220,.035),transparent 40%),radial-gradient(circle at 88% 92%,rgba(242,236,220,.035),transparent 40%);color:var(--sumi);font-family:Zen Kaku Gothic New,Hiragino Sans,sans-serif;-webkit-font-smoothing:antialiased}h1{font-family:Shippori Mincho,serif;font-weight:700;font-size:1.5rem;margin:0 0 1.25rem;letter-spacing:.02em}.page{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:1.5rem}.page-top{align-items:flex-start;padding-top:3rem}.card{width:100%;max-width:360px;padding:2rem 1.75rem;background:var(--washi-deep);border:1px solid var(--rule);text-align:left}.dashboard-wrap{width:100%;max-width:360px}.dashboard-panels{display:flex;flex-direction:column}.dashboard-panel{padding:2rem 1.75rem;background:var(--washi-deep);text-align:left}.dashboard-panel:first-child{padding-bottom:1rem}.dashboard-panel:last-child{padding-top:1rem;display:flex;flex-direction:column;max-height:fit-content}.dashboard-panel h1{font-size:1.1rem;text-align:center}.dashboard-footer{margin-top:.75rem;display:flex;flex-direction:row;align-items:center;gap:.5rem;justify-content:center}@media (min-width: 768px){.dashboard-wrap{max-width:760px}.dashboard-panels{gap:1.5rem;display:flex;flex-direction:column}.dashboard-panel{flex:1;border:1px solid var(--rule);padding:2rem 1.75rem}}.muted{color:var(--sumi-soft);line-height:1.5}.hint{color:var(--sumi-soft);font-size:.8rem;line-height:1.5;margin-top:1.25rem}.error{color:var(--shu-deep);font-size:.85rem}input[type=text]{width:100%;padding:.7rem .8rem;font-size:1rem;font-family:inherit;border:1px solid var(--rule);background:var(--washi);color:var(--sumi);margin-bottom:.75rem}input[type=text]:focus{outline:2px solid var(--ai);outline-offset:1px}input[type=text]::placeholder{color:var(--sumi-soft)}.answer-input{text-align:center}textarea{width:100%;padding:.7rem .8rem;font-size:1rem;font-family:inherit;border:1px solid var(--rule);background:var(--washi);color:var(--sumi);margin-bottom:.75rem;resize:vertical}textarea:focus{outline:2px solid var(--ai);outline-offset:1px}.select-row{display:flex;gap:.75rem;margin-bottom:.75rem}.select-field{display:block;flex:1}.button-row{display:flex;gap:.75rem;flex-direction:column}.button-row button{flex:1}select{width:100%;padding:.7rem 2rem .7rem .8rem;font-size:1rem;font-family:inherit;border:1px solid var(--rule);color:var(--sumi);appearance:none;-webkit-appearance:none;-moz-appearance:none;background-color:var(--washi);background-image:linear-gradient(45deg,transparent 50%,var(--sumi-soft) 50%),linear-gradient(135deg,var(--sumi-soft) 50%,transparent 50%);background-position:calc(100% - 1.15rem) center,calc(100% - .85rem) center;background-size:.3rem .3rem;background-repeat:no-repeat}select:focus{outline:2px solid var(--ai);outline-offset:1px}button{width:100%;padding:.75rem;font-size:.95rem;font-family:inherit;font-weight:500;background:var(--sumi);color:var(--washi);border:none;cursor:pointer}button:disabled{opacity:.45;cursor:default}button.link{background:none;color:var(--sumi-soft);font-size:.85rem;max-width:fit-content}.stat-row{display:flex;gap:1.5rem;margin-bottom:1.5rem;width:100%;justify-content:center}.stat{display:flex;flex-direction:column;align-items:center}.stat-number{font-family:Shippori Mincho,serif;font-size:2rem;line-height:1;max-width:fit-content}.stat-label{font-size:.8rem;color:var(--sumi-soft);margin-top:.25rem}.review-shell{width:100%;max-width:360px}.session-bar{display:flex;align-items:center;gap:1rem;margin-bottom:2.5rem}.progress-track{flex:1;height:2px;background:var(--rule)}.review-shell>.progress-track{margin-bottom:2.5rem;flex:none}.end-session{flex-shrink:0;white-space:nowrap}.review-actions-row{display:flex;justify-content:center;gap:.75rem;margin-top:.75rem}.chat-toggle{display:none}.review-with-chat{width:100%}.chat-side-panel{display:none}@media (min-width: 1100px){.review-with-chat{width:auto;max-width:920px;display:flex;align-items:stretch;justify-content:center;gap:2.5rem;height:80vh}.review-with-chat .review-shell{flex-shrink:0;height:100%;display:flex;flex-direction:column;justify-content:center}.review-with-chat:has(.review-shell:only-child){width:100%}.review-with-chat .review-shell:only-child{flex:1;max-width:100%}.chat-toggle{display:inline-block}.chat-side-panel{display:flex;max-width:420px;height:100%;background:var(--washi-deep);border:1px solid var(--rule);border-top:3px solid var(--ai);padding:1.75rem}}.progress-fill{height:100%;background:var(--shu);transition:width .25s ease}.review-card{background:var(--washi-deep);border:1px solid var(--rule);border-top:3px solid var(--ai);padding:2.5rem 1.75rem 2rem;text-align:center}.review-card.reading{border-top-color:var(--shu)}.review-card.lesson{border-top-color:var(--sumi-soft)}@media (max-width: 767px){.page{padding:1rem}.review-shell{max-width:none}.review-card{background:none;border:none;border-top:3px solid var(--ai);padding:1.5rem 0 1rem}.review-card.reading{border-top-color:var(--shu)}.review-card.lesson{border-top-color:var(--sumi-soft)}}.card-meta-row{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-bottom:1.25rem}.type-eyebrow{display:inline-block;font-size:.65rem;letter-spacing:.08em;text-transform:uppercase;color:var(--sumi-soft);border:1px solid var(--rule);padding:.15rem .5rem}.kind-label{display:block;font-size:.8rem;color:var(--sumi-soft)}.character{font-family:Shippori Mincho,serif;font-size:4.5rem;line-height:1;margin-bottom:2rem}.character img{height:4.5rem}.answer-actions{display:flex;gap:.5rem;margin-bottom:.75rem}.feedback>.answer-actions{margin-bottom:0}.answer-actions button,.chat-lang-toggle button,.book-item .book-delete{background:none;border:1px solid var(--rule);color:var(--sumi-soft)}.answer-actions button:hover,.chat-lang-toggle button:hover,.book-item .book-delete:hover{border-color:var(--sumi-soft);color:var(--sumi)}.answer-actions button,.chat-lang-toggle button{font-size:.8rem;padding:.55rem}.feedback>p{font-size:1.1rem;margin-bottom:0}.feedback>*+*{margin-top:1rem}.feedback .correct{color:var(--midori)}.feedback .incorrect{color:var(--shu-deep)}.mnemonic{text-align:left;font-size:.85rem;line-height:1.6;color:var(--sumi-soft);border-top:1px solid var(--rule);padding-top:1rem}.lesson-info{text-align:left}.lesson-field{font-size:1.05rem;margin-bottom:.75rem}.lesson-field-label{display:block;font-size:.8rem;color:var(--sumi-soft);margin-bottom:.15rem}.chat-entry{margin-top:.75rem;background:none;border:1px solid var(--white);color:var(--sumi)}.chat-entry:hover{background:var(--ai-deep)}.chat-shell{width:100%;max-width:480px;height:85vh;display:flex;flex-direction:column}.chat-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.chat-messages{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:.6rem;padding:.5rem 0}.chat-empty{text-align:center;margin-top:2rem}.chat-bubble{max-width:80%;padding:.6rem .85rem;border-radius:4px;line-height:1.5;white-space:pre-wrap}.chat-bubble.user{align-self:flex-end;background:var(--ai);color:var(--sumi)}.chat-bubble.assistant{align-self:flex-start;background:var(--washi-deep);border:1px solid var(--rule)}.chat-typing{opacity:.6;font-style:italic}.chat-lang-toggle{display:flex;gap:.5rem}.chat-lang-toggle button.active{border-color:var(--ai);color:var(--sumi);background:var(--ai-deep)}.chat-input-row{display:flex;gap:.5rem;margin-top:.75rem}.chat-input-row input{flex:1;margin-bottom:0}.chat-input-row button{width:auto;padding:.75rem 1.25rem}.book-list{list-style:none;padding:0;margin:1rem 0 0;display:flex;flex-direction:column;gap:.5rem}.book-item{display:flex;align-items:center;gap:.5rem;padding:.6rem .75rem;border:1px solid var(--rule)}.book-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.book-item button{width:auto;padding:.5rem .85rem;font-size:.8rem}.reader-shell{width:100%;max-width:480px;min-width:0;height:90vh;display:flex;flex-direction:column;overflow:hidden}.reader-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.reader-header .book-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reader-header .link{flex-shrink:0}.reader-header-actions{display:flex;gap:.75rem;margin-left:auto}.reader-viewport-wrap{position:relative;flex:1;min-height:0;min-width:0;overflow:hidden;border:1px solid var(--rule);background:var(--washi-deep)}.reader-viewport{width:100%;height:100%}.reader-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:var(--sumi-soft);background:var(--washi-deep)}.reader-nav{display:flex;gap:.5rem;margin-top:.75rem}.reader-nav button{flex:1}.reader-nav button.active{border:1px solid var(--ai);background:var(--ai-deep);color:var(--sumi)}.reader-selection{margin-bottom:.75rem;padding:.75rem 1rem;border:1px solid var(--rule);background:var(--washi-deep);max-height:35vh;overflow-y:auto}.reader-selection-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.reader-selection-header .link{flex-shrink:0}.selection-text{font-style:italic;color:var(--sumi-soft);margin:0 0 .5rem}.explanation{line-height:1.6;white-space:pre-wrap;margin:0}.feedback .explanation{margin-top:1rem;margin-bottom:0}.reader-selection .explanation{margin-top:.5rem}@media (min-width: 768px){.card,.review-shell{max-width:480px}.chat-shell,.reader-shell{max-width:720px;max-height:700px}}
