:root{--ink:#173e35;--green:#0a8a5d;--line:#deebe1;--muted:#60796c;--paper:#f7faf5;--pace:1;font-family:ui-rounded,'Hiragino Maru Gothic ProN','Yu Gothic',Meiryo,sans-serif;color:var(--ink);font-size:16px;line-height:1.7}*{box-sizing:border-box}body{margin:0;background:var(--paper)}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{cursor:wait;opacity:.6}a{color:#096d4b;text-underline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #f3af34;outline-offset:4px}[hidden]{display:none!important}img{max-width:100%;height:auto}h1,h2,h3,p{margin-top:0}button{touch-action:manipulation}.skip-link{position:fixed;top:-100px;left:12px;background:#fff;padding:12px;z-index:99}.skip-link:focus{top:12px}.site-header{background:#fff;border-bottom:1px solid var(--line)}.header-inner{max-width:1240px;margin:auto;min-height:86px;display:flex;align-items:center;justify-content:space-between;gap:22px;padding:10px 30px}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;flex-shrink:0;color:#086b47}.brand img{width:49px;height:49px}.brand>span{font-size:27px;font-weight:900;line-height:1.3;letter-spacing:.5px}.brand small{display:block;font-size:12px;letter-spacing:1.1px;color:#6b8b75;font-weight:600;margin-top:4px}.header-inner nav{display:flex;gap:30px;align-items:center}.header-inner nav a{font-size:14px;text-decoration:none;font-weight:700;color:#5e7769;padding:11px 0;white-space:nowrap}.header-inner nav a[aria-current]{color:var(--green);box-shadow:0 2px 0 var(--green)}.header-badge{background:#e8f6df;border:1px solid #d9ebca;border-radius:30px;padding:5px 14px;font-size:12px;font-weight:700;white-space:nowrap;color:#628246}.home-main{max-width:1180px;margin:auto;padding:27px 30px 45px}.intro{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px}.eyebrow{display:block;font-size:12px;letter-spacing:1.2px;font-weight:800;color:#59916c;margin-bottom:5px}h1{font-size:27px;line-height:1.55;letter-spacing:-.5px;margin-bottom:5px}.intro p{font-size:14px;color:#79917f;margin:0}.outline-button{padding:9px 15px;border:1px solid #d6e5d8;border-radius:10px;background:white;font-size:14px;font-weight:700;white-space:nowrap}.outline-button:hover{background:#eaf5e4}.section-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px;gap:10px}.section-row h2{font-size:15px;letter-spacing:.4px;margin:0}.section-row>span{font-size:12px;color:#7c937f}.level-picker{margin-bottom:22px}.level-grid{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:9px}.level-card{position:relative;border:1.5px solid #e0eade;border-bottom-width:4px;border-radius:14px;display:flex;flex-direction:column;align-items:center;background:#fff;padding:8px 7px 7px;transition:transform .15s,border-color .15s}.level-card:hover{transform:translateY(-3px)}.level-card.selected{border-color:#6bba78;background:#edfae6}.level-number{position:absolute;left:7px;top:5px;width:20px;height:20px;background:#edf3e9;border-radius:6px;font-size:12px;font-weight:900;line-height:20px}.selected .level-number{color:white;background:var(--green)}.level-card img{width:53px;height:53px;object-fit:contain;margin:4px 0 1px}.level-size{font-size:15px;line-height:1.4;font-weight:900;letter-spacing:.5px}.level-size small{font-size:12px;margin-left:3px;font-weight:400}.level-mini-progress{width:80%;height:4px;border-radius:6px;background:#e1e8dc;margin-top:5px;overflow:hidden}.level-mini-progress i{display:block;background:var(--green);height:100%;width:0}.level-done{font-size:12px;color:#82947d;line-height:1.5;margin-top:3px}.game-shell{background:white;border:1px solid #d6e6d7;border-radius:20px;box-shadow:0 6px 0 #e0eadb,0 10px 25px #2a6a3510;overflow:hidden}.game-toolbar{padding:15px 22px;display:flex;justify-content:space-between;align-items:center;gap:12px;background:#fff}.stage-title{display:flex;gap:12px;align-items:center}.stage-title h2{font-size:17px;margin:0;font-weight:900}.stage-label{font-size:12px;color:#16845f;font-weight:800;background:#edf8e8;border-radius:7px;padding:4px 9px;white-space:nowrap}.game-tools{display:flex;align-items:center;gap:7px}.round-button{font-size:12px;border:1px solid #dce8df;background:#fbfdf9;border-radius:8px;padding:6px 10px;white-space:nowrap;font-weight:700}.round-button:hover{background:#eef6e9}.round-button:disabled{cursor:default}.scoreboard{display:grid;grid-template-columns:repeat(6,1fr);background:#f7faf5;border-top:1px solid #edf1e8;border-bottom:1px solid #dce9db;padding:10px 10px}.scoreboard>div{text-align:center;border-right:1px solid #e0e9dc}.scoreboard>div:last-child{border:0}.scoreboard span{display:block;font-size:12px;color:#7b917c;line-height:1.4}.scoreboard strong{display:block;font-size:24px;line-height:1.3;font-weight:900;font-variant-numeric:tabular-nums;color:#196b52;margin-top:4px}.scoreboard>div:nth-child(2) strong,.scoreboard>div:nth-child(4) strong{color:#d78857}.scoreboard abbr{text-decoration:none;cursor:help}.game-stage{position:relative;height:310px;overflow:hidden;background:#59cff0;isolation:isolate;--ground:#93d76b;--scene:#59cff0;--accent:#fff68b;--actor-x:10%;--word-ratio:0;--round-ratio:0;transition:background .4s}.stage-2{--scene:#70dcd6;--ground:#59bda3;background:var(--scene)}.stage-3{--scene:#83ccf8;--ground:#d0c6ff;background:var(--scene)}.stage-4{--scene:#b0e7fb;--ground:#e0f7ff;background:var(--scene)}.stage-5{--scene:#ffe6a7;--ground:#b1d47b;background:var(--scene)}.stage-6{--scene:#88d9ed;--ground:#f0cb8e;background:var(--scene)}.stage-7{--scene:#4c609b;--ground:#7085ad;--accent:#ffffbe;background:var(--scene)}.stage-8{--scene:#aae8da;--ground:#68b4b8;background:var(--scene)}.stage-9{--scene:#c6e698;--ground:#88b76d;background:var(--scene)}.stage-topline,.stage-bottomline{position:absolute;left:23px;right:23px;display:flex;justify-content:space-between;gap:10px;z-index:3;font-size:12px;font-weight:700}.stage-topline{top:13px;color:#215c64}.stage-bottomline{bottom:10px;color:#225744}.stage-7 .stage-topline,.stage-7 .stage-bottomline{color:white}.stage-decoration{position:absolute;inset:0;opacity:.35;pointer-events:none}.stage-orb{position:absolute;width:100px;height:100px;border:15px solid #fff7;border-radius:50%;left:7%;top:15%;transform:rotate(15deg)}.stage-orb:nth-child(2){left:83%;top:17%;width:55px;height:55px;border-width:9px}.stage-orb:nth-child(3){left:64%;top:63%;height:18px;width:18px;border:0;background:#fff9}.game-lane{position:absolute;inset:0;pointer-events:none}.lane-track{position:absolute;bottom:0;height:55px;left:0;right:0;background:var(--ground);border-top:6px solid #ffffff4d}.lane-track:after{content:'';height:4px;position:absolute;left:2%;right:2%;top:20px;background:repeating-linear-gradient(90deg,#fff8 0 19px,transparent 19px 46px);opacity:.4}.main-character{position:absolute;width:133px;height:133px;object-fit:contain;left:var(--actor-x);bottom:33px;z-index:2;transform-origin:50% 90%;transition:left .6s ease;animation:idle calc(2s / var(--pace)) ease-in-out infinite}.game-target{position:absolute;right:13%;top:100px;font-size:33px;font-weight:900;min-width:63px;height:67px;text-align:center;line-height:65px;background:#fff9b9;color:#487158;border:3px solid #fff;border-bottom:6px solid #d2b66c;border-radius:16px;animation:target-float calc(3s / var(--pace)) ease-in-out infinite;z-index:1}.reward-object{position:absolute;font-size:44px;right:15%;bottom:69px;color:#ffeb74;text-shadow:0 3px 0 #d6a635;transition:transform .3s;opacity:0}.collected-items{position:absolute;bottom:51px;left:26%;right:24%;display:flex;gap:5px;align-items:flex-end;height:74px;pointer-events:none}.collected-items>span{width:14px;height:14px;border-radius:4px;background:#fff29d;border:2px solid #fff8;box-shadow:0 3px 0 #729f6640;display:block}.welcome-panel,.word-panel,.pause-panel,.round-panel{position:relative;margin:auto;text-align:center;z-index:4}.welcome-panel,.pause-panel,.round-panel{max-width:400px;margin-top:44px;border:2px solid #fff;border-radius:21px;background:#fffffff5;padding:18px 25px 14px;box-shadow:0 7px 0 #1a6f5430}.welcome-tag{font-size:12px;font-weight:800;letter-spacing:.9px;color:#69a374}.welcome-panel h3,.pause-panel h3,.round-panel h3{font-size:23px;margin:4px 0 8px;line-height:1.5;font-weight:900}.welcome-panel p,.pause-panel p,.round-panel p{font-size:14px;line-height:1.7;margin:0 0 11px;color:#758b78}.play-button{background:var(--green);border:1px solid #057e53;border-bottom:4px solid #05603f;color:#fff;border-radius:12px;font-weight:900;font-size:17px;padding:9px 22px;min-width:180px;transition:transform .15s,background .15s}.play-button:hover{background:#077c52;transform:translateY(-2px)}.play-button:active{transform:translateY(2px)}.welcome-panel small{font-size:12px;color:#8a9e86;display:block;margin-top:8px}.word-panel{padding:47px 25px 18px;max-width:680px;pointer-events:none}.word-reading{display:table;margin:0 auto 3px;font-size:16px;color:#285a56;background:#ffffffae;border-radius:20px;padding:1px 13px;font-weight:700}.word-japanese{display:table;margin:0 auto;font-size:43px;line-height:1.45;font-weight:900;color:#224d42;text-shadow:0 2px 0 #fff7;background:#ffffffed;border-radius:17px;padding:0 24px 6px;max-width:95%;overflow-wrap:anywhere}.romaji-line{font-family:ui-monospace,'Cascadia Code',Consolas,monospace;font-size:28px;letter-spacing:1px;display:table;margin:10px auto 0;padding:4px 13px 7px;background:#ffffffe8;border-radius:10px;line-height:1.35;color:#557867;max-width:100%;overflow-wrap:anywhere;min-height:49px}.romaji-typed{color:#138847;opacity:.55}.romaji-next{border-bottom:4px solid #ecaf43;background:#fff0aa;color:#1b5e47;border-radius:4px;padding:0 1px}.word-timebar{width:180px;max-width:80%;height:5px;background:#ffffff7a;border-radius:10px;margin:10px auto 0;overflow:hidden}.word-timebar span{height:100%;display:block;background:#ffd56a;width:100%;transform-origin:left}.typing-feedback{font-size:12px;font-weight:700;min-height:23px;display:table;margin:6px auto 0;padding:1px 10px;border-radius:8px;color:#754524;background:#fff4dbdd}.typing-feedback:empty{background:transparent}.text-button{display:block;margin:7px auto 0;background:none;border:0;color:#67816b;font-size:13px;font-weight:700;padding:4px 9px}.round-stars{font-size:26px;color:#f6b744;line-height:1;text-shadow:0 2px 0 #d69a33;letter-spacing:7px}.round-panel h3{margin-top:8px}.round-panel{margin-top:33px}.round-panel p{font-size:14px}.level-progress-row{display:flex;align-items:center;gap:14px;padding:9px 23px;background:#eff8e7;border-bottom:1px solid #dfebd5;color:#64835f;font-size:12px}.level-progress-row>span:first-child{min-width:200px}.level-progress-row>span:last-child{min-width:35px;text-align:right;font-weight:700}.level-progress-row progress{flex:1;height:6px;border:0;border-radius:8px;overflow:hidden;background:#dce8ce;appearance:none}.level-progress-row progress::-webkit-progress-bar{background:#dce8ce}.level-progress-row progress::-webkit-progress-value{background:#6ab578}.level-progress-row progress::-moz-progress-bar{background:#6ab578}.keyboard-area{padding:12px 24px 13px}.keyboard-instructions{display:flex;justify-content:space-between;gap:10px;color:#5d816c;font-size:12px;font-weight:700;margin-bottom:8px}.input-mode-note{color:#93a18c;font-weight:400}.keyboard{max-width:650px;margin:0 auto;display:flex;flex-direction:column;gap:4px}.key-row{display:flex;align-items:center;justify-content:center;gap:5px}.keyboard-key{position:relative;flex:1;max-width:47px;height:28px;display:grid;place-items:center;font-family:inherit;border:1px solid #dfe8dc;border-bottom:3px solid #d5dfd2;background:#f8faf5;border-radius:6px;font-size:12px;font-weight:700;line-height:1;color:#78947b;transition:background .08s}.key-row:nth-child(2){padding:0 22px}.key-row:nth-child(3){padding:0 45px}.key-row:last-child .keyboard-key{max-width:235px;height:21px;font-size:12px;flex:1}.keyboard-key.home:after{content:'';position:absolute;width:7px;height:2px;bottom:2px;background:#9cb692;border-radius:2px}.keyboard-key.next{background:#ffe089;color:#655324;border-color:#d5b75e;border-bottom-color:#c2a34a;box-shadow:0 0 0 2px #ffedba66}.keyboard-key.pressed{background:#a3deb8;transform:translateY(2px);border-bottom-width:1px}.keyboard-key.missed{background:#ffd6ce;color:#ae5d4e;border-color:#ecb1a3}.hands-row{position:relative;max-width:650px;margin:2px auto 0;height:100px}.hands-diagram{height:100px;width:100%;display:block}.hand-palm{fill:#e5edde}.finger{fill:#dbe8d2;stroke:#d0dfc6;stroke-width:2;transition:fill .12s}.finger.active{fill:#ffce5f;stroke:#d7a633;stroke-width:3;filter:drop-shadow(0 0 4px #eeca56a0)}.hands-diagram text{font-size:12px;fill:#9aaa92;font-family:inherit;font-weight:700}.finger-callout{position:absolute;left:50%;top:5px;transform:translateX(-50%);text-align:center;width:140px}.finger-callout>span{display:block;font-size:12px;color:#96a58a}.finger-callout strong{display:block;font-size:13px;color:#647e56}.finger-callout kbd{display:inline-block;font:900 18px/1.4 inherit;color:#a87823;background:#fff5d5;border:1px solid #ecd7a6;border-radius:6px;padding:0 7px;margin-top:4px}.mobile-input-wrap{display:none;margin-top:10px}.mobile-input-wrap label{font-size:12px;color:#749173;display:block;margin-bottom:5px}.mobile-input-wrap input{width:100%;border:1px solid #b4d7b5;border-radius:9px;background:#f7fcf4;padding:10px;font-size:16px;color:var(--ink)}.game-bottom-note{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:#91a38c;gap:10px}.game-bottom-note kbd{font:inherit;color:#658663;border:1px solid #dfebd8;padding:0 3px;border-radius:4px}.stage-2 .game-target{animation:catch-fall calc(5s / var(--pace)) ease-in-out infinite;border-radius:50%;background:#d6ffd3}.stage-3 .game-target{border-radius:50% 50% 45% 45%;background:#ffd4f0;animation:balloon calc(4s / var(--pace)) ease-in-out infinite}.stage-4 .main-character{animation:slide calc(3s / var(--pace)) ease-in-out infinite}.stage-4 .lane-track:after{opacity:.75}.stage-5 .game-target{background:#ffe473}.stage-5 .collected-items{width:115px;right:auto;left:auto;right:20%;flex-wrap:wrap;gap:3px;align-content:flex-end}.stage-5 .collected-items>span{width:27px;height:18px;background:#fbc85e;border-color:#ffe4a2}.stage-6 .main-character{animation:trot calc(.8s / var(--pace)) ease-in-out infinite}.stage-6 .game-target{background:#fff0d5;transform:rotate(8deg)}.stage-7 .game-target{color:#dac246;background:#fffbdd;box-shadow:0 0 25px #ffffad66;animation:target-float calc(3s / var(--pace)) ease-in-out infinite}.stage-7 .collected-items>span{border:0;background:none;color:#fff5a5;font-size:18px;line-height:1;height:20px;width:20px;box-shadow:none}.stage-7 .main-character{animation:fly calc(2s / var(--pace)) ease-in-out infinite}.stage-8 .game-target{border-radius:12px;background:#e4fffa;animation:beat calc(1s / var(--pace)) linear infinite}.stage-8 .collected-items>span:nth-child(2n){height:30px;background:#96e6db}.stage-9 .main-character{animation:fly calc(2s / var(--pace)) ease-in-out infinite}.game-stage[data-phase="paused"] *{animation-play-state:paused!important}.game-stage[data-phase="ready"] .collected-items,.game-stage[data-phase="ready"] .game-target,.game-stage[data-phase="round"] .game-target{opacity:.65}.game-stage.success .main-character{animation:jump calc(.55s / var(--pace)) ease-out!important}.game-stage.success .reward-object{animation:reward .8s ease-out forwards;opacity:1}.game-stage.error .romaji-line{animation:shake .2s ease-out}.game-stage.success.stage-2 .main-character{animation:catch-jump .5s ease-out!important}.game-stage.success.stage-3 .game-target{animation:pop .4s ease-out!important}.game-stage.success.stage-4 .main-character{animation:swoosh .6s ease-out!important}.game-stage.success.stage-6 .main-character{animation:swoosh .6s ease-out!important}.game-stage.success.stage-8 .main-character{animation:robot-dance .5s ease-in-out!important}.game-stage.success.stage-9 .reward-object{animation:dragon-star .7s ease-out forwards}.guide-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:25px;margin:38px 0;padding:23px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.guide-strip>div{position:relative;padding-left:41px}.guide-strip b{position:absolute;left:0;top:0;border-radius:8px;background:#e7f1de;color:#77a26a;font-size:12px;padding:4px 7px}.guide-strip h2{font-size:16px;margin:0 0 6px}.guide-strip p{font-size:14px;line-height:1.8;color:#7d9177;margin:0}.seo-content{max-width:830px;margin:50px auto 0;color:#556d60}.seo-content h2{font-size:23px;line-height:1.6;color:#285d45;margin:35px 0 13px}.seo-content p{font-size:16px;line-height:2;margin-bottom:20px}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px;text-align:left;margin:15px 0 24px}caption{caption-side:top;text-align:left;font-weight:700;padding:7px 0;color:#52735b}th,td{padding:11px 13px;border-bottom:1px solid #dfe8d8}th{background:#edf3e6;font-weight:700;color:#55764b}tr:last-child td{border-bottom:0}details{border-bottom:1px solid #e0e7da;padding:15px 0}summary{font-size:16px;font-weight:700;cursor:pointer;color:#2d5a45}details p{font-size:15px!important;margin:12px 0 3px!important}.site-footer{padding:30px max(24px,calc((100vw - 1120px)/2));background:#edf3e8;border-top:1px solid #e1e9da;color:#7a9072;font-size:12px}.footer-brand{font-size:22px;font-weight:900;color:#547944;display:flex;gap:20px;align-items:center;margin-bottom:20px}.footer-brand span{font-size:12px;color:#8ea07f;font-weight:400}.site-footer nav{display:flex;flex-wrap:wrap;gap:12px 25px;margin-bottom:18px}.site-footer nav a{font-size:13px;color:#6c8561;text-decoration:none}.site-footer p{margin:7px 0;line-height:1.8}.site-footer p a{color:#739065}.site-footer small{display:block;margin-top:20px;font-size:12px}.document-main{max-width:880px;margin:auto;padding:34px 30px 70px}.back-link{font-size:14px;text-decoration:none;display:inline-block;margin-bottom:30px}.document-main h1{font-size:32px;margin-bottom:25px}.document-main h2{font-size:22px;margin:35px 0 12px}.document-main p{font-size:16px;line-height:2;color:#5b7461}.document-main .lead{font-size:18px;color:#759269}.document-date{font-size:13px!important;color:#8c9e82!important}.inline-cta{display:inline-block;font-size:16px;font-weight:700;color:#168155;padding:9px 0}.notice{padding:20px;background:#fff4d4;border:1px solid #e8d68e;border-radius:10px}.game-shell:fullscreen{width:100%;height:100%;border:0;border-radius:0;overflow:auto;background:#fff}.game-shell:fullscreen .game-stage{height:min(41vh,420px);min-height:290px}.game-shell:fullscreen .keyboard-area{max-width:900px;margin:auto}.game-shell:fullscreen .game-toolbar,.game-shell:fullscreen .scoreboard,.game-shell:fullscreen .level-progress-row{max-width:1180px;margin:auto}.game-shell:fullscreen .main-character{left:18%;width:160px;height:160px}.game-shell:fullscreen .game-target{right:20%}dialog{border:1px solid #d7e4ce;border-radius:21px;padding:28px;max-width:520px;width:calc(100% - 32px);color:var(--ink);box-shadow:0 20px 90px #173e3560}dialog::backdrop{background:#153d3570;backdrop-filter:blur(3px)}dialog h2{font-size:24px;margin:6px 0 22px}dialog p{font-size:15px;color:#6e8266}.close-dialog{position:absolute;right:13px;top:10px;border:0;background:none;font-size:28px;line-height:1.2;color:#83a178;cursor:pointer}.setting-row{display:block;font-size:16px;margin-top:18px}.setting-row>span{display:flex;justify-content:space-between;margin-bottom:12px;font-weight:700}.setting-row input{width:100%;accent-color:var(--green)}.setting-row output{color:var(--green)}.setting-help{font-size:13px!important;line-height:1.8;color:#8a9d7b!important}.check-row{display:flex;align-items:center;gap:9px;margin:15px 0;font-size:15px}.check-row input{width:18px;height:18px;accent-color:var(--green)}.danger-link{margin-top:17px;border:none;border-top:1px solid #e4ecde;padding:15px 0 0;background:none;color:#a76a56;font-size:13px}.danger-button{border:0;border-radius:9px;background:#b5674f;color:white;padding:10px 17px;font-weight:700}.dialog-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:23px}.record-summary{display:grid;grid-template-columns:1fr 1fr;gap:12px;background:#f0f7e9;border-radius:12px;padding:13px;font-size:14px}.record-summary strong{font-size:23px;display:block;color:var(--green)}.sr-only{position:absolute;width:1px;height:1px;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;overflow:hidden}
@keyframes idle{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes target-float{0%,100%{transform:translateY(0) rotate(4deg)}50%{transform:translateY(-10px) rotate(-4deg)}}@keyframes jump{0%,100%{transform:translateY(0) scale(1)}40%{transform:translateY(-65px) rotate(9deg) scale(1.04)}}@keyframes catch-jump{0%,100%{transform:translateY(0)}45%{transform:translate(22px,-55px) scale(1.1)}}@keyframes swoosh{0%,100%{transform:translateX(0) rotate(0)}50%{transform:translateX(90px) rotate(12deg)}}@keyframes robot-dance{0%,100%{transform:rotate(0)}25%{transform:rotate(-16deg)}75%{transform:rotate(16deg)}}@keyframes catch-fall{0%,100%{transform:translateY(-30px)}70%{transform:translateY(30px)}}@keyframes balloon{0%,100%{transform:translateY(15px) rotate(5deg)}50%{transform:translateY(-30px) rotate(-7deg)}}@keyframes slide{0%,100%{transform:rotate(-7deg)}50%{transform:translateX(12px) rotate(7deg)}}@keyframes trot{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-4px) rotate(3deg)}}@keyframes fly{0%,100%{transform:translateY(-2px) rotate(-4deg)}50%{transform:translateY(-15px) rotate(4deg)}}@keyframes beat{0%,100%{transform:scale(1)}20%{transform:scale(1.12)}}@keyframes reward{0%{transform:translateY(0) scale(.4);opacity:1}100%{transform:translateY(-100px) scale(1.3);opacity:0}}@keyframes dragon-star{0%{transform:translateX(-230px) scale(.3);opacity:1}100%{transform:translate(20px,-60px) scale(1.6);opacity:0}}@keyframes pop{0%{transform:scale(1)}55%{transform:scale(1.45);opacity:.8}100%{transform:scale(.4);opacity:0}}@keyframes shake{0%,100%{transform:translateX(0)}30%{transform:translateX(-5px)}70%{transform:translateX(5px)}}
@media(max-width:1024px){.header-inner{padding:10px 22px}.header-inner nav{gap:20px}.home-main{padding:24px 22px 35px}.intro{align-items:start}.intro h1{font-size:24px}.intro p{font-size:14px}.level-grid{gap:6px}.level-card{padding:7px 4px}.level-number{left:4px}.level-card img{width:45px;height:49px}.level-size{font-size:14px}.level-done{font-size:12px}.level-size small{margin-left:1px}.game-toolbar{padding:13px 15px}.stage-title{gap:8px}.stage-title h2{font-size:16px}.game-tools{gap:5px}.round-button{padding:5px 8px}.main-character{left:5%;width:115px;height:115px}.game-target{right:7%}.game-stage{height:310px}.word-panel{max-width:620px}.word-japanese{font-size:37px}.word-panel .romaji-line{font-size:24px}.guide-strip{gap:15px}.guide-strip>div{padding-left:35px}.guide-strip p{font-size:14px}.guide-strip h2{font-size:15px}.header-badge{padding:5px 9px}}
@media(max-width:760px){.header-inner{min-height:76px;padding:10px 17px;gap:14px}.brand img{width:41px;height:41px}.brand>span{font-size:24px}.brand small{font-size:12px;letter-spacing:.3px}.header-inner nav{gap:15px}.header-inner nav a{font-size:13px}.header-inner nav a:last-child{display:none}.header-badge{display:none}.home-main{padding:22px 17px 30px}.intro h1{font-size:23px}.intro{display:block}.intro .outline-button{margin-top:12px;padding:6px 12px;font-size:13px}.intro p{font-size:14px}.level-grid{grid-template-columns:repeat(9,minmax(66px,1fr));overflow-x:auto;padding-bottom:6px;scroll-snap-type:x proximity}.level-card{scroll-snap-align:start}.level-card img{width:44px;height:46px}.game-toolbar{flex-wrap:wrap;gap:10px;padding:12px 15px}.game-tools{margin-left:auto}.game-stage{height:330px}.main-character{width:100px;height:100px;left:3%;bottom:34px}.game-target{right:4%;top:auto;bottom:52px;min-width:46px;height:51px;line-height:46px;font-size:25px}.welcome-panel,.pause-panel,.round-panel{max-width:350px}.word-panel{padding:54px 15px 10px;max-width:580px}.word-japanese{font-size:34px}.romaji-line{font-size:24px!important;letter-spacing:.6px}.keyboard-area{padding:12px 16px}.mobile-input-wrap{display:block}.game-bottom-note{margin-top:12px;flex-wrap:wrap}.keyboard-instructions{flex-wrap:wrap;gap:2px}.keyboard-instructions>span{font-size:12px}.hands-row{height:95px}.hands-diagram{height:95px}.scoreboard strong{font-size:23px}.level-progress-row{padding:9px 15px;gap:10px}.level-progress-row>span:first-child{min-width:180px}.guide-strip{grid-template-columns:1fr;gap:20px;margin:32px 0}.guide-strip>div{padding-left:43px}.guide-strip h2{font-size:16px}.guide-strip p{font-size:15px}.seo-content{margin-top:35px}.seo-content h2{font-size:22px}.footer-brand{align-items:start;gap:10px;flex-direction:column}.document-main{padding:28px 22px 55px}.document-main h1{font-size:27px}.document-main h2{font-size:21px}}
@media(max-width:450px){.header-inner{padding:10px 13px;gap:12px}.brand{gap:7px}.brand>span{font-size:23px}.brand img{width:37px;height:37px}.brand small{font-size:12px;letter-spacing:0}.header-inner nav{gap:13px}.header-inner nav a{font-size:12px}.home-main{padding:20px 12px 30px}.intro h1{font-size:23px;line-height:1.5}.intro p{font-size:14px;line-height:1.9}.intro .outline-button{font-size:12px}.section-row h2{font-size:14px}.section-row>span{font-size:12px}.level-card{border-radius:11px}.game-shell{border-radius:15px}.game-toolbar{padding:12px;gap:8px}.stage-title h2{font-size:16px}.game-tools{width:100%;justify-content:flex-end;gap:5px}.round-button{font-size:12px;padding:5px 9px}.scoreboard{grid-template-columns:repeat(3,1fr);row-gap:11px;padding:11px 5px}.scoreboard>div:nth-child(3){border:0}.scoreboard span{font-size:12px}.scoreboard strong{font-size:23px}.game-stage{height:326px}.stage-topline,.stage-bottomline{left:13px;right:13px;font-size:12px}.main-character{width:86px;height:86px;bottom:29px;left:3%}.collected-items{left:27%;right:24%;bottom:47px;gap:3px}.collected-items>span{height:10px;width:10px}.game-target{right:6%;bottom:41px;min-width:40px;height:44px;line-height:40px;font-size:21px;border-radius:12px}.welcome-panel,.pause-panel,.round-panel{max-width:calc(100% - 36px);margin-top:44px;padding:17px 15px 13px}.welcome-panel h3,.pause-panel h3,.round-panel h3{font-size:21px}.welcome-panel p,.pause-panel p,.round-panel p{font-size:14px}.welcome-panel small{font-size:12px}.play-button{font-size:16px;padding:9px 17px}.word-panel{padding:49px 12px 0}.word-japanese{font-size:30px;max-width:100%;padding:2px 13px}.word-reading{font-size:14px}.romaji-line{font-size:21px!important;padding:5px 8px 6px;max-width:100%;min-height:39px}.typing-feedback{font-size:12px;max-width:95%}.stage-bottomline{font-size:12px;gap:5px}.stage-bottomline>span:first-child{max-width:220px}.level-progress-row{gap:7px;padding:8px 12px;flex-wrap:wrap}.level-progress-row>span:first-child{min-width:initial;width:100%}.level-progress-row progress{min-width:180px}.keyboard-area{padding:11px 10px}.key-row{gap:3px}.keyboard-key{height:27px;border-radius:5px;font-size:12px}.key-row:nth-child(2){padding:0 12px}.key-row:nth-child(3){padding:0 25px}.key-row:last-child .keyboard-key{height:20px;max-width:140px}.hands-row{height:89px;margin-top:5px}.hands-diagram{height:84px}.finger-callout{width:98px;top:5px}.finger-callout>span{font-size:12px;line-height:1.3}.finger-callout strong{font-size:12px;line-height:1.5}.finger-callout kbd{font-size:16px;line-height:1.3;margin-top:2px}.game-bottom-note{font-size:12px;line-height:1.6}.mobile-input-wrap label{font-size:12px;line-height:1.5}.seo-content h2{font-size:21px}.seo-content p{font-size:15px;line-height:2.1}th,td{padding:9px 8px;font-size:13px}.site-footer{padding:26px 20px}.site-footer nav{gap:10px 19px}.document-main h1{font-size:26px}.document-main p{font-size:15px}.document-main h2{font-size:20px}.stage-5 .collected-items{right:15%;width:80px;height:60px}.stage-5 .collected-items>span{width:18px;height:13px}.game-shell:fullscreen .game-stage{min-height:290px;height:40vh}.game-shell:fullscreen .main-character{width:100px;height:100px;left:3%}.game-shell:fullscreen .game-target{right:5%}.record-summary{font-size:13px}dialog{padding:24px 20px}.dialog-actions{flex-wrap:wrap}}
@media(pointer:coarse){.mobile-input-wrap{display:block}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.game-stage.success .reward-object{opacity:0}}

