:root{--paper:#f5efdf;--panel:#e9e1ce;--ink:#293b32;--muted:#586455;--line:#cfc7b1;--wood:#74513b;--accent:#a34f2f;--green:#45664c;--light:#fffaf0;--gold:#e9bc6b;--red:#933d2b;--ease:cubic-bezier(.22,1,.36,1);font-family:"Yu Gothic","Microsoft JhengHei","Noto Sans CJK TC",sans-serif;color:var(--ink);background:#283c31;font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,a,input,select{touch-action:manipulation}button,input,select{font:inherit}button{cursor:pointer;color:inherit;min-height:44px;border:1px solid var(--line);padding:10px 17px;background:transparent;border-radius:2px;transition:background-color 180ms ease,border-color 180ms ease}button:hover{background:#e2d7c0;border-color:var(--wood)}button:disabled{cursor:not-allowed;opacity:.55}button.primary{background:var(--accent);color:var(--light);border-color:var(--accent);font-weight:700;box-shadow:0 3px 0 #693b2a}button.primary:hover{background:#823c22}button.primary:active{transform:translateY(2px);box-shadow:0 1px 0 #693b2a}a{color:inherit}button:focus-visible,a:focus-visible,summary:focus-visible,canvas:focus-visible,input:focus-visible{outline:3px solid #406c8b;outline-offset:4px}.quiet{border:0;min-height:44px;padding:8px 12px;color:var(--muted);font-size:13px}.app-shell{max-width:1312px;margin:20px auto;background:var(--paper);padding:0 42px;min-height:calc(100vh - 40px)}.masthead{display:flex;align-items:center;gap:24px;justify-content:space-between;padding:23px 0 18px}.wordmark{display:flex;gap:13px;align-items:center;text-decoration:none;font-family:"Yu Mincho","PMingLiU",serif;font-size:24px;font-weight:700;letter-spacing:.08em}.wordmark small{display:block;font-family:monospace;font-size:10px;font-weight:400;letter-spacing:.17em;margin-top:5px}.seal{display:grid;place-items:center;background:var(--accent);color:var(--paper);width:38px;height:44px;font-size:25px;border:3px double #df9f70}.edition{margin-left:auto;font-size:12px;color:var(--muted)}.hud{display:flex;gap:25px;align-items:center;padding:12px 0 16px;border-bottom:1px solid var(--line);font-size:12px}.hud strong{font:17px ui-monospace,Consolas,monospace;margin-left:7px}.xp{display:flex;gap:10px;align-items:center}.xp progress{width:94px;height:6px}.badge{border:1px solid var(--wood);padding:4px 9px;font-size:11px;color:var(--wood)}progress{accent-color:var(--green);height:7px;border:0;background:var(--line)}progress::-webkit-progress-bar{background:var(--line)}progress::-webkit-progress-value{background:var(--green)}.home-heading{display:flex;justify-content:space-between;align-items:end;padding:29px 0 21px}.home-heading h1{font-family:"Yu Mincho","PMingLiU",serif;font-size:35px;font-weight:600;letter-spacing:.05em;margin:0 0 7px}.home-heading p,.subtle{color:var(--muted);font-size:13px;line-height:1.7;margin:0}.chapter-note{text-align:right;font-family:ui-monospace,monospace;font-size:11px;color:var(--muted);line-height:1.8}.home-grid{display:grid;grid-template-columns:minmax(0,2.25fr) minmax(255px,1fr);gap:28px}.world-wrap{border:5px solid var(--wood);background:#6e8d55;position:relative;image-rendering:pixelated;align-self:start}.world-wrap:before,.world-wrap:after{content:"";position:absolute;z-index:1;width:10px;height:10px;background:var(--gold);border:2px solid #4f3528;pointer-events:none;top:-6px}.world-wrap:before{left:-6px}.world-wrap:after{right:-6px}.world-wrap canvas{display:block;width:100%;height:auto;image-rendering:pixelated;aspect-ratio:8/5;outline-offset:7px}.world-label{position:absolute;background:#f5efdfed;padding:3px 8px;font-size:11px;pointer-events:none;border-bottom:2px solid #9b7250;color:#403c2b}.world-label.inn{left:12%;top:39%}.world-label.dojo{left:63%;top:32%}.world-label.home{left:9%;top:79%}.world-label.arena{left:75%;top:70%}.world-caption{font-size:12px;color:var(--muted);display:flex;justify-content:space-between;gap:12px;padding:12px 0}.world-caption kbd{font:11px monospace;padding:2px 4px;border:1px solid var(--line)}.quest-panel{padding:23px 0 0;display:flex;flex-direction:column;min-width:0}.eyebrow{font-size:11px;color:var(--muted);letter-spacing:.12em;margin:0 0 15px}.quest-panel h2{font-family:"Yu Mincho","PMingLiU",serif;font-size:26px;font-weight:600;line-height:1.45;margin:0 0 13px}.quest-panel p{font-size:14px;line-height:1.8;margin:0 0 22px}.quest-panel .primary{width:100%;text-align:left;display:flex;justify-content:space-between;gap:12px}.goal-wrap{margin-top:27px;font-size:12px}.goal-wrap .row{margin-bottom:9px}.goal-wrap progress{width:100%;display:block}.fox-note{margin-top:auto;padding-top:24px;display:flex;gap:12px;align-items:start}.fox-face{flex:0 0 38px;height:38px;background:var(--gold);clip-path:polygon(0 0,30% 20%,70% 20%,100% 0,100% 70%,70% 100%,30% 100%,0 70%);position:relative}.fox-face:before{content:"· ·";position:absolute;left:9px;top:7px;font:bold 23px monospace;white-space:pre;letter-spacing:1px}.fox-note p{font-size:12px;line-height:1.8;color:var(--muted);margin:0}.secondary{margin-top:21px;border-top:1px solid var(--line);padding:14px 0}.secondary summary{cursor:pointer;font-size:13px;min-height:30px;display:list-item;list-style-position:inside;color:var(--muted)}.secondary nav{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.secondary nav button{font-size:13px}.row{display:flex;align-items:center;justify-content:space-between;gap:12px}.dpad{display:none;grid-template-columns:44px 44px 44px;gap:5px;justify-content:center}.dpad button{background:#eee5d0;padding:8px}.dpad .up{grid-column:2}.dpad .left{grid-column:1}.dpad .interact{grid-column:2}.dpad .right{grid-column:3}.dpad .down{grid-column:2}.screen{max-width:850px;margin:0 auto;padding:25px 0 40px}.backbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px;gap:12px;font-size:12px;color:var(--muted)}.screen h1{font-family:"Yu Mincho","PMingLiU",serif;font-size:30px;line-height:1.4;margin:0 0 12px}.screen>.subtle{margin-bottom:25px}.learning{display:grid;grid-template-columns:170px minmax(0,1fr);gap:34px}.lesson-scene{background:#dce1bf;position:relative;min-height:290px;display:flex;align-items:end;justify-content:center;padding:20px}.lesson-scene:before{content:"";height:70px;position:absolute;bottom:0;left:0;right:0;background:#87966a}.lesson-scene canvas{position:relative;width:110px;height:132px;image-rendering:pixelated}.lesson-scene span{position:absolute;top:18px;left:16px;font-size:12px;line-height:1.8}.lesson-body{min-width:0}.jp{font-family:"Yu Gothic","Noto Sans CJK JP","MS Gothic",sans-serif;line-height:1.65;word-break:normal;overflow-wrap:anywhere}.teaching-jp{font-size:clamp(25px,3.1vw,41px);font-weight:600;margin:15px 0 4px}.kana-large{font-size:66px}.reading{font:14px ui-monospace,Consolas,monospace;color:var(--muted);margin:0 0 22px}.meaning{font-size:20px;font-weight:600;margin:0 0 12px}.lesson-copy{font-size:14px;line-height:1.9;color:var(--muted);margin-bottom:20px}.lesson-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:22px}.lesson-actions .primary{margin-left:auto}.step{font:12px ui-monospace,monospace;letter-spacing:.03em;color:var(--muted);margin-bottom:12px}.lesson-progress{width:100%;display:block;margin:0 0 25px}.question-prompt{font-size:21px;line-height:1.65;font-weight:600;margin:10px 0 22px}.answers{display:grid;gap:10px}.answers button{min-height:57px;text-align:left;font-size:19px;padding:14px 18px;display:flex;align-items:center;gap:14px;background:#fbf7eb;line-height:1.5}.answers .key{font:11px ui-monospace,monospace;color:var(--muted);flex:none}.answers button.chosen{border:2px solid var(--green)}.answers button.incorrect{border-color:var(--red)}.answers button:disabled{opacity:1;cursor:default}.audio-box{background:#e8e1cf;padding:15px;margin-bottom:16px}.audio-box .jp{font-size:21px;margin:9px 0}.audio-state{font-size:12px;line-height:1.7;color:var(--muted);margin-top:9px}.feedback{margin-top:17px;padding:15px 17px;border-left:3px solid var(--green);background:#e4ead7;font-size:14px;line-height:1.8}.feedback.wrong{border-color:var(--accent);background:#eedfcd}.feedback strong{display:block;margin-bottom:4px}.hint{margin-top:12px;font-size:14px;line-height:1.8;background:var(--panel);padding:12px}.warning{padding:12px 16px;background:#f2ddc9;border-left:3px solid var(--accent);font-size:13px;line-height:1.8}.unit-list{display:grid;gap:0;margin:18px 0}.unit-row{padding:16px 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:54px minmax(0,1fr) auto;align-items:center;gap:15px}.unit-row .number{font:16px ui-monospace,monospace;color:var(--muted)}.unit-row strong{font-size:16px}.unit-row p{font-size:12px;line-height:1.8;margin:5px 0;color:var(--muted)}.unit-row button{font-size:13px}.boss-banner{display:flex;align-items:center;gap:27px;background:#dfd6bd;padding:25px;margin-bottom:25px}.boss-banner canvas{width:120px;height:120px;image-rendering:pixelated;flex:none}.boss-banner p{font-size:14px;line-height:1.9;margin:8px 0}.boss-status{display:flex;gap:20px;flex-wrap:wrap;font-size:13px;margin-bottom:16px}.shield{color:var(--wood);font:17px ui-monospace,monospace}.checklist{padding:0;list-style:none;font-size:14px;line-height:2.2}.checklist li:before{content:'□';margin-right:9px}.checklist li.done:before{content:'✓';color:var(--green)}.result-score{font:54px ui-monospace,monospace;letter-spacing:-.05em;margin:15px 0}.result-score small{font-size:21px;color:var(--muted)}.result-columns{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);margin:23px 0}.result-columns div{padding:15px;background:var(--paper);font-size:13px}.result-columns strong{display:block;font:23px ui-monospace,monospace;margin-top:8px}.review-item{border-bottom:1px solid var(--line);padding:15px 0;font-size:14px;line-height:1.8}.review-item .jp{font-size:18px}.setting-row{display:flex;gap:13px;align-items:start;padding:16px 0;border-bottom:1px solid var(--line);font-size:14px;line-height:1.7}.setting-row input{width:19px;height:19px;accent-color:var(--green);margin-top:2px;flex:none}.setting-row small{display:block;color:var(--muted);font-size:12px}.manual-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}.import-preview{background:var(--panel);padding:18px;margin-top:15px}.calendar{display:flex;gap:6px;flex-wrap:wrap;margin:15px 0}.calendar span{display:grid;place-items:center;width:35px;height:38px;border:1px solid var(--line);font:11px monospace}.calendar .active{background:var(--green);color:var(--light)}footer{display:flex;justify-content:space-between;gap:16px;color:var(--muted);font-size:11px;padding:24px 0;border-top:1px solid var(--line);margin-top:24px}.sr-only,.skip:not(:focus){position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip:focus{position:absolute;z-index:5;background:white;padding:12px}.empty{padding:22px 0;font-size:15px;line-height:1.9}.reward{font-size:14px;color:var(--wood);padding:15px 0}.inline-link{padding:0 3px;text-decoration:underline;min-height:34px;border:0;font-size:12px}.route-label{font-size:11px;color:var(--muted);padding:4px 0}main:focus{outline:none}
@media(max-width:900px){.app-shell{margin:10px;padding:0 23px;min-height:calc(100vh - 20px)}.home-grid{grid-template-columns:minmax(0,1.7fr) minmax(230px,1fr);gap:20px}.quest-panel{padding-top:6px}.quest-panel h2{font-size:23px}.hud{gap:16px}.home-heading h1{font-size:31px}.fox-note{padding-top:19px}.learning{grid-template-columns:125px minmax(0,1fr);gap:23px}}
@media(max-width:680px){.app-shell{margin:0;padding:0 19px;min-height:100vh}.masthead{padding:18px 0 13px;gap:8px}.wordmark{font-size:21px;gap:9px}.seal{width:31px;height:37px}.wordmark small{font-size:8px}.edition{display:none}.hud{flex-wrap:wrap;gap:11px 17px;padding:10px 0;font-size:11px}.hud strong{font-size:14px}.xp progress{width:65px}.home-heading{padding:23px 0 17px}.home-heading h1{font-size:28px}.chapter-note{display:none}.home-grid{display:flex;flex-direction:column;gap:18px}.quest-panel{order:-1;padding:0}.quest-panel h2{font-size:23px;margin-bottom:8px}.quest-panel p{font-size:13px;margin-bottom:14px}.quest-panel .eyebrow{margin-bottom:9px}.goal-wrap{margin-top:18px}.fox-note{display:none}.world-caption{font-size:11px}.world-caption>span:last-child{display:none}.dpad{display:grid;margin:0 auto 10px}.secondary{margin-top:12px}.learning{display:block}.lesson-scene{display:none}.screen{padding-top:20px}.screen h1{font-size:26px}.backbar{margin-bottom:18px}.teaching-jp{font-size:30px}.kana-large{font-size:65px}.question-prompt{font-size:19px}.answers button{font-size:18px;min-height:58px}.lesson-actions .primary{margin-left:0;flex:1}.boss-banner{padding:17px;gap:15px}.boss-banner canvas{width:80px;height:80px}.boss-banner p{font-size:13px}.unit-row{grid-template-columns:40px minmax(0,1fr) auto;gap:9px}.unit-row button{padding:8px 11px}.result-score{font-size:46px}.result-columns div{padding:10px;font-size:12px}footer{font-size:10px}.world-label{font-size:10px;padding:2px 5px}.world-label.arena{left:73%}}
@media(max-width:680px){.home-heading h1{font-size:26px;letter-spacing:.02em}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}body.reduce-motion *,body.reduce-motion *:before,body.reduce-motion *:after{transition:none!important;animation:none!important}