/* Maintain readable contrast for small labels. */
.intro p,.level-done,.welcome-panel small,.section-row>span,.game-bottom-note,.keyboard-instructions,.input-mode-note,.level-progress-row,.scoreboard span,.finger-callout>span,.setting-help,.site-footer,.site-footer p a,.site-footer nav a,.footer-brand span,.document-date{color:#607557!important}.keyboard-key{color:#526c4b}.keyboard-key.next{color:#655324}.site-footer p{color:#566c4c}.guide-strip p{color:#607257}.hands-diagram text{fill:#73856a}.header-badge{color:#537236}

/* Each scene exposes a different playable rule, with shared readable typing controls. */
.brand>span{font-size:28px;letter-spacing:-1px;white-space:nowrap}.intro{margin-bottom:18px}.level-mode{display:block;font-size:12px;font-weight:700;color:#4d7560;margin:2px 0 6px}.level-card{min-height:128px}.curriculum-notice{font-size:14px;padding:11px 15px;background:#eef8ff;border:1px solid #c3e2ed;border-radius:10px;color:#355c70}.game-stage{height:auto;min-height:352px;padding:42px 20px 120px;overflow:hidden}.game-stage.sentence-stage{min-height:420px}.welcome-panel,.pause-panel,.round-panel{margin:19px auto 14px;max-width:470px}.welcome-panel p,.pause-panel p,.round-panel p{font-size:15px;line-height:1.8}.word-panel{padding:9px 8px 0;max-width:800px;pointer-events:auto}.word-japanese{font-size:38px;max-width:100%;padding:3px 20px 7px;white-space:pre-line}.word-reading{max-width:100%;overflow-wrap:anywhere;white-space:pre-wrap;line-height:1.7}.word-panel .romaji-line{font-size:25px;line-height:1.65;white-space:pre-wrap;word-break:break-all;max-width:100%;padding:5px 13px;min-height:47px}.romaji-next{display:inline;outline-offset:2px}.sentence-stage .word-japanese{font-size:23px;line-height:1.85;text-align:left;letter-spacing:.02em;max-width:760px;font-weight:700}.sentence-stage .word-reading{font-size:14px}.sentence-stage .romaji-line{font-size:19px!important;text-align:left;letter-spacing:.6px}.word-timebar{margin-top:9px}.typing-feedback{font-size:14px;line-height:1.65;max-width:100%;margin:6px auto 0}.stage-topline,.stage-bottomline{font-size:13px}.stage-bottomline>span:first-child{max-width:72%;font-size:12px}.main-character{width:108px;height:108px;bottom:26px}.game-target{top:auto;bottom:43px;right:10%;font-size:24px;min-width:51px;height:51px;line-height:46px}.collected-items{bottom:48px;left:28%;right:25%;height:60px}.stage-decoration{opacity:.45}.mechanic-panel{position:relative;z-index:4;max-width:800px;margin:0 auto 5px;padding:10px 15px 8px;border-radius:12px;background:#ffffffe8;color:#214e50}.mechanic-top{display:flex;align-items:center;justify-content:space-between;gap:10px;line-height:1.5}.mechanic-top>span{font-size:12px;font-weight:700;color:#487074}.mechanic-top strong{font-size:16px;font-weight:800}.mechanic-panel p{margin:5px 0 0;font-size:13px;line-height:1.6;color:#406367}.challenge-meter{height:5px;overflow:hidden;border-radius:4px;background:#cee2db;margin-top:7px}.challenge-meter>span{display:block;height:100%;background:#258f71;transform-origin:left;transition:transform .1s linear}.stage-1 .game-target,.stage-1 .collected-items{display:none}.stage-1 .main-character{transition:left 1.1s ease}.stage-2 .game-target{animation:none;bottom:calc(120px - var(--fall,0)*65px);right:24%;height:auto;min-height:45px;line-height:1.6;max-width:50%;font-size:22px;padding:0 10px;transition:bottom .1s linear;border-radius:12px;background:#f0ffcb}.stage-2 .main-character{left:auto!important;right:7%;animation:none}.stage-2 .challenge-meter>span{background:#e3893f}.stage-3 .game-target{display:none}.balloon-panel{position:relative;z-index:5;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:790px;margin:14px auto 4px}.balloon-choice{border:2px solid #fff;background:#ffe6f2;color:#5c3459;border-radius:25px;padding:10px 12px;min-height:76px;box-shadow:0 4px 0 #6c5f8d25;cursor:pointer;animation:target-float 4.8s ease-in-out infinite;overflow-wrap:anywhere}.balloon-choice:nth-child(2){background:#fff4bb;animation-delay:-1.4s;color:#625022}.balloon-choice:nth-child(3){background:#d2ffef;animation-delay:-2.7s;color:#285b4c}.balloon-choice strong{font-size:20px;display:block;line-height:1.5}.balloon-choice small{font-size:13px;line-height:1.5}.balloon-choice.chosen{border-color:#344f69;box-shadow:0 0 0 2px #fff,0 5px 0 #40597828}.balloon-choice:disabled{cursor:default;opacity:.58;animation-play-state:paused}.balloon-choice.chosen:disabled{opacity:1}.sentence-steps{position:relative;z-index:4;display:flex;gap:5px;max-width:760px;justify-content:center;margin:12px auto 5px}.sentence-steps span{flex:1;border:1px solid #9bbcd2;color:#45647a;background:#e8f0f6;font-size:14px;font-weight:700;padding:7px 10px;border-radius:6px;text-align:center}.sentence-steps span.current{background:#fff5b5;border-color:#c9a74f;color:#715322}.sentence-steps span.done{background:#22997b;border-color:#1b785f;color:#fff}.stage-4 .game-target,.stage-5 .game-target,.stage-6 .game-target{display:none}.stage-4 .main-character{animation:slide 3.8s ease-in-out infinite}.stage-5{background:#ffe5a6}.question-panel{position:relative;z-index:5;max-width:780px;margin:10px auto 4px;padding:12px 16px;background:#fffdf3;border:2px solid #fff;border-radius:12px;color:#594d36}.question-panel p{font-size:17px;line-height:1.8;font-weight:700;margin:0 0 10px}.answer-choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}.answer-choice{font-size:16px;font-weight:700;padding:8px 12px;border:1px solid #c3b78e;border-radius:9px;background:#fff;color:#615334;cursor:pointer}.answer-choice.correct{background:#2d8c65;color:white;border-color:#21714f}.answer-choice:disabled{opacity:.55;cursor:default}.answer-choice.correct:disabled{opacity:1}.stage-6 .word-japanese{background:#fffdf5;border-radius:8px;border-left:5px solid #759acd;padding:10px 17px}.stage-6 .main-character{animation:trot .9s ease-in-out infinite}.stage-7{background:#356a91;--ground:#3a6d70}.stage-7 .stage-topline,.stage-7 .stage-bottomline{color:#fff}.stage-7 .word-japanese{font-size:32px;min-width:220px}.stage-7 .game-target{display:none}.memory-tools{position:relative;z-index:5;text-align:center;margin:10px auto 0}.memory-tools button{font-size:14px;background:#fffdf3;padding:7px 15px;border-color:#c7d7e4;color:#385b71}.stage-8{background:#263e62;--ground:#375b6c}.stage-8 .stage-topline,.stage-8 .stage-bottomline{color:#e7fff9}.stage-8 .mechanic-panel{background:#dffff3}.stage-8 .challenge-meter>span{background:#12a184}.stage-8 .game-target{background:#c4ffed;animation:beat .36s linear infinite}.stage-8 .main-character{animation:robot-dance .75s ease-in-out infinite}.stage-9{background:#604977;--ground:#586880}.stage-9 .stage-topline,.stage-9 .stage-bottomline{color:#fff}.stage-9 .mechanic-panel{background:#fff3ef}.stage-9 .challenge-meter>span{background:#d36563}.stage-9 .main-character{left:auto!important;right:10%;opacity:var(--boss-strength,1);width:121px;height:121px;animation:fly 1.2s ease-in-out infinite}.stage-9 .game-target{right:auto;left:10%;background:#fff2a9}.stage-9 .collected-items{left:27%;right:32%}.mobile-input-wrap textarea{width:100%;min-height:45px;resize:vertical;border:1px solid #aecfbd;border-radius:9px;background:#f7fcf7;padding:10px 12px;font-family:ui-monospace,monospace;font-size:16px;line-height:1.5;color:#234e42}.contact-email{overflow-wrap:anywhere}.contact-email a{font-size:clamp(17px,4vw,24px);font-weight:700}.site-footer a[href^="mailto:"]{overflow-wrap:anywhere}.game-shell:fullscreen .game-stage{height:auto;min-height:340px}.game-shell:fullscreen .main-character{width:115px;height:115px}.game-shell:fullscreen .word-panel{max-width:900px}.game-shell:fullscreen .mechanic-panel{max-width:900px}.level-picker .level-grid{padding-top:3px}.stage-5 .collected-items{right:19%;width:auto;left:35%}.stage-5 .collected-items>span{width:32px;height:14px}.stage-6 .collected-items>span{height:21px;width:27px}.game-stage[data-phase="paused"] .balloon-choice{animation-play-state:paused!important}
@media(max-width:760px){.brand>span{font-size:25px}.level-card{min-height:121px}.level-grid{grid-template-columns:repeat(9,minmax(74px,1fr))}.game-stage{padding:42px 13px 119px;min-height:345px}.game-stage.sentence-stage{min-height:420px}.stage-topline,.stage-bottomline{left:13px;right:13px}.mechanic-panel{padding:8px 10px}.mechanic-top strong{font-size:14px}.mechanic-top>span{font-size:12px}.word-panel{padding:10px 0 0}.word-japanese{font-size:31px;padding:4px 13px 7px}.word-panel .romaji-line{font-size:22px!important}.sentence-stage .word-japanese{font-size:20px;line-height:1.8}.sentence-stage .word-reading{font-size:14px}.sentence-stage .romaji-line{font-size:17px!important;line-height:1.8}.balloon-panel{gap:7px;margin-top:12px}.balloon-choice{padding:8px 7px;min-height:75px;border-radius:16px}.balloon-choice strong{font-size:17px}.balloon-choice small{font-size:12px}.main-character{width:93px;height:93px}.stage-2 .game-target{right:29%;font-size:19px}.question-panel{padding:10px 12px}.question-panel p{font-size:16px;line-height:1.8}.answer-choice{font-size:15px;padding:8px}.sentence-steps span{font-size:13px;padding:6px}.welcome-panel,.pause-panel,.round-panel{margin:18px auto 8px;max-width:470px;padding:17px 19px}.stage-bottomline>span:first-child{max-width:74%;font-size:12px;line-height:1.45}.stage-bottomline>span:last-child{font-size:12px;white-space:nowrap}.stage-7 .word-japanese{font-size:26px}.stage-9 .main-character{width:105px;height:105px;right:8%}.game-bottom-note{font-size:12px}.mechanic-panel p{font-size:12px}.game-stage.success .main-character{animation-duration:.55s!important}}
@media(max-width:450px){.brand>span{font-size:24px}.header-inner nav{gap:11px}.header-inner nav a{font-size:13px}.game-stage{padding:40px 10px 119px;min-height:350px}.stage-topline{font-size:12px}.word-japanese{font-size:28px;line-height:1.55}.word-reading{font-size:14px;padding:2px 9px}.word-panel .romaji-line{font-size:20px!important;padding:6px 10px;line-height:1.6;letter-spacing:.5px}.sentence-stage .word-japanese{font-size:19px}.sentence-stage .romaji-line{font-size:16px!important;line-height:1.8}.mechanic-top{flex-wrap:wrap;gap:3px 8px}.mechanic-top strong{font-size:14px}.mechanic-panel p{font-size:12px}.balloon-choice strong{font-size:16px}.balloon-choice small{font-size:12px;display:block}.balloon-panel{gap:6px}.balloon-choice{padding:8px 4px}.question-panel p{font-size:15px}.sentence-steps span{padding:6px 3px;font-size:12px}.stage-7 .word-japanese{font-size:24px}.welcome-panel h3,.pause-panel h3,.round-panel h3{font-size:21px}.welcome-panel p,.round-panel p{font-size:14px}.main-character{left:5%;width:86px;height:86px}.stage-2 .main-character{right:5%}.stage-2 .game-target{font-size:18px;min-height:36px;bottom:calc(112px - var(--fall,0)*53px);max-width:58%}.collected-items{bottom:43px}.stage-9 .main-character{width:96px;height:96px}.typing-feedback{font-size:13px}.stage-bottomline{gap:7px}.stage-bottomline>span:first-child{max-width:73%}.game-target{font-size:21px}.stage-5 .collected-items{left:34%;right:18%}.game-shell:fullscreen .game-stage{height:auto;min-height:350px}}
@media(prefers-reduced-motion:reduce){.balloon-choice,.stage-8 .main-character,.stage-9 .main-character,.stage-8 .game-target{animation:none!important}.stage-1 .main-character,.stage-2 .game-target,.challenge-meter>span{transition:none!important}}
