{"id":16273,"date":"2026-11-05T14:58:08","date_gmt":"2026-11-05T05:58:08","guid":{"rendered":"https:\/\/chicodori.net\/?p=16273"},"modified":"2026-11-05T14:58:09","modified_gmt":"2026-11-05T05:58:09","slug":"direct-inverse-proportion","status":"publish","type":"post","link":"https:\/\/chicodori.net\/index.php\/en\/direct-inverse-proportion\/","title":{"rendered":"Direct &#038; Inverse Proportion"},"content":{"rendered":"<!-- Lesson feature icons: shared semantic symbols -->\r\n<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"0\" height=\"0\" aria-hidden=\"true\" focusable=\"false\" style=\"position:absolute;overflow:hidden\"><defs>\r\n<symbol id=\"cd-icon-punctuation\" viewBox=\"0 0 48 48\"><rect x=\"8\" y=\"5\" width=\"32\" height=\"38\" rx=\"5\" fill=\"var(--cd-icon-accent,#fff2ca)\" stroke=\"currentColor\" stroke-width=\"2.5\"\/><text x=\"24\" y=\"30\" text-anchor=\"middle\" font-size=\"30\" font-family=\"sans-serif\" fill=\"currentColor\">\u3001<\/text><\/symbol>\r\n<symbol id=\"cd-icon-compare\" viewBox=\"0 0 48 48\"><g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"4\" y=\"9\" width=\"16\" height=\"29\" rx=\"3\"\/><rect x=\"28\" y=\"9\" width=\"16\" height=\"29\" rx=\"3\"\/><path d=\"M9 16h6M9 23h6M33 16h6M33 23h6M21 24h6m-3-3 3 3-3 3\"\/><\/g><\/symbol>\r\n<symbol id=\"cd-icon-read-aloud\" viewBox=\"0 0 48 48\"><g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"14\" cy=\"14\" r=\"6\"\/><path d=\"M4 39v-8a10 10 0 0 1 20 0v8M26 17l7-4v9zM36 10q8 7 0 15M40 6q12 11 0 23\"\/><\/g><\/symbol>\r\n<symbol id=\"cd-icon-audio\" viewBox=\"0 0 48 48\"><g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M6 19h8l11-9v28l-11-9H6zM32 16q8 8 0 16M37 10q14 14 0 28\"\/><\/g><\/symbol>\r\n<\/defs><\/svg>\r\n<style>\r\n\r\n\/* cd-lesson v1 \u2014 shared presentation. Game logic and question data are separate. *\/\r\n.cd-lesson{--cd-ink:#254452;--cd-sky:#b5e9f5;--cd-soft:#f2f9fb;--cd-accent:#fff2a5;--cd-border:#cbdfe5;--cd-body:18px;--cd-title-size:28px;--cd-game-width:660px;color:var(--cd-ink);font:var(--cd-body)\/1.85 Meiryo,sans-serif;background:white}\r\nbody:has(.cd-lesson) .blog-post-title{display:none}\r\n.cd-lesson .cd-hero{display:grid;grid-template-columns:minmax(0,1fr) 110px;gap:16px;align-items:center;position:relative;overflow:hidden;padding:24px 26px 40px;background:var(--cd-sky);border-radius:22px 22px 32px 18px}\r\n.cd-lesson .cd-hero:after{content:'';position:absolute;bottom:-1px;left:0;right:0;height:23px;background:radial-gradient(ellipse at 50% 100%,white 68%,transparent 71%) 0 0\/64px 24px repeat-x}\r\n.cd-lesson .cd-tags{display:inline-block;background:var(--cd-accent);padding:3px 12px;border-radius:20px;font-size:16px;margin-bottom:10px}\r\n.cd-lesson .cd-title{font-size:var(--cd-title-size);line-height:1.5;margin:0 0 12px;color:var(--cd-ink);letter-spacing:0;padding:0;border:0}\r\n.cd-lesson .cd-lead{margin:0;font-size:18px;line-height:1.85}\r\n.cd-lesson .cd-mascot{text-align:center}.cd-lesson .cd-mascot p{font-size:15px;background:white;padding:10px 6px;border-radius:22px;line-height:1.6;margin:0 0 8px}.cd-lesson .cd-mascot img{width:90px;height:90px;object-fit:contain;border-radius:0}\r\n.cd-lesson .cd-points{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px 0 28px;padding:0}\r\n.cd-lesson .cd-point{display:flex;align-items:center;justify-content:center;gap:8px;font-size:16px;line-height:1.55;margin:0;padding:8px 0}.cd-lesson .cd-point__icon,.cd-lesson .cd-point>svg{width:36px;height:36px;flex:none;color:#31596b}\r\n.cd-lesson .cd-play{max-width:var(--cd-game-width);margin:0 auto}.cd-lesson .cd-play-heading{display:flex;justify-content:space-between;gap:12px;align-items:center;margin:0 0 12px}.cd-lesson .cd-section-title{font-size:21px;line-height:1.6;margin:0;color:var(--cd-ink);padding:0;border:0}.cd-lesson .cd-count-label{font-size:16px;color:#526c77}.cd-lesson .cd-start-note{font-size:18px;margin:0 0 14px}\r\n.cd-lesson .cdl-game{width:100%;max-width:100%;margin:0;box-shadow:none}\r\n.cd-lesson .cdl-brand,.cd-lesson .cdl-topic{display:none}\r\n.cd-lesson .cdl-title{font-size:19px;line-height:1.5}\r\n.cd-lesson .cd-method{max-width:var(--cd-game-width);margin:22px auto;border-bottom:1px solid var(--cd-border);padding-bottom:12px}.cd-lesson .cd-method summary{font-size:19px;font-weight:bold;cursor:pointer;min-height:44px;padding:6px 0}.cd-lesson .cd-method ol{padding-left:28px;margin:10px 0}.cd-lesson .cd-method li{font-size:18px;margin:8px 0}\r\n.cd-lesson .cd-takeaway{max-width:var(--cd-game-width);margin:24px auto;padding:18px 22px;border-radius:18px;background:#fffbeb}.cd-lesson .cd-takeaway p{font-size:18px;margin:8px 0 0}.cd-lesson .cd-takeaway strong{background:linear-gradient(transparent 65%,#ffeb8b 65%)}\r\n.cd-lesson .cd-like{margin:20px auto;text-align:center}.cd-lesson .cd-related{margin:28px 0 0;padding:20px 24px;background:var(--cd-soft);border-radius:22px}.cd-lesson .cd-links{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px}.cd-lesson .cd-link{display:inline-flex;align-items:center;min-height:46px;padding:8px 18px;border:1px solid var(--cd-border);border-radius:25px;background:white;color:#285d74;font-size:18px;text-decoration:none}\r\n.cd-lesson a:focus-visible,.cd-lesson summary:focus-visible{outline:3px solid #276887;outline-offset:3px}\r\nbody:has(.cd-lesson) #comments{margin-top:36px;padding:24px;background:#f5fafb;border:1px solid #d9e8ec;border-radius:22px}body:has(.cd-lesson) #reply-title{font-size:22px;letter-spacing:0}body:has(.cd-lesson) #commentform label,body:has(.cd-lesson) #commentform textarea{font-size:18px}body:has(.cd-lesson) #commentform textarea{border-radius:14px;background:white}body:has(.cd-lesson) #comment-submit{border-radius:24px;background:#32697c;font-size:18px;text-transform:none;letter-spacing:0}\r\n@media(max-width:600px){.cd-lesson{--cd-title-size:24px}.cd-lesson .cd-hero{grid-template-columns:minmax(0,1fr) 64px;padding:18px 16px 34px;gap:10px}.cd-lesson .cd-mascot img{width:64px;height:64px}.cd-lesson .cd-mascot p{font-size:14px;padding:7px 3px}.cd-lesson .cd-lead{grid-column:1\/-1}.cd-lesson .cd-tags{font-size:15px}.cd-lesson .cd-points{gap:8px;margin:12px 0 24px}.cd-lesson .cd-point{flex-direction:column;text-align:center;font-size:15px;gap:6px}.cd-lesson .cd-point__icon,.cd-lesson .cd-point>svg{width:32px;height:32px}.cd-lesson .cd-takeaway{padding:16px}.cd-lesson .cd-related{padding:18px}.cd-lesson .cd-link{width:100%;justify-content:center}}\r\n\r\n.cd-lesson .cd-lead{grid-column:1\/-1}\r\n\r\n\/* Feature icons: unified cream horizontal cards *\/\r\n.cd-lesson .cd-features{margin:14px auto 24px;max-width:660px}\r\n.cd-lesson .cd-features-title{font-size:16px;font-weight:400;line-height:1.6;text-align:center;color:#526c77;margin:0 0 8px;padding:0;border:0;letter-spacing:0}\r\n.cd-lesson .cd-points{margin:0;gap:10px}\r\n.cd-lesson .cd-point{display:grid;grid-template-columns:40px 1fr;gap:10px;align-items:center;text-align:left;padding:10px;background:#fffdf5;border:1px solid #eee9d8;border-radius:14px;font-size:16px;font-weight:400;line-height:1.6;min-height:70px;box-sizing:border-box}\r\n.cd-lesson .cd-point__icon,.cd-lesson .cd-point>svg{width:40px;height:40px;color:#806d3f;--cd-icon-accent:#fff2ca}\r\n.cd-lesson .cd-point>span{border-left:1px solid #e7dfc8;padding-left:10px;min-height:40px;display:flex;align-items:center}\r\n@media(max-width:600px){.cd-lesson .cd-points{grid-template-columns:1fr;gap:8px}.cd-lesson .cd-point{min-height:60px;padding:8px 12px;grid-template-columns:36px 1fr}.cd-lesson .cd-point__icon,.cd-lesson .cd-point>svg{width:36px;height:36px}}\r\n\r\n\/* Shared article sections; game internals retain their own styles. *\/\r\n.cd-lesson .cd-copy{max-width:660px;margin:24px auto;color:var(--cd-ink);font-size:18px;line-height:1.85}\r\n.cd-lesson .cd-copy p,.cd-lesson .cd-copy li{font-size:18px;line-height:1.85;margin:12px 0}\r\n.cd-lesson .cd-copy h2,.cd-lesson .cd-copy h3,.cd-lesson .cd-copy h4{font-size:21px;line-height:1.6;color:var(--cd-ink);margin:0 0 14px;padding:0;border:0;letter-spacing:0}\r\n.cd-lesson .cd-copy img{max-width:100%;height:auto}.cd-lesson .cd-copy figure{margin:18px auto}\r\n.cd-lesson .cd-note{display:flex;align-items:center;gap:14px;background:#f2f9fb;padding:14px 18px;border-radius:18px;margin:18px 0}\r\n.cd-lesson .cd-note>img{width:52px;height:62px;object-fit:contain;flex:none}.cd-lesson .cd-note p{margin:0}\r\n.cd-lesson .cd-copy summary{cursor:pointer;font-size:19px;font-weight:bold;min-height:44px;padding:8px 0}\r\n.cd-lesson details.cd-copy{border-top:1px solid var(--cd-border);padding-top:12px}\r\n.cd-lesson .cd-copy mark{background:transparent;color:inherit}.cd-lesson .cd-copy a{color:#285d74;text-decoration:underline}\r\n.cd-lesson .cd-lead p{font-size:18px;line-height:1.85;margin:0}\r\n.cd-lesson .cd-points{grid-template-columns:repeat(auto-fit,minmax(185px,1fr))}\r\n.cd-lesson .cd-point{list-style:none}.cd-lesson .cd-point>span{font-size:16px}\r\n.cd-lesson .cd-game-mount{max-width:660px;margin:0 auto}.cd-lesson .cd-game-mount>div{max-width:100%}\r\n.cd-lesson .cd-like{margin:12px auto 18px}.cd-lesson .cd-play{margin-top:20px}\r\n@media(max-width:600px){.cd-lesson .cd-points{grid-template-columns:1fr}.cd-lesson .cd-copy{margin:20px auto}.cd-lesson .cd-note{padding:12px}}\r\n\r\n\r\n\/* Circle area: compact layout, 2026-10-15 *\/\r\n#circle-area-game{container-type:inline-size}\r\n#circle-area-game .circle-game{margin:12px auto;padding:14px;border-radius:18px;font-size:18px;line-height:1.5;box-shadow:0 3px 12px #24465012}\r\n#circle-area-game .circle-game h2{font-size:24px;line-height:1.5;margin:0 0 8px}\r\n#circle-area-game .status{font-size:18px;margin-bottom:10px}\r\n#circle-area-game .problem-card{padding:12px;margin-bottom:12px;border-radius:16px}\r\n#circle-area-game .question{font-size:22px;line-height:1.5;margin:0 0 4px}\r\n#circle-area-game .circle-svg{width:240px;margin:0 auto 4px}\r\n#circle-area-game .formula{font-size:20px;margin:6px 0}\r\n#circle-area-game .formula:empty{display:none}\r\n#circle-area-game .answer-row{font-size:18px;margin:8px 0;white-space:nowrap}\r\n#circle-area-game .answer-row input{width:108px;height:46px;padding:6px;font-size:22px}\r\n#circle-area-game .main-btn{min-height:46px;padding:8px 22px;font-size:20px;line-height:1.4}\r\n#circle-area-game .message{min-height:28px;margin-top:6px;font-size:20px;line-height:1.4}\r\n#circle-area-game .calculator{padding:10px;border-radius:14px}\r\n#circle-area-game .calc-display{height:44px;padding:6px 8px;margin-bottom:8px;font-size:22px}\r\n#circle-area-game .calc-grid{gap:6px}\r\n#circle-area-game .calc-btn{min-height:46px;padding:6px 4px;font-size:20px;line-height:1.4;border-radius:9px}\r\n#circle-area-game [data-calc=\"copy\"]{font-size:16px;white-space:normal;line-height:1.25}\r\n@container(min-width:580px){\r\n#circle-area-game .circle-game{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 12px;align-items:start}\r\n#circle-area-game .circle-game>h2,#circle-area-game .status{grid-column:1\/-1}\r\n#circle-area-game .problem-card{margin:0;min-width:0}\r\n#circle-area-game .calculator{min-width:0}\r\n}\r\n\r\n\r\n\/* Average: compact layout, 2026-10-15 *\/\r\n#average-game{container-type:inline-size}\r\n#average-game .average-game{margin:12px auto;padding:14px;border-radius:18px;font-size:18px;line-height:1.5;box-shadow:0 3px 12px #24465012}\r\n#average-game .average-game h2{font-size:24px;line-height:1.5;margin:0 0 8px}\r\n#average-game .status{font-size:18px;margin-bottom:10px}\r\n#average-game .problem-card{padding:12px;margin-bottom:12px;border-radius:16px}\r\n#average-game .question{font-size:22px;line-height:1.5;margin:0 0 4px}\r\n#average-game .formula{font-size:20px;margin:6px 0}\r\n#average-game .formula:empty{display:none}\r\n#average-game .answer-row{font-size:18px;margin:8px 0;white-space:nowrap}\r\n#average-game .answer-row input{width:108px;height:46px;padding:6px;font-size:22px}\r\n#average-game .main-btn{min-height:46px;padding:8px 22px;font-size:20px;line-height:1.4}\r\n#average-game .message{min-height:28px;margin-top:6px;font-size:20px;line-height:1.4}\r\n#average-game .calculator{padding:10px;border-radius:14px}\r\n#average-game .calc-display{height:44px;padding:6px 8px;margin-bottom:8px;font-size:22px}\r\n#average-game .calc-grid{gap:6px}\r\n#average-game .calc-btn{min-height:46px;padding:6px 4px;font-size:20px;line-height:1.4;border-radius:9px}\r\n#average-game [data-calc=\"copy\"]{font-size:16px;white-space:normal;line-height:1.25}\r\n@container(min-width:580px){\r\n#average-game .average-game{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 12px;align-items:start}\r\n#average-game .average-game>h2,#average-game .status{grid-column:1\/-1}\r\n#average-game .problem-card{margin:0;min-width:0}\r\n#average-game .calculator{min-width:0}\r\n}\r\n\r\n#average-game .question{font-size:20px;line-height:1.6;margin:0 0 10px}\r\n#average-game .average-table{font-size:20px;line-height:1.5;margin:10px 0}\r\n#average-game .average-table th,#average-game .average-table td{padding:6px 8px}\r\n\r\n\r\n\/* Compact requested lessons 12398,13154,13156 *\/\r\n#circle-game .circle-game{padding:12px;margin:12px auto;border-width:2px;border-radius:18px;box-shadow:0 3px 0 #f1b84b}\r\n#circle-game h2{font-size:24px;line-height:1.5}\r\n#circle-game .game-lead,#circle-game .score,#circle-game .answer-label{font-size:16px;line-height:1.5}\r\n#circle-game .level-buttons{margin:6px 0;gap:8px}\r\n#circle-game .level-btn{min-height:44px;font-size:16px;padding:6px 12px}\r\n#circle-game .question-text{font-size:18px;line-height:1.5;min-height:0}\r\n#circle-game .circle-wrap{max-width:430px}\r\n#circle-game .measure-text{font-size:26px}\r\n#circle-game .unknown-text{font-size:28px}\r\n#circle-game .answer-area{margin-top:6px}\r\n#circle-game .answer-display{min-height:44px;margin-bottom:6px}\r\n#circle-game .keypad{max-width:540px}\r\n#circle-game .key{min-height:44px;font-size:20px}\r\n:is(#post-13154,#post-13156) .cdl-game{font-size:18px;line-height:1.6;border-radius:18px}\r\n:is(#post-13154,#post-13156) .cdl-game .cdl-brand,:is(#post-13154,#post-13156) .cdl-game .cdl-topic{display:none}\r\n:is(#post-13154,#post-13156) .cdl-game .cdl-header{padding:12px 16px;gap:10px}\r\n:is(#post-13154,#post-13156) .cdl-game .cdl-title{font-size:21px;line-height:1.5;margin:0}\r\n:is(#post-13154,#post-13156) .cdl-game .cdl-help-toggle{font-size:16px;min-height:44px;padding:6px 10px}\r\n:is(#post-13154,#post-13156) .cdl-game .cdl-toolbar{padding:8px 16px;font-size:16px}\r\n:is(#post-13154,#post-13156) .cdl-game .cdl-body{padding:14px 16px}\r\n:is(#post-13154,#post-13156) .cdl-game .cdl-prompt{font-size:21px;line-height:1.6;margin:0 0 8px}\r\n:is(#post-13154,#post-13156) .cdl-game .cdl-learning-note{font-size:18px;line-height:1.6;padding:6px 10px;margin:0 0 10px}\r\n:is(#post-13154,#post-13156) .cdl-game .cdl-visual{padding:10px;margin:0 0 12px;min-height:0}\r\n:is(#post-13154,#post-13156) .cdl-game .cdl-reading{font-size:20px;line-height:1.7;padding:10px 14px;margin:0}\r\n:is(#post-13154,#post-13156) .cdl-game .cdl-choices{grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:8px}\r\n:is(#post-13154,#post-13156) .cdl-game .cdl-choice{font-size:20px;min-height:54px;padding:10px;line-height:1.5}\r\n:is(#post-13154,#post-13156) .cdl-game .cdl-feedback{font-size:18px;line-height:1.6;min-height:0;padding:10px 12px;margin:10px 0 0}\r\n:is(#post-13154,#post-13156) .cdl-game .cdl-actions{margin-top:8px;gap:8px}\r\n:is(#post-13154,#post-13156) .cdl-game .cdl-footer{padding:8px 16px;font-size:16px}\r\n:is(#post-13154,#post-13156) .cdl-game .cdl-footer button{min-height:44px}\r\n#post-13156 .cdl-game .cdl-caption{font-size:18px;margin:0 0 6px}\r\n#post-13156 .cdl-game .cdl-votes-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:0}\r\n#post-13156 .cdl-game .cdl-votes-cards span{font-size:18px;line-height:1.5;padding:6px 4px;min-height:0;min-width:0}\r\n#post-13156 .cdl-game .cdl-vote-table{font-size:20px;line-height:1.5;margin:0;width:100%}\r\n#post-13156 .cdl-game .cdl-vote-table caption{font-size:18px;padding:0 0 6px}\r\n#post-13156 .cdl-game .cdl-vote-table th,#post-13156 .cdl-game .cdl-vote-table td{padding:6px 8px}\r\n@media(min-width:1000px){#post-13156 .cdl-game .cdl-visual{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px 14px;align-items:start}#post-13156 .cdl-game .cdl-caption{grid-column:1}#post-13156 .cdl-game .cdl-votes-cards{grid-column:1}#post-13156 .cdl-game .cdl-vote-table{grid-column:2;grid-row:1\/3}}\r\n@media(max-width:520px){#circle-game .keypad{grid-template-columns:repeat(5,1fr)}:is(#post-13154,#post-13156) .cdl-game .cdl-choices{grid-template-columns:1fr}#post-13156 .cdl-game .cdl-vote-table{margin-top:12px}}\r\n\r\n\r\n#circle-game{container-type:inline-size}\r\n@container(min-width:600px){#circle-game .circle-game{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:8px 12px;align-items:start}#circle-game .circle-game>h2,#circle-game .game-lead,#circle-game .level-buttons,#circle-game .score,#circle-game .result{grid-column:1\/-1;margin:0}#circle-game .circle-wrap{max-width:100%}#circle-game .problem-card{align-self:stretch;display:flex;flex-direction:column;justify-content:center}#circle-game .answer-area{margin:0}#circle-game .keypad{grid-template-columns:repeat(3,1fr);gap:6px}#circle-game .key.action{grid-column:2\/4!important}#circle-game .key.enter{grid-column:1\/-1!important}#circle-game .measure-text{font-size:28px}}\r\n\r\n\r\n\r\n\/* Reviewed JS layouts: 2026-10-15 *\/\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game{font-size:18px;line-height:1.6;border-radius:18px}\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-brand,:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-topic{display:none}\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-header{padding:12px 16px;gap:10px}\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-title{font-size:21px;line-height:1.5;margin:0}\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-help-toggle{font-size:16px;min-height:44px;padding:6px 10px}\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-toolbar{padding:8px 16px;font-size:16px}\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-body{padding:14px 16px}\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-prompt{font-size:21px;line-height:1.6;margin:0 0 8px}\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-learning-note{font-size:18px;line-height:1.6;padding:6px 10px;margin:0 0 10px}\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-visual{padding:10px;margin:0 0 12px;min-height:0}\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-reading{font-size:20px;line-height:1.7;padding:10px 14px;margin:0}\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-choices{grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:8px}\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-choice{font-size:20px;min-height:54px;padding:10px;line-height:1.5}\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-feedback{font-size:18px;line-height:1.6;min-height:0;padding:10px 12px;margin:10px 0 0}\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-actions{margin-top:8px;gap:8px}\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-footer{padding:8px 16px;font-size:16px}\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-footer button{min-height:44px}\r\n\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-long .cdl-choices{grid-template-columns:1fr}\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-visual:empty{display:none}\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-speak{min-height:44px;font-size:16px;padding:6px 10px;margin-top:6px}\r\n:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-caption{font-size:18px;line-height:1.6;margin:0 0 8px}\r\n#post-13152 .cdl-game .cdl-reading{font-size:22px;line-height:1.8}\r\n#post-13152 .cdl-game .cdl-choices{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}\r\n#post-13146 .cdl-game .cdl-choices{grid-template-columns:repeat(auto-fit,minmax(245px,1fr))}\r\n#post-13146 .cdl-game .cdl-new-picture{max-width:270px;margin:0 auto}\r\n@media(max-width:520px){:is(#post-13054,#post-13056,#post-13058,#post-13060,#post-13062,#post-13064,#post-13068,#post-13071,#post-13073,#post-13144,#post-13146,#post-13148,#post-13150,#post-13152) .cdl-game .cdl-choices{grid-template-columns:1fr}}\r\n\/* Circle area: compact layout, 2026-10-15 *\/\r\n.cd-lesson #volume-game{container-type:inline-size}\r\n.cd-lesson #volume-game .volume-game{margin:12px auto;padding:14px;border-radius:18px;font-size:18px;line-height:1.5;box-shadow:0 3px 12px #24465012}\r\n.cd-lesson #volume-game .volume-game h2{font-size:24px;line-height:1.5;margin:0 0 8px}\r\n.cd-lesson #volume-game .status{font-size:18px;margin-bottom:10px}\r\n.cd-lesson #volume-game .problem-card{padding:12px;margin-bottom:12px;border-radius:16px}\r\n.cd-lesson #volume-game .question{font-size:22px;line-height:1.5;margin:0 0 4px}\r\n.cd-lesson #volume-game .shape-svg{width:240px;margin:0 auto 4px}\r\n.cd-lesson #volume-game .formula{font-size:20px;margin:6px 0}\r\n.cd-lesson #volume-game .formula:empty{display:none}\r\n.cd-lesson #volume-game .answer-row{font-size:18px;margin:8px 0;white-space:nowrap}\r\n.cd-lesson #volume-game .answer-row input{width:108px;height:46px;padding:6px;font-size:22px}\r\n.cd-lesson #volume-game .main-btn{min-height:46px;padding:8px 22px;font-size:20px;line-height:1.4}\r\n.cd-lesson #volume-game .message{min-height:28px;margin-top:6px;font-size:20px;line-height:1.4}\r\n.cd-lesson #volume-game .calculator{padding:10px;border-radius:14px}\r\n.cd-lesson #volume-game .calc-display{height:44px;padding:6px 8px;margin-bottom:8px;font-size:22px}\r\n.cd-lesson #volume-game .calc-grid{gap:6px}\r\n.cd-lesson #volume-game .calc-btn{min-height:46px;padding:6px 4px;font-size:20px;line-height:1.4;border-radius:9px}\r\n.cd-lesson #volume-game [data-calc=\"copy\"]{font-size:16px;white-space:normal;line-height:1.25}\r\n@container(min-width:580px){\r\n.cd-lesson #volume-game .volume-game{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 12px;align-items:start}\r\n.cd-lesson #volume-game .volume-game>h2,.cd-lesson #volume-game .status{grid-column:1\/-1}\r\n.cd-lesson #volume-game .problem-card{margin:0;min-width:0}\r\n.cd-lesson #volume-game .calculator{min-width:0}\r\n}\r\n\r\n\r\n\r\n.cd-lesson #rate-change-game>div{padding:14px;margin:12px auto;border-radius:18px}\r\n.cd-lesson #rate-change-game h2{font-size:24px;line-height:1.5;margin:0 0 8px}\r\n.cd-lesson #rate-change-game .mode-area{font-size:18px;gap:6px;margin:8px 0}\r\n.cd-lesson #rate-change-game .mode-area label{min-height:44px;display:inline-flex;align-items:center}\r\n.cd-lesson #rate-change-game .status{font-size:18px;margin:8px 0}\r\n.cd-lesson #rate-change-game .problem-card{padding:12px;border-radius:14px}\r\n.cd-lesson #rate-change-game .problem,.cd-lesson #rate-change-game .story{font-size:22px;line-height:1.65;margin:8px 0}\r\n.cd-lesson #rate-change-game .direction,.cd-lesson #rate-change-game .mission{font-size:18px;margin:4px 0}\r\n.cd-lesson #rate-change-game .answer-row{font-size:20px;margin:8px 0}\r\n.cd-lesson #rate-change-game .answer-box{font-size:24px;min-height:46px;padding:6px 10px;margin:8px auto;line-height:1.4}\r\n.cd-lesson #rate-change-game .keypad{gap:6px;margin:10px auto;max-width:420px}\r\n.cd-lesson #rate-change-game .key-btn{font-size:20px;min-height:46px;padding:6px 4px;line-height:1.4}\r\n.cd-lesson #rate-change-game .message{font-size:20px;min-height:28px;margin:8px 0;line-height:1.5}\r\n\r\n.cd-lesson #rate-rescue-game>div{padding:14px;margin:12px auto;border-radius:18px}\r\n.cd-lesson #rate-rescue-game h2{font-size:24px;line-height:1.5;margin:0 0 8px}\r\n.cd-lesson #rate-rescue-game .mode-area{font-size:18px;gap:6px;margin:8px 0}\r\n.cd-lesson #rate-rescue-game .mode-area label{min-height:44px;display:inline-flex;align-items:center}\r\n.cd-lesson #rate-rescue-game .status{font-size:18px;margin:8px 0}\r\n.cd-lesson #rate-rescue-game .problem-card{padding:12px;border-radius:14px}\r\n.cd-lesson #rate-rescue-game .problem,.cd-lesson #rate-rescue-game .story{font-size:22px;line-height:1.65;margin:8px 0}\r\n.cd-lesson #rate-rescue-game .direction,.cd-lesson #rate-rescue-game .mission{font-size:18px;margin:4px 0}\r\n.cd-lesson #rate-rescue-game .answer-row{font-size:20px;margin:8px 0}\r\n.cd-lesson #rate-rescue-game .answer-box{font-size:24px;min-height:46px;padding:6px 10px;margin:8px auto;line-height:1.4}\r\n.cd-lesson #rate-rescue-game .keypad{gap:6px;margin:10px auto;max-width:420px}\r\n.cd-lesson #rate-rescue-game .key-btn{font-size:20px;min-height:46px;padding:6px 4px;line-height:1.4}\r\n.cd-lesson #rate-rescue-game .message{font-size:20px;min-height:28px;margin:8px 0;line-height:1.5}\r\n\r\n.cd-lesson #speed-rescue-game>div{padding:14px;margin:12px auto;border-radius:18px}\r\n.cd-lesson #speed-rescue-game h2{font-size:24px;line-height:1.5;margin:0 0 8px}\r\n.cd-lesson #speed-rescue-game .mode-area{font-size:18px;gap:6px;margin:8px 0}\r\n.cd-lesson #speed-rescue-game .mode-area label{min-height:44px;display:inline-flex;align-items:center}\r\n.cd-lesson #speed-rescue-game .status{font-size:18px;margin:8px 0}\r\n.cd-lesson #speed-rescue-game .problem-card{padding:12px;border-radius:14px}\r\n.cd-lesson #speed-rescue-game .problem,.cd-lesson #speed-rescue-game .story{font-size:22px;line-height:1.65;margin:8px 0}\r\n.cd-lesson #speed-rescue-game .direction,.cd-lesson #speed-rescue-game .mission{font-size:18px;margin:4px 0}\r\n.cd-lesson #speed-rescue-game .answer-row{font-size:20px;margin:8px 0}\r\n.cd-lesson #speed-rescue-game .answer-box{font-size:24px;min-height:46px;padding:6px 10px;margin:8px auto;line-height:1.4}\r\n.cd-lesson #speed-rescue-game .keypad{gap:6px;margin:10px auto;max-width:420px}\r\n.cd-lesson #speed-rescue-game .key-btn{font-size:20px;min-height:46px;padding:6px 4px;line-height:1.4}\r\n.cd-lesson #speed-rescue-game .message{font-size:20px;min-height:28px;margin:8px 0;line-height:1.5}\r\n\r\n.cd-lesson #box-formula-game>div{padding:14px;margin:12px auto;border-radius:18px}\r\n.cd-lesson #box-formula-game h2{font-size:24px;line-height:1.5;margin:0 0 8px}\r\n.cd-lesson #box-formula-game .mode-area{font-size:18px;gap:6px;margin:8px 0}\r\n.cd-lesson #box-formula-game .mode-area label{min-height:44px;display:inline-flex;align-items:center}\r\n.cd-lesson #box-formula-game .status{font-size:18px;margin:8px 0}\r\n.cd-lesson #box-formula-game .problem-card{padding:12px;border-radius:14px}\r\n.cd-lesson #box-formula-game .problem,.cd-lesson #box-formula-game .story{font-size:22px;line-height:1.65;margin:8px 0}\r\n.cd-lesson #box-formula-game .direction,.cd-lesson #box-formula-game .mission{font-size:18px;margin:4px 0}\r\n.cd-lesson #box-formula-game .answer-row{font-size:20px;margin:8px 0}\r\n.cd-lesson #box-formula-game .answer-box{font-size:24px;min-height:46px;padding:6px 10px;margin:8px auto;line-height:1.4}\r\n.cd-lesson #box-formula-game .keypad{gap:6px;margin:10px auto;max-width:420px}\r\n.cd-lesson #box-formula-game .key-btn{font-size:20px;min-height:46px;padding:6px 4px;line-height:1.4}\r\n.cd-lesson #box-formula-game .message{font-size:20px;min-height:28px;margin:8px 0;line-height:1.5}\r\n.cd-lesson #rate-change-game .problem{font-size:32px}.cd-lesson #speed-rescue-game .scene{font-size:38px;margin:4px 0}.cd-lesson #box-formula-game .key-btn.check,.cd-lesson #box-formula-game .key-btn.back{font-size:18px}\r\n\r\n.cd-lesson #story-order-game .sog-game{padding:14px;margin:12px auto}\r\n.cd-lesson #story-order-game .sog-title{font-size:24px;margin:0 0 8px}\r\n.cd-lesson #story-order-game .sog-lead,.cd-lesson #story-order-game .sog-instruction{font-size:18px;line-height:1.6;margin:8px 0}\r\n.cd-lesson #story-order-game .sog-progress{margin:8px auto}\r\n.cd-lesson #story-order-game .sog-card{padding:12px;margin-top:12px}\r\n.cd-lesson #story-order-game .sog-topic{font-size:22px;margin:0 0 8px}\r\n.cd-lesson #story-order-game .sog-item,.cd-lesson #story-order-game .sog-answer-box{font-size:20px;line-height:1.6;min-height:48px;padding:8px 12px}\r\n.cd-lesson #story-order-game .sog-answer-row{min-height:48px;margin:6px 0;gap:8px}\r\n.cd-lesson #story-order-game .sog-label{font-size:18px;min-height:48px;padding:8px}\r\n.cd-lesson #story-order-game .sog-pool-title,.cd-lesson #story-order-game .sog-answer-title{font-size:18px;margin:10px 0 6px}\r\n.cd-lesson #story-order-game .sog-actions{margin:10px 0;gap:8px}\r\n.cd-lesson #story-order-game .sog-actions button{min-height:44px;font-size:20px;padding:8px 16px}\r\n.cd-lesson #story-order-game .sog-message{min-height:28px;margin-top:8px;font-size:20px}\r\n.cd-lesson #number-hunter-game.number-hunter{padding:14px;margin:12px auto}\r\n.cd-lesson #number-hunter-game h2{font-size:24px;margin:0 0 8px}\r\n.cd-lesson #number-hunter-game .rule{font-size:18px;margin:8px 0}\r\n.cd-lesson #number-hunter-game .target-box{padding:10px;margin:8px 0}\r\n.cd-lesson #number-hunter-game .target-number{font-size:38px;line-height:1.3}\r\n.cd-lesson #number-hunter-game .stars{font-size:28px;margin:6px 0}\r\n.cd-lesson #number-hunter-game .status{font-size:20px;margin:6px 0}\r\n.cd-lesson #number-hunter-game .card-grid{gap:8px;margin:10px 0}\r\n.cd-lesson #number-hunter-game .calc-card{font-size:24px;min-height:60px;padding:10px}\r\n.cd-lesson #number-hunter-game .next-btn{font-size:20px;min-height:44px;padding:8px 18px}\r\n.cd-lesson #three-hint-quiz-game .three-hint-game,.cd-lesson #syrup-memory-game .memory-game{padding:14px;margin:12px auto}\r\n.cd-lesson #three-hint-quiz-game h2,.cd-lesson #syrup-memory-game h2{font-size:24px;margin:0 0 8px}\r\n.cd-lesson #three-hint-quiz-game .game-lead,.cd-lesson #syrup-memory-game .lead{font-size:18px;line-height:1.6;margin:8px 0}\r\n.cd-lesson #three-hint-quiz-game .question-card{padding:12px;margin:10px 0}\r\n.cd-lesson #three-hint-quiz-game .hint{font-size:20px;padding:8px;margin:6px 0}\r\n.cd-lesson #three-hint-quiz-game .choice-btn{font-size:24px;min-height:52px;padding:8px}\r\n.cd-lesson #three-hint-quiz-game .result,.cd-lesson #three-hint-quiz-game .message{font-size:20px;min-height:28px;margin:8px 0}\r\n.cd-lesson #syrup-memory-game .stage{padding:12px;margin:10px 0}\r\n.cd-lesson #syrup-memory-game .pad{width:110px;height:110px;font-size:44px}\r\n.cd-lesson #syrup-memory-game .pads{gap:12px;margin:10px auto}\r\n.cd-lesson #syrup-memory-game .status{font-size:20px;margin:8px 0}\r\n.cd-lesson #syrup-memory-game .result{min-height:28px;font-size:20px;margin:8px 0}\r\n.cd-lesson #connect-word-game .connect-game{padding:14px;margin:12px auto}\r\n.cd-lesson #connect-word-game h2{font-size:24px;margin:0 0 8px}\r\n.cd-lesson #connect-word-game .question{padding:10px;margin:10px 0}\r\n.cd-lesson #connect-word-game .question-word{font-size:28px;margin:6px 0}\r\n.cd-lesson #connect-word-game .buttons{gap:8px}\r\n.cd-lesson #connect-word-game .choice{padding:8px;min-height:44px}\r\n.cd-lesson #connect-word-game .choice-img{max-width:76px;height:auto;margin:0 auto 6px}\r\n.cd-lesson #connect-word-game .choice-main{font-size:20px}\r\n.cd-lesson #connect-word-game .choice-yomi{font-size:16px}\r\n.cd-lesson #connect-word-game .info-box{padding:12px;margin-top:16px}\r\n.cd-lesson #connect-word-game .info-item{padding:10px;margin:8px 0}\r\n.cd-lesson #connect-word-game .info-title,.cd-lesson #connect-word-game .info-text,.cd-lesson #connect-word-game .info-example{font-size:18px;line-height:1.6}\r\n.cd-lesson #connect-word-game .info-img-small{width:48px;height:auto}\r\n.cd-lesson #pref-kanji-game .pref-game{padding:14px;margin:12px auto}\r\n.cd-lesson #pref-kanji-game h2{font-size:24px;margin:0 0 8px}\r\n.cd-lesson #pref-kanji-game .game-lead{font-size:18px;line-height:1.6;margin:8px 0}\r\n.cd-lesson #pref-kanji-game .question-box{padding:10px;margin:10px 0}\r\n.cd-lesson #pref-kanji-game .question-title{font-size:20px;margin:6px 0}\r\n.cd-lesson #pref-kanji-game .kanji-btn{font-size:28px;min-height:54px;padding:8px 16px}\r\n.cd-lesson #koji-game .koji-game{padding:14px;margin:12px auto}\r\n.cd-lesson #koji-game h2{font-size:24px;margin:0 0 8px}\r\n.cd-lesson #koji-game .question-card{padding:12px;margin:10px 0}\r\n.cd-lesson #koji-game .question-label,.cd-lesson #koji-game .question-yomi{font-size:18px;margin:6px 0}\r\n.cd-lesson #koji-game .choice{padding:12px;font-size:20px}\r\n.cd-lesson #koji-game .mode-btn,.cd-lesson #koji-game .hint-btn{font-size:18px;min-height:44px;padding:8px 12px}\r\n.cd-lesson #water-mission .wg-wrap{padding:14px}\r\n.cd-lesson #water-mission .wg-header{padding:0 0 8px}\r\n.cd-lesson #water-mission .wg-hero{padding:10px 0;gap:10px}\r\n.cd-lesson #water-mission .wg-hero h2{font-size:26px;line-height:1.5}\r\n.cd-lesson #water-mission .wg-hero-stamp{display:none}\r\n.cd-lesson #water-mission .wg-intro{font-size:18px;margin:6px 0;line-height:1.6}\r\n.cd-lesson #water-mission .wg-course-bar{padding:8px 0;margin:8px 0}\r\n.cd-lesson #water-mission .wg-console-top{padding:10px}\r\n.cd-lesson #water-mission .wg-lab,.cd-lesson #water-mission .wg-brief,.cd-lesson #water-mission .wg-answer-pane{padding:12px}\r\n.cd-lesson #water-mission .wg-scene{max-width:440px;margin:0 auto}\r\n.cd-lesson #water-mission .wg-target{margin:6px 0}\r\n.cd-lesson #water-mission .wg-target strong{font-size:36px}\r\n.cd-lesson #water-mission .wg-question{font-size:22px;line-height:1.6;margin:10px 0}\r\n.cd-lesson #water-mission .wg-goal-box,.cd-lesson #water-mission .wg-conditions{padding:10px;margin:8px 0}\r\n\r\n#post-13152 .cdl-game .cdl-long .cdl-choices{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}\r\n#post-13146 .cdl-game .cdl-long .cdl-choices{grid-template-columns:repeat(auto-fit,minmax(245px,1fr))}\r\n:is(#post-13054,#post-13058,#post-13062) .cdl-game .cdl-focus-drawing{max-width:320px;margin:0 auto}\r\n@media(max-width:520px){#post-13152 .cdl-game .cdl-long .cdl-choices,#post-13146 .cdl-game .cdl-long .cdl-choices{grid-template-columns:1fr}}\r\n.cd-lesson #water-mission{container-type:inline-size}\r\n@container(min-width:580px){.cd-lesson #water-mission .wg-play-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}.cd-lesson #water-mission .wg-lab,.cd-lesson #water-mission .wg-mission{min-width:0}.cd-lesson #water-mission .wg-scene{width:100%;max-width:100%}.cd-lesson #water-mission .wg-question{font-size:20px}.cd-lesson #water-mission .wg-target strong{font-size:32px}}\r\n\r\n\r\n@container(min-width:580px){.cd-lesson #water-mission .wg-lab{grid-column:1;grid-row:1}.cd-lesson #water-mission .wg-mission{display:block;grid-column:2;grid-row:1}.cd-lesson #water-mission .wg-brief,.cd-lesson #water-mission .wg-answer-pane{grid-area:auto}}\r\n\r\n\/* Compact active question screens *\/\r\n.cd-lesson #ratio-table-game .ratio-game,.cd-lesson #decimal-fraction-game .df-game{padding:14px;margin:12px auto;border-radius:18px}\r\n.cd-lesson #ratio-table-game h2,.cd-lesson #decimal-fraction-game h2{font-size:24px;line-height:1.5;margin:0 0 8px}\r\n.cd-lesson #ratio-table-game .ratio-top,.cd-lesson #decimal-fraction-game .df-top{margin:8px 0;gap:6px}\r\n.cd-lesson #ratio-table-game .ratio-badge,.cd-lesson #decimal-fraction-game .df-badge{font-size:16px;padding:6px 10px}\r\n.cd-lesson #ratio-table-game .ratio-story{font-size:20px;line-height:1.6;padding:10px;margin:10px 0}\r\n.cd-lesson #ratio-table-game .ratio-table-wrap{margin:10px 0}\r\n.cd-lesson #ratio-table-game .ratio-table th,.cd-lesson #ratio-table-game .ratio-table td{padding:8px 6px;font-size:20px;height:auto;min-width:44px}\r\n.cd-lesson #ratio-table-game .ratio-question-box{padding:10px;margin:10px 0}\r\n.cd-lesson #ratio-table-game .ratio-question{font-size:20px;line-height:1.6}\r\n.cd-lesson #ratio-table-game .ratio-choices,.cd-lesson #decimal-fraction-game .df-choices{gap:8px;margin:10px 0}\r\n.cd-lesson #ratio-table-game .ratio-choice,.cd-lesson #decimal-fraction-game .df-choice{font-size:22px;min-height:52px;padding:10px}\r\n.cd-lesson #ratio-table-game .ratio-message,.cd-lesson #decimal-fraction-game .df-message{font-size:20px;min-height:28px;margin:8px 0}\r\n.cd-lesson #decimal-fraction-game .df-card{padding:12px;margin:10px 0}\r\n.cd-lesson #decimal-fraction-game .df-decimal{font-size:34px;margin:6px 0}\r\n.cd-lesson #decimal-fraction-game .df-question{font-size:20px;margin:8px 0}\r\n.cd-lesson #decimal-fraction-game .df-fraction{font-size:28px;margin:10px auto;line-height:1.4}\r\n<\/style>\r\n<!-- Chicodori: fold explanation after the bird balloon (2026-10-19) -->\r\n<style>\r\n.cd-lesson .cd-instructions-fold{margin:22px 0 28px;border:2px solid var(--cd-border,#cbdfe5);border-radius:16px;background:#fff;overflow:hidden}\r\n.cd-lesson .cd-instructions-fold>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;list-style:none;cursor:pointer;padding:16px 20px;background:var(--cd-soft,#f2f9fb);color:var(--cd-ink,#254452);font-size:19px;font-weight:bold;line-height:1.65;min-height:54px;box-sizing:border-box}\r\n.cd-lesson .cd-instructions-fold>summary::-webkit-details-marker{display:none}\r\n.cd-lesson .cd-instructions-fold>summary:after{content:'\uff0b';font-size:24px;line-height:1;flex:none}\r\n.cd-lesson .cd-instructions-fold[open]>summary:after{content:'\u2212'}\r\n.cd-lesson .cd-instructions-fold>summary:focus-visible{outline:3px solid #276887;outline-offset:-4px}\r\n.cd-lesson .cd-instructions-body{padding:4px 20px 16px}\r\n.cd-lesson .cd-instructions-body>:first-child.wp-block-spacer,.cd-lesson .cd-instructions-body>:last-child.wp-block-spacer{display:none}\r\n@media(max-width:600px){.cd-lesson .cd-instructions-fold>summary{font-size:18px;padding:14px 16px}.cd-lesson .cd-instructions-body{padding:4px 16px 12px}}\r\n@media print{.cd-lesson .cd-instructions-fold>.cd-instructions-body{display:block!important}}\r\n<\/style>\r\n<script>\r\n(function(){\r\n  function foldInstructions(){\r\n    document.querySelectorAll('.cd-lesson .cd-content').forEach(function(content){\r\n      if(content.querySelector('.cd-instructions-fold'))return;\r\n      var balloon=Array.from(content.children).find(function(node){\r\n        return node.matches('.wp-block-word-balloon-word-balloon-block') &&\r\n          Array.from(node.querySelectorAll('img')).some(function(img){return \/\\\/(?:chico\\.jpg|chicodori-san[^\/]*\\.(?:png|jpg))(?:[?#]|$)\/i.test(img.getAttribute('src')||'');});\r\n      });\r\n      if(!balloon)return;\r\n      var nodes=[],next=balloon.nextSibling;\r\n      var protectedSelector='.wp-block-word-balloon-word-balloon-block,.cdr-route,.cjr-route,.cd-play,.cd-related,.cd-method,details,iframe,video,audio,canvas,form,button,input,select,script,style,#remix';\r\n      while(next){\r\n        if(next.nodeType===1 && (next.matches(protectedSelector)||next.querySelector(protectedSelector)))break;\r\n        nodes.push(next);next=next.nextSibling;\r\n      }\r\n      if(!nodes.some(function(node){return node.nodeType===1 && (node.textContent.trim()||node.querySelector('img'));}))return;\r\n      var details=document.createElement('details');details.className='cd-instructions-fold';\r\n      var summary=document.createElement('summary');summary.textContent='\u904a\u3073\u65b9\u30fb\u304f\u308f\u3057\u3044\u8aac\u660e';\r\n      var body=document.createElement('div');body.className='cd-instructions-body';\r\n      details.appendChild(summary);details.appendChild(body);\r\n      balloon.parentNode.insertBefore(details,nodes[0]);\r\n      nodes.forEach(function(node){body.appendChild(node);});\r\n      \/\/ Existing anchor links still reveal their destination inside the folded area.\r\n      function revealHash(){\r\n        var id;try{id=decodeURIComponent(location.hash.slice(1));}catch(e){return;}\r\n        var target=id && document.getElementById(id);\r\n        if(target && body.contains(target)){details.open=true;target.scrollIntoView();}\r\n      }\r\n      window.addEventListener('hashchange',revealHash);revealHash();\r\n    });\r\n  }\r\n  if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',foldInstructions,{once:true});\r\n  else foldInstructions();\r\n})();\r\n<\/script>\r\n\r\n<style>\r\n\/* WordPress\u901a\u5e38\u30d6\u30ed\u30c3\u30af\u7248\u306e\u6559\u6750\u30d8\u30c3\u30c0\u30fc *\/\r\n.cd-lesson.wp-block-group .cd-hero > .wp-block-group__inner-container{display:contents}\r\n.cd-lesson.wp-block-group .cd-hero .cd-mascot{margin:0}\r\n<\/style>\r\n\r\n<style>\r\n\/* \u901a\u5e38\u30d6\u30ed\u30c3\u30af\u306e\u30d8\u30c3\u30c0\u30fc\u3068\u3001\u904a\u3073\u65b9\u306e\u958b\u9589\u898b\u51fa\u3057 *\/\r\n:is(.cd-lesson,.cd-chicoratch) .cd-hero.wp-block-group>.wp-block-group__inner-container{display:contents}\r\n:is(.cd-lesson,.cd-chicoratch) .cd-hero.wp-block-group .cd-mascot{margin:0}\r\n:is(.cd-lesson,.cd-chicoratch) details.cd-instructions{max-width:660px;margin:24px auto;border:2px solid #94becd;border-radius:16px;background:#f5fafc;padding:0;overflow:hidden}\r\n:is(.cd-lesson,.cd-chicoratch) details.cd-instructions>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;list-style:none;cursor:pointer;min-height:58px;padding:14px 18px;background:#e0f1f7;color:#244c60;font-size:21px;font-weight:700;line-height:1.6}\r\n:is(.cd-lesson,.cd-chicoratch) details.cd-instructions>summary::-webkit-details-marker{display:none}\r\n:is(.cd-lesson,.cd-chicoratch) details.cd-instructions>summary::after{content:\"\uff0b\";flex:none;font-size:26px;line-height:1}\r\n:is(.cd-lesson,.cd-chicoratch) details.cd-instructions[open]>summary::after{content:\"\u2212\"}\r\n:is(.cd-lesson,.cd-chicoratch) details.cd-instructions>:not(summary){margin-left:18px;margin-right:18px}\r\n:is(.cd-lesson,.cd-chicoratch) details.cd-instructions>summary:focus-visible{outline:3px solid #286983;outline-offset:-4px}\r\n@media(max-width:600px){:is(.cd-lesson,.cd-chicoratch) details.cd-instructions>summary{font-size:19px;padding:12px 14px}}\r\n<\/style>\r\n\r\n<style>\r\n.cd-lesson .cd-kid-steps.wp-block-group>.wp-block-group__inner-container,.cd-lesson .cd-kid-step.wp-block-group>.wp-block-group__inner-container{display:contents}\r\n.cd-lesson .cd-native-step-13799-0{--kid-line:#efcf8e;--kid-bg:#ffedb8}\r\n.cd-lesson .cd-native-step-13799-1{--kid-line:#b9dce7;--kid-bg:#def3fa}\r\n.cd-lesson .cd-native-step-13799-2{--kid-line:#c7deb3;--kid-bg:#eaf4d9}\r\n<\/style>\r\n\r\n<!-- cd-feedback-sound-v1: 2026-10-19. Restore the pre-sound backup to undo. -->\r\n<style>\r\n.cd-lesson .cd-feedback-audio-bar{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap;max-width:660px;margin:12px auto;color:#526c77;font-size:14px;line-height:1.6}\r\n.cd-lesson .cd-feedback-audio-toggle{min-height:42px;padding:6px 16px;border:2px solid #648e9c;border-radius:999px;background:#fff;color:#254452;font:700 16px\/1.5 sans-serif;cursor:pointer;text-transform:none;letter-spacing:0}\r\n.cd-lesson .cd-feedback-audio-toggle[aria-pressed=\"false\"]{background:#f3f4f6;color:#5b6470;border-color:#9ca3af}\r\n.cd-lesson .cd-feedback-audio-toggle:focus-visible{outline:3px solid #2563eb;outline-offset:3px}\r\n<\/style>\r\n<script>\r\n(function(){\r\n'use strict';\r\nconst configurations={\"12008\":{\"message\":\"#result\",\"positive\":\"\"},\"12011\":{\"message\":\"#result\",\"positive\":\"\"},\"12014\":{\"message\":\"#result\",\"positive\":\"\"},\"12017\":{\"message\":\"\",\"positive\":\"button.correct\",\"negative\":\"button.wrong\"},\"12061\":{\"message\":\"#message\",\"positive\":\"#message.correct\",\"negative\":\"#message.wrong\"},\"12067\":{\"message\":\"#message\",\"positive\":\"#message.correct\",\"negative\":\"#message.wrong\"},\"12076\":{\"message\":\"#message\",\"positive\":\"\"},\"12080\":{\"message\":\"#message\",\"positive\":\"\"},\"12083\":{\"message\":\"#message\",\"positive\":\"\",\"badText\":\"\u5c0f\u6570\u70b9\u306e\u53f3\u306f\u4f55\u3051\u305f|\u5206\u5b50\u306f\u5408\u3063\u3066\u3044\u307e\u3059|\u5206\u6bcd\u306f\u5408\u3063\u3066\u3044\u307e\u3059\"},\"12085\":{\"message\":\"#message\",\"positive\":\"\"},\"12091\":{\"message\":\"#message\",\"positive\":\"\"},\"12093\":{\"message\":\"#message\",\"positive\":\"\"},\"12095\":{\"message\":\"#message\",\"positive\":\"\"},\"12099\":{\"message\":\"#message\",\"positive\":\"\"},\"12101\":{\"message\":\"#message\",\"positive\":\"\"},\"12103\":{\"message\":\"#message\",\"positive\":\"\"},\"12105\":{\"message\":\"#message\",\"positive\":\"\"},\"12111\":{\"message\":\"#message\",\"positive\":\"\"},\"12113\":{\"message\":\"#message\",\"positive\":\"\"},\"12117\":{\"message\":\"#result,#message\",\"positive\":\"\"},\"12119\":{\"message\":\"#result\",\"positive\":\"\"},\"12121\":{\"message\":\"#status\",\"positive\":\".correct\",\"negative\":\".wrong\"},\"12123\":{\"message\":\"#result\",\"positive\":\"\"},\"12128\":{\"message\":\"#result\",\"positive\":\".correct-overlay\",\"negative\":\"#result.bad\"},\"12174\":{\"message\":\"#result\",\"positive\":\".correct-overlay\"},\"12236\":{\"message\":\"#result\",\"positive\":\".correct-overlay\",\"negative\":\"button.wrong\"},\"12384\":{\"message\":\"#result\",\"positive\":\".correct-overlay\"},\"12392\":{\"message\":\"#result\",\"positive\":\".correct-overlay\"},\"12396\":{\"message\":\"#stepMessage,#result\",\"positive\":\".correct-overlay\"},\"12398\":{\"message\":\"#result\",\"positive\":\".correct-overlay\"},\"12410\":{\"message\":\"#boxeqResult\",\"positive\":\".boxeq-correct\"},\"12413\":{\"message\":\"#changeResult\",\"positive\":\".change-correct\"},\"12419\":{\"message\":\"\",\"positive\":\".dq-choice.correct\",\"negative\":\".dq-choice.wrong\"},\"12423\":{\"message\":\"\",\"positive\":\".wtg-choice.correct\",\"negative\":\".wtg-choice.wrong\"},\"12427\":{\"message\":\"#cwgResult\",\"positive\":\".cwg-correct\"},\"12585\":{\"message\":\"#bngMessage\",\"positive\":\".bng-correct-overlay\"},\"12590\":{\"message\":\"#dkgMessage\",\"positive\":\".dkg-correct-overlay\"},\"12593\":{\"message\":\"#rmgMessage\",\"positive\":\".rmg-correct-overlay\"},\"12606\":{\"message\":\"#mwgMessage\",\"positive\":\".mwg-correct-overlay\"},\"12617\":{\"message\":\"#owgMessage\",\"positive\":\".owg-correct-overlay\"},\"12638\":{\"message\":\"#srkMessage\",\"positive\":\"\"},\"12645\":{\"message\":\"#swgMessage\",\"positive\":\"\"},\"12648\":{\"message\":\"#sogMessage\",\"positive\":\".sog-correct-overlay\"},\"12901\":{\"message\":\"#wg-feedback\",\"positive\":\"#wg-feedback.is-correct\",\"negative\":\"#wg-feedback.is-retry\"},\"13054\":{\"message\":\".cdl-feedback\",\"positive\":\".cdl-feedback.is-correct\",\"negative\":\".cdl-feedback.is-wrong\"},\"13056\":{\"message\":\".cdl-feedback\",\"positive\":\".cdl-feedback.is-correct\",\"negative\":\".cdl-feedback.is-wrong\"},\"13058\":{\"message\":\".cdl-feedback\",\"positive\":\".cdl-feedback.is-correct\",\"negative\":\".cdl-feedback.is-wrong\"},\"13060\":{\"message\":\".cdl-feedback\",\"positive\":\".cdl-feedback.is-correct\",\"negative\":\".cdl-feedback.is-wrong\"},\"13062\":{\"message\":\".cdl-feedback\",\"positive\":\".cdl-feedback.is-correct\",\"negative\":\".cdl-feedback.is-wrong\"},\"13064\":{\"message\":\".cdl-feedback\",\"positive\":\".cdl-feedback.is-correct\",\"negative\":\".cdl-feedback.is-wrong\"},\"13066\":{\"message\":\".cdl-feedback\",\"positive\":\".cdl-feedback.is-correct\",\"negative\":\".cdl-feedback.is-wrong\"},\"13068\":{\"message\":\".cdl-feedback\",\"positive\":\".cdl-feedback.is-correct\",\"negative\":\".cdl-feedback.is-wrong\"},\"13071\":{\"message\":\".cdl-feedback\",\"positive\":\".cdl-feedback.is-correct\",\"negative\":\".cdl-feedback.is-wrong\"},\"13073\":{\"message\":\".cdl-feedback\",\"positive\":\".cdl-feedback.is-correct\",\"negative\":\".cdl-feedback.is-wrong\"},\"13142\":{\"message\":\".cdl-feedback\",\"positive\":\".cdl-feedback.is-correct\",\"negative\":\".cdl-feedback.is-wrong\"},\"13144\":{\"message\":\".cdl-feedback\",\"positive\":\".cdl-feedback.is-correct\",\"negative\":\".cdl-feedback.is-wrong\"},\"13146\":{\"message\":\".cdl-feedback\",\"positive\":\".cdl-feedback.is-correct\",\"negative\":\".cdl-feedback.is-wrong\"},\"13148\":{\"message\":\".cdl-feedback\",\"positive\":\".cdl-feedback.is-correct\",\"negative\":\".cdl-feedback.is-wrong\"},\"13150\":{\"message\":\".cdl-feedback\",\"positive\":\".cdl-feedback.is-correct\",\"negative\":\".cdl-feedback.is-wrong\"},\"13152\":{\"message\":\".cdl-feedback\",\"positive\":\".cdl-feedback.is-correct\",\"negative\":\".cdl-feedback.is-wrong\"},\"13154\":{\"message\":\".cdl-feedback\",\"positive\":\".cdl-feedback.is-correct\",\"negative\":\".cdl-feedback.is-wrong\"},\"13156\":{\"message\":\".cdl-feedback\",\"positive\":\".cdl-feedback.is-correct\",\"negative\":\".cdl-feedback.is-wrong\"}};\r\nconst sources={correct:\"https:\/\/chicodori.net\/wp-content\/uploads\/2026\/10\/Quiz-Correct_Answer01-1.mp3\",wrong:\"https:\/\/chicodori.net\/wp-content\/uploads\/2026\/10\/Quiz-Wrong_Buzzer02-1.mp3\"};\r\nfunction mountSound(lesson){\r\n const pageID=lesson.dataset.originalPost||(document.body.className.match(\/(?:^|\\s)postid-(\\d+)(?:\\s|$)\/)||[])[1];\r\n const config=configurations[pageID];\r\n const mount=lesson.querySelector('.cd-game-mount')||lesson.querySelector('.cdl-game');\r\n if(!config||!mount||lesson.querySelector('.cd-feedback-audio-bar,.cd-sound-controls'))return;\r\n let enabled=true;\r\n try{enabled=localStorage.getItem('chicodori-feedback-muted')!=='1';}catch(error){}\r\n const bar=document.createElement('div');bar.className='cd-feedback-audio-bar';\r\n const toggle=document.createElement('button');toggle.type='button';toggle.className='cd-feedback-audio-toggle';toggle.setAttribute('aria-label','\u52b9\u679c\u97f3');\r\n const note=document.createElement('span');note.textContent='\u6b63\u89e3\u30fb\u4e0d\u6b63\u89e3\u306e\u97f3';bar.append(toggle,note);mount.before(bar);\r\n const clips={};\r\n Object.keys(sources).forEach(function(name){const clip=document.createElement('audio');clip.src=sources[name];clip.preload='auto';clip.volume=.5;clip.hidden=true;clip.dataset.feedbackSound=name;bar.appendChild(clip);clips[name]=clip;});\r\n function stop(){Object.values(clips).forEach(function(clip){clip.pause();try{clip.currentTime=0;}catch(error){}});}\r\n function refresh(){toggle.textContent=enabled?'\u97f3\u3042\u308a':'\u97f3\u306a\u3057';toggle.setAttribute('aria-pressed',String(enabled));}\r\n toggle.addEventListener('click',function(){enabled=!enabled;stop();refresh();note.textContent='\u6b63\u89e3\u30fb\u4e0d\u6b63\u89e3\u306e\u97f3';try{localStorage.setItem('chicodori-feedback-muted',enabled?'0':'1');}catch(error){}});refresh();\r\n let lastTime=-1000;\r\n let cdlCorrectPlayed=false;\r\n function play(name){if(!enabled)return;const now=performance.now();if(now-lastTime<180)return;lastTime=now;stop();bar.dataset.lastFeedback=name;const pending=clips[name].play();if(pending&&pending.catch)pending.catch(function(){note.textContent='\u97f3\u3092\u518d\u751f\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f';});}\r\n const good=\/^(?:[\ud83c\udf89\u2728\ud83c\udf38\ud83d\udcae\u2605\u2606\\s]*)(?:\u6b63\u89e3[\uff01!]|\u305b\u3044\u304b\u3044[\uff01!]|\u306f\u306a\u307e\u308b|\u30ec\u30b9\u30ad\u30e5\u30fc\u6210\u529f|\u304f\u3082\u308f\u30ad\u30e3\u30c3\u30c1\u6210\u529f|\u30ad\u30e3\u30c3\u30c1[\uff01!]|\u767a\u898b[\uff01!]|PERFECT[\uff01!])\/;\r\n const bad=\/^(?:\u3056\u3093\u306d\u3093|\u6b8b\u5ff5|\u3061\u304c\u3046|\u3082\u3046(?:\u4e00\u56de|\u3044\u3063\u304b\u3044|\u4e00\u5ea6|\u3044\u3061\u3069)[\uff01!]|\u3082\u3046(?:\u4e00\u5ea6|\u3044\u3061\u3069)(?: |\u3000)*(?:\u8003\u3048\u3066|\u304b\u3093\u304c\u3048\u3066)|\u3058\u3085\u3093\u3070\u3093\u304c \u3061\u304c\u3046|\u305d\u308c\u306f\u516c\u7d04\u6570\u3058\u3083\u306a\u3044)\/;\r\n const extraBad=config.badText?new RegExp('^(?:'+config.badText+')'):null;\r\n function matches(node,selector){return !!selector&&node.nodeType===1&&node.matches(selector);}\r\n function invalidPrompt(node){return \/^(?:\u6570\u5b57\u3092\u5165\u308c\u3066|1\u301c60\u306e\u6574\u6570\u3092\u5165\u308c\u3066|\u307e\u3060 \u25a1|\u307e\u3060 \u3048\u3089\u3093\u3067|\u5206\u5b50\u3068\u5206\u6bcd\u306e\u4e21\u65b9)\/.test(node.textContent.trim());}\r\n function textState(node){if(!matches(node,config.message)||invalidPrompt(node))return '';const text=node.textContent.trim();if(matches(node,config.negative))return 'wrong';if(matches(node,config.positive))return 'correct';if(bad.test(text)||(extraBad&&extraBad.test(text)))return 'wrong';if(good.test(text))return 'correct';return '';}\r\n const watch=[config.message,config.positive,config.negative].filter(Boolean).join(',');\r\n const observer=new MutationObserver(function(records){\r\n  let positive=false,negative=false;\r\n  function classify(node,classes){if(!node||node.nodeType!==1)return;const text=textState(node);if(text==='wrong')negative=true;if(text==='correct')positive=true;if(classes){if(matches(node,config.negative)&&!invalidPrompt(node))negative=true;if(matches(node,config.positive))positive=true;}}\r\n  records.forEach(function(record){\r\n   if(record.type==='attributes'){\r\n    const node=record.target,old=node.cloneNode(false);old.setAttribute('class',record.oldValue||'');\r\n    if(matches(node,config.negative)&&!matches(old,config.negative)&&!invalidPrompt(node))negative=true;\r\n    if(matches(node,config.positive)&&!matches(old,config.positive))positive=true;\r\n    return;\r\n   }\r\n   let parent=record.target.nodeType===1?record.target:record.target.parentElement;\r\n   if(parent){const message=config.message?parent.closest(config.message):null;if(message&&mount.contains(message))classify(message,false);}\r\n   record.addedNodes.forEach(function(node){if(node.nodeType!==1)return;classify(node,true);if(watch)node.querySelectorAll(watch).forEach(function(child){classify(child,true);});});\r\n  });\r\n  \/\/ \u5171\u901a\u6559\u6750\u306e\u6b63\u89e3\u8868\u793a\u306f\u7d19\u3075\u3076\u304d\u306e\u524a\u9664\u3067\u3082\u5909\u5316\u3059\u308b\u30021\u56de\u7b54\u306e\u6b63\u89e3\u97f3\u306f1\u56de\u3060\u3051\u3002\r\n  const cdlFeedback=mount.querySelector('.cdl-feedback');\r\n  if(cdlFeedback){\r\n   if(!cdlFeedback.classList.contains('is-correct'))cdlCorrectPlayed=false;\r\n   if(positive){if(cdlCorrectPlayed)positive=false;else cdlCorrectPlayed=true;}\r\n  }\r\n  if(negative)play('wrong');else if(positive)play('correct');\r\n });\r\n observer.observe(mount,{subtree:true,childList:true,characterData:true,attributes:true,attributeFilter:['class'],attributeOldValue:true});\r\n window.addEventListener('pagehide',stop,{once:true});\r\n}\r\nfunction start(){setTimeout(function(){document.querySelectorAll('.cd-lesson').forEach(mountSound);},0);}\r\nif(document.readyState==='loading')document.addEventListener('DOMContentLoaded',start,{once:true});else start();\r\n})();\r\n<\/script>\r\n<style>\/* 2026-10-25 \u8a18\u4e8b\u672c\u6587\u306e\u5e45\u3092\u4f7f\u3046\u3002\u30b5\u30a4\u30c8\u3068\u53f3\u30b5\u30a4\u30c9\u30d0\u30fc\u306e\u5e45\u306f\u5909\u66f4\u3057\u306a\u3044\u3002 *\/\r\n#main .cd-lesson .cd-play,#main .cd-lesson .cd-copy{width:100%;max-width:100%;box-sizing:border-box}\r\n<\/style>\r\n<style>#main .cd-lesson .cd-game-mount,#main .cd-lesson .cd-features,#main .cd-lesson details.cd-instructions,#main .cd-lesson .cd-feedback-audio-bar{width:100%;max-width:100%;box-sizing:border-box}#main .cd-lesson .cdl-game{width:100%;max-width:100%;margin-left:0;margin-right:0}<\/style>\t\n\n\n<div class=\"cd-lesson\" data-template=\"js-lesson-v1\" data-original-post=\"12080\">\n<header class=\"cd-hero\"><div class=\"cd-hero-title\"><p class=\"cd-tags\"><a href=\"https:\/\/chicodori.net\/index.php\/en\/math-games\/?lang=en\">Math<\/a> \u00b7 <a href=\"https:\/\/chicodori.net\/index.php\/en\/math-games\/?lang=en&amp;route=relations&amp;level=3&amp;station=relations-6-2#topic-unit\">Direct &amp; inverse proportion<\/a> \u00b7 JUMP<\/p><h1 class=\"cd-title\">Direct &amp; Inverse Proportion<\/h1><\/div><figure class=\"cd-mascot\"><img decoding=\"async\" src=\"https:\/\/chicodori.net\/wp-content\/uploads\/2023\/05\/chicodori-san01.png\" alt=\"Chicodori bird\"><\/figure><\/header>\n<section class=\"cd-common-points\" data-cd-common-points=\"1\" aria-label=\"Game features\"><div class=\"cd-common-point\" data-feature-key=\"read\"><svg viewBox=\"0 0 48 48\" aria-hidden=\"true\" focusable=\"false\"><g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M6 10q9-5 18 0 9-5 18 0v29q-9-5-18 0-9-5-18 0ZM24 10v29M11 17h7m-7 6h7m12-6h7m-7 6h7\"\/><\/g><\/svg><span>Read tables<\/span><\/div><div class=\"cd-common-point\" data-feature-key=\"choose\"><svg viewBox=\"0 0 48 48\" aria-hidden=\"true\" focusable=\"false\"><g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"8\" y=\"8\" width=\"14\" height=\"13\" rx=\"3\"\/><rect x=\"27\" y=\"8\" width=\"13\" height=\"13\" rx=\"3\"\/><path d=\"M20 38l-5-7c-2-3 1-5 3-3l3 3V18c0-4 5-4 5 0v9l3-1 3 2 3 1v7l-3 5H23Z\"\/><\/g><\/svg><span>Choose<\/span><\/div><div class=\"cd-common-point\" data-feature-key=\"retry\"><svg viewBox=\"0 0 48 48\" aria-hidden=\"true\" focusable=\"false\"><g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 20a13 13 0 1 1 1 12M12 11v10h10\"\/><\/g><\/svg><span>Try again<\/span><\/div><\/section>\n<section class=\"cd-copy\"><h2>What is this game?<\/h2><p>Fill the gaps in a table.<br> Spot direct or inverse proportion.<br> Choose the equation and solve the challenge.<\/p><\/section>\n<section class=\"cd-play\"><div class=\"cd-play-heading\"><h2 class=\"cd-section-title\" id=\"cd-play-title\">Let\u2019s play!<\/h2><\/div><div class=\"cd-like\"><div class=\"ifw_wrap ifw_center\"><button class=\"ifw_btn\" data-postid=\"16273\" data-buttoncount=\"1\">\u3053\u308c\u597d\u304d<span class=\"material-symbols-rounded\">favorite<\/span><span class=\"ifw_count\" id=\"ifw_count_16273_1\">4<\/span><\/button><div class=\"ifw_message_wrap ifw_top_left\" id=\"ifw_message_16273_1\"><div class=\"ifw_message\"><div class=\"ifw_text\"><p class=\"ifw_processing\">\u9001\u4fe1\u4e2d\u3067\u3059<\/p><\/div><\/div><div class=\"ifw_arrow\"><\/div><\/div><div class=\"ifw_message_wrap ifw_top_left ifw_thanks\" id=\"ifw_thanks_16273_1\"><div class=\"ifw_close\" data-id=\"16273_1\">\u00d7<\/div><div class=\"ifw_message\"><div class=\"ifw_image\"><img decoding=\"async\" src=\"\" id=\"ifw_image_16273_1\"><\/div><div class=\"ifw_text\" id=\"ifw_showmessage_16273_1\"><\/div><\/div><div class=\"ifw_arrow\"><\/div><\/div><\/div><\/div><div class=\"cd-game-mount\"><style>\n.ratio-game {\n  max-width: 860px;\n  margin: 40px auto;\n  padding: 24px;\n  background: #f4fbff;\n  border: 3px solid #4bb7e8;\n  border-radius: 24px;\n  font-family: \"Hiragino Sans\", \"Yu Gothic\", sans-serif;\n  color: #222;\n}\n\n.ratio-game * {\n  box-sizing: border-box;\n}\n\n.ratio-game h2 {\n  margin: 0 0 18px;\n  text-align: center;\n  font-size: 28px;\n  color: #0077aa;\n}\n\n.ratio-top {\n  display: flex;\n  justify-content: space-between;\n  gap: 12px;\n  flex-wrap: wrap;\n  margin-bottom: 16px;\n}\n\n.ratio-badge {\n  background: #fff;\n  border: 2px solid #4bb7e8;\n  border-radius: 999px;\n  padding: 8px 14px;\n  font-weight: bold;\n}\n\n.ratio-story {\n  background: #fff;\n  border: 2px solid #b8e6fa;\n  border-radius: 18px;\n  padding: 16px;\n  margin-bottom: 18px;\n  line-height: 1.8;\n  font-weight: bold;\n}\n\n.ratio-table-wrap {\n  overflow-x: auto;\n  margin-bottom: 18px;\n}\n\n.ratio-table {\n  width: 100%;\n  min-width: 620px;\n  border-collapse: collapse;\n  background: #fff;\n}\n\n.ratio-table th,\n.ratio-table td {\n  border: 2px solid #333;\n  text-align: center;\n  padding: 12px;\n  font-size: 20px;\n}\n\n.ratio-table th {\n  background: #dff3ff;\n}\n\n.ratio-cell {\n  min-width: 70px;\n  height: 48px;\n  font-weight: bold;\n  color: #0077aa;\n}\n\n.ratio-cell.empty {\n  background: #fffdf0;\n}\n\n.ratio-cell.filled {\n  background: #d9f8d2;\n}\n\n.ratio-target {\n  background: #ffe066 !important;\n  outline: 4px solid #ff9800;\n  outline-offset: -4px;\n  font-weight: bold;\n  color: #d35400;\n}\n\n.ratio-cell.empty.ratio-target {\n  font-size: 30px;\n}\n\n.ratio-question-box {\n  background: #fff;\n  border: 2px solid #b8e6fa;\n  border-radius: 18px;\n  padding: 18px;\n  margin-bottom: 16px;\n}\n\n.ratio-question {\n  font-size: 20px;\n  line-height: 1.7;\n  font-weight: bold;\n}\n\n.ratio-choices {\n  display: grid;\n  gap: 12px;\n}\n\n.ratio-choice {\n  width: 100%;\n  padding: 14px 16px;\n  border: 2px solid #7ccdf0;\n  border-radius: 14px;\n  background: #fff;\n  font-size: 18px;\n  font-weight: bold;\n  cursor: pointer;\n}\n\n.ratio-choice:hover {\n  background: #eaf8ff;\n}\n\n.ratio-choice.correct {\n  background: #d9f8d2;\n  border-color: #45b649;\n}\n\n.ratio-choice.wrong {\n  background: #ffd9d9;\n  border-color: #e04b4b;\n}\n\n.ratio-message {\n  min-height: 48px;\n  margin-top: 16px;\n  font-size: 18px;\n  font-weight: bold;\n  line-height: 1.6;\n}\n\n.ratio-start,\n.ratio-result {\n  text-align: center;\n  background: #fff;\n  border: 2px solid #b8e6fa;\n  border-radius: 18px;\n  padding: 24px;\n}\n\n.ratio-start button,\n.ratio-restart {\n  padding: 14px 30px;\n  border: none;\n  border-radius: 999px;\n  background: #00a6d6;\n  color: #fff;\n  font-size: 18px;\n  font-weight: bold;\n  cursor: pointer;\n}\n\n.ratio-start button:hover,\n.ratio-restart:hover {\n  background: #008fbd;\n}\n\n.ratio-game.correct-flash {\n  animation: correctFlash 0.9s ease;\n}\n\n@keyframes correctFlash {\n  0% {\n    transform: scale(1);\n    box-shadow: 0 0 0 rgba(0, 166, 214, 0);\n  }\n\n  30% {\n    transform: scale(1.03);\n    box-shadow: 0 0 35px rgba(0, 166, 214, 0.8);\n  }\n\n  60% {\n    transform: scale(1.01);\n    box-shadow: 0 0 55px rgba(255, 193, 7, 0.8);\n  }\n\n  100% {\n    transform: scale(1);\n    box-shadow: none;\n  }\n}\n\n.ratio-celebrate {\n  position: fixed;\n  inset: 0;\n  pointer-events: none;\n  z-index: 9999;\n  display: grid;\n  place-items: center;\n  font-size: 54px;\n  font-weight: bold;\n  color: #ff9800;\n  text-shadow:\n    0 3px 0 #fff,\n    0 0 18px rgba(255, 193, 7, 0.9);\n  animation: popCelebrate 1.1s ease forwards;\n}\n\n@keyframes popCelebrate {\n  0% {\n    opacity: 0;\n    transform: scale(0.4) rotate(-8deg);\n  }\n\n  25% {\n    opacity: 1;\n    transform: scale(1.25) rotate(4deg);\n  }\n\n  70% {\n    opacity: 1;\n    transform: scale(1) rotate(0);\n  }\n\n  100% {\n    opacity: 0;\n    transform: scale(1.15) translateY(-20px);\n  }\n}\n\n.ratio-star {\n  position: fixed;\n  pointer-events: none;\n  z-index: 9998;\n  font-size: 28px;\n  animation: starBurst 1.1s ease-out forwards;\n}\n\n@keyframes starBurst {\n  0% {\n    opacity: 0;\n    transform: translate(0, 0) scale(0.3) rotate(0deg);\n  }\n\n  20% {\n    opacity: 1;\n  }\n\n  100% {\n    opacity: 0;\n    transform:\n      translate(var(--x), var(--y))\n      scale(1.2)\n      rotate(360deg);\n  }\n}\n\n@media (max-width: 600px) {\n  .ratio-game {\n    margin: 20px 10px;\n    padding: 16px;\n  }\n\n  .ratio-table {\n    min-width: 520px;\n  }\n\n  .ratio-table th,\n  .ratio-table td {\n    padding: 10px;\n    font-size: 17px;\n  }\n\n  .ratio-question {\n    font-size: 18px;\n  }\n\n  .ratio-choice {\n    font-size: 16px;\n  }\n\n  .ratio-celebrate {\n    font-size: 42px;\n  }\n}\n\n.ratio-game {font-family:Arial,sans-serif;margin:24px auto;max-width:100%;overflow-wrap:anywhere;font-size:22px;}\n.ratio-game .ratio-story,.ratio-game .ratio-question,.ratio-game .ratio-choice,.ratio-game .ratio-message,.ratio-game .ratio-start,.ratio-game .ratio-result {font-size:22px;}\n.ratio-game .ratio-top {align-items:flex-start;}.ratio-game .ratio-badge{font-size:18px;}\n.ratio-game h2{line-height:1.3;}.ratio-game button{min-height:48px;white-space:normal;}\n.ratio-game .ratio-table-wrap{max-width:100%;}.ratio-game .ratio-table{min-width:600px;}\n.cd-en-how{font-size:22px;line-height:1.7;}.cd-en-how li{margin:8px 0;}\n@media(max-width:600px){.ratio-game{margin:16px 0;padding:14px;}.ratio-game .ratio-choices{grid-template-columns:1fr 1fr;gap:10px;}.ratio-game h2{font-size:27px;}.ratio-game .ratio-badge{padding:6px 10px;}}\n<\/style><script>\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  const app = document.getElementById(\"ratio-table-game\");\n  if (!app) return;\n\n const TABLE_PATTERNS = [\n  {\n    type: \"Direct proportion\",\n    title: \"Pencils at 80 yen each\",\n    story: \"Each pencil costs 80 yen. Let x be the number of pencils and y the total cost in yen.\",\n    xLabel: \"Number of pencils x\",\n    yLabel: \"Total cost y (yen)\",\n    xValues: [1, 2, 3, 4],\n    yValues: [80, 160, 240, 320],\n    formula: \"y = 80 \u00d7 x\",\n    challengeX: 6,\n    challengeY: \"480 yen\",\n    challengeChoices: [\"400 yen\", \"480 yen\", \"560 yen\", \"640 yen\"]\n  },\n  {\n    type: \"Direct proportion\",\n    title: \"Apples at 120 yen each\",\n    story: \"Each apple costs 120 yen. Let x be the number of apples and y the total cost in yen.\",\n    xLabel: \"Number of apples x\",\n    yLabel: \"Total cost y (yen)\",\n    xValues: [1, 2, 3, 4],\n    yValues: [120, 240, 360, 480],\n    formula: \"y = 120 \u00d7 x\",\n    challengeX: 5,\n    challengeY: \"600 yen\",\n    challengeChoices: [\"480 yen\", \"540 yen\", \"600 yen\", \"720 yen\"]\n  },\n  {\n    type: \"Direct proportion\",\n    title: \"Walking 60 m per minute\",\n    story: \"A person walks 60 m each minute. Let x be the time in minutes and y the distance in meters.\",\n    xLabel: \"Time x (min)\",\n    yLabel: \"Distance y (m)\",\n    xValues: [1, 2, 3, 4],\n    yValues: [60, 120, 180, 240],\n    formula: \"y = 60 \u00d7 x\",\n    challengeX: 7,\n    challengeY: \"420m\",\n    challengeChoices: [\"360m\", \"400m\", \"420m\", \"480m\"]\n  },\n  {\n    type: \"Direct proportion\",\n    title: \"Adding 2 L of water per minute\",\n    story: \"Water flows into an empty tank at 2 L per minute. Let x be the time in minutes and y the volume of water in liters.\",\n    xLabel: \"Time x (min)\",\n    yLabel: \"Water volume y (L)\",\n    xValues: [1, 2, 3, 4, 5],\n    yValues: [2, 4, 6, 8, 10],\n    formula: \"y = 2 \u00d7 x\",\n    challengeX: 8,\n    challengeY: \"16L\",\n    challengeChoices: [\"12L\", \"14L\", \"16L\", \"18L\"]\n  },\n  {\n    type: \"Direct proportion\",\n    title: \"Ribbon at 50 yen per meter\",\n    story: \"Ribbon costs 50 yen per meter. Let x be the length in meters and y the total cost in yen.\",\n    xLabel: \"Length x (m)\",\n    yLabel: \"Total cost y (yen)\",\n    xValues: [1, 2, 3, 4],\n    yValues: [50, 100, 150, 200],\n    formula: \"y = 50 \u00d7 x\",\n    challengeX: 6,\n    challengeY: \"300 yen\",\n    challengeChoices: [\"250 yen\", \"280 yen\", \"300 yen\", \"350 yen\"]\n  },\n  {\n    type: \"Direct proportion\",\n    title: \"Copies at 10 yen per sheet\",\n    story: \"Each photocopy costs 10 yen. Let x be the number of sheets and y the total cost in yen.\",\n    xLabel: \"Number of sheets x\",\n    yLabel: \"Total cost y (yen)\",\n    xValues: [3, 4, 5, 6],\n    yValues: [30, 40, 50, 60],\n    formula: \"y = 10 \u00d7 x\",\n    challengeX: 12,\n    challengeY: \"120 yen\",\n    challengeChoices: [\"100 yen\", \"110 yen\", \"120 yen\", \"130 yen\"]\n  },\n  {\n    type: \"Direct proportion\",\n    title: \"Six eggs in each box\",\n    story: \"Each box holds 6 eggs. Let x be the number of boxes and y the total number of eggs.\",\n    xLabel: \"Number of boxes x\",\n    yLabel: \"Number of eggs y\",\n    xValues: [1, 2, 3, 4],\n    yValues: [6, 12, 18, 24],\n    formula: \"y = 6 \u00d7 x\",\n    challengeX: 5,\n    challengeY: \"30 eggs\",\n    challengeChoices: [\"24 eggs\", \"30 eggs\", \"36 eggs\", \"42 eggs\"]\n  },\n  {\n    type: \"Direct proportion\",\n    title: \"Writing 40 characters per page\",\n    story: \"You write 40 characters on each page. Let x be the number of pages and y the total number of characters.\",\n    xLabel: \"Number of pages x\",\n    yLabel: \"Number of characters y\",\n    xValues: [1, 2, 3, 4],\n    yValues: [40, 80, 120, 160],\n    formula: \"y = 40 \u00d7 x\",\n    challengeX: 5,\n    challengeY: \"200 characters\",\n    challengeChoices: [\"160 characters\", \"180 characters\", \"200 characters\", \"240 characters\"]\n  },\n\n  {\n    type: \"Inverse proportion\",\n    title: \"A rectangle with an area of 36 cm\u00b2\",\n    story: \"A rectangle has an area of 36 cm\u00b2. Let x be its height in cm and y its width in cm.\",\n    xLabel: \"Height x (cm)\",\n    yLabel: \"Width y (cm)\",\n    xValues: [1, 2, 3, 4],\n    yValues: [36, 18, 12, 9],\n    formula: \"y = 36 \u00f7 x\",\n    challengeX: 6,\n    challengeY: \"6cm\",\n    challengeChoices: [\"4cm\", \"5cm\", \"6cm\", \"8cm\"]\n  },\n  {\n    type: \"Inverse proportion\",\n    title: \"Sharing 24 sweets equally\",\n    story: \"Share 24 sweets equally. Let x be the number of people and y the number of sweets each person gets.\",\n    xLabel: \"Number of people x\",\n    yLabel: \"Sweets per person y\",\n    xValues: [1, 2, 3, 4],\n    yValues: [24, 12, 8, 6],\n    formula: \"y = 24 \u00f7 x\",\n    challengeX: 6,\n    challengeY: \"4 sweets\",\n    challengeChoices: [\"3 sweets\", \"4 sweets\", \"5 sweets\", \"6 sweets\"]\n  },\n  {\n    type: \"Inverse proportion\",\n    title: \"People and time for the same task\",\n    story: \"One person takes 60 minutes to finish a task. Assume everyone works at the same rate with no extra delays. Let x be the number of people and y the time in minutes.\",\n    xLabel: \"Number of people x\",\n    yLabel: \"Time y (min)\",\n    xValues: [2, 3, 4, 5],\n    yValues: [30, 20, 15, 12],\n    formula: \"y = 60 \u00f7 x\",\n    challengeX: 6,\n    challengeY: \"10 min\",\n    challengeChoices: [\"8 min\", \"10 min\", \"12 min\", \"15 min\"]\n  },\n  {\n    type: \"Inverse proportion\",\n    title: \"Sharing 48 cards equally\",\n    story: \"Share 48 cards equally. Let x be the number of people and y the number of cards each person gets.\",\n    xLabel: \"Number of people x\",\n    yLabel: \"Cards per person y\",\n    xValues: [1, 2, 3, 4],\n    yValues: [48, 24, 16, 12],\n    formula: \"y = 48 \u00f7 x\",\n    challengeX: 6,\n    challengeY: \"8 cards\",\n    challengeChoices: [\"6 cards\", \"8 cards\", \"10 cards\", \"12 cards\"]\n  },\n  {\n    type: \"Inverse proportion\",\n    title: \"Cutting a 60 m rope into equal pieces\",\n    story: \"Cut a 60 m rope into equal pieces. Let x be the number of pieces and y the length of each piece in meters.\",\n    xLabel: \"Number of pieces x\",\n    yLabel: \"Length per piece y (m)\",\n    xValues: [2, 3, 4, 5],\n    yValues: [30, 20, 15, 12],\n    formula: \"y = 60 \u00f7 x\",\n    challengeX: 6,\n    challengeY: \"10m\",\n    challengeChoices: [\"8m\", \"10m\", \"12m\", \"15m\"]\n  },\n  {\n    type: \"Inverse proportion\",\n    title: \"Sharing 72 L of water equally\",\n    story: \"Share 72 L of water equally among containers. Let x be the number of containers and y the volume in each container in liters.\",\n    xLabel: \"Number of containers x\",\n    yLabel: \"Volume per container y (L)\",\n    xValues: [1, 2, 3, 4],\n    yValues: [72, 36, 24, 18],\n    formula: \"y = 72 \u00f7 x\",\n    challengeX: 6,\n    challengeY: \"12L\",\n    challengeChoices: [\"10L\", \"12L\", \"14L\", \"16L\"]\n  },\n  {\n    type: \"Inverse proportion\",\n    title: \"A rectangle with an area of 120 cm\u00b2\",\n    story: \"A rectangle has an area of 120 cm\u00b2. Let x be its height in cm and y its width in cm.\",\n    xLabel: \"Height x (cm)\",\n    yLabel: \"Width y (cm)\",\n    xValues: [3, 4, 5, 6],\n    yValues: [40, 30, 24, 20],\n    formula: \"y = 120 \u00f7 x\",\n    challengeX: 8,\n    challengeY: \"15cm\",\n    challengeChoices: [\"12cm\", \"15cm\", \"18cm\", \"20cm\"]\n  },\n  {\n    type: \"Inverse proportion\",\n    title: \"Speed and time for a fixed distance\",\n    story: \"A journey is 120 km long. Let x be the constant speed in km\/h and y the travel time in hours. Table values are rounded to two decimal places.\",\n    xLabel: \"Speed x (km\/h)\",\n    yLabel: \"Time y (hours)\",\n    xValues: [20, 21, 22, 23],\n    yValues: [6, 5.71, 5.45, 5.22],\n    formula: \"y = 120 \u00f7 x\",\n    challengeX: 24,\n    challengeY: \"5 hours\",\n    challengeChoices: [\"4 hours\", \"5 hours\", \"6 hours\", \"8 hours\"]\n  }\n];\n\n  let pattern = null;\n  let steps = [];\n  let current = 0;\n  let score = 0;\n  let filledY = [];\n  let answered = false;\n\n  function pickPattern() {\n    return TABLE_PATTERNS[Math.floor(Math.random() * TABLE_PATTERNS.length)];\n  }\n\n  function shuffle(array) {\n    return [...array].sort(() => Math.random() - 0.5);\n  }\n\n  function makeChoices(correct, allValues) {\n    const list = allValues.map(String);\n    const correctStr = String(correct);\n\n    const choices = [correctStr];\n\n    while (choices.length < 4) {\n      const candidate = list[Math.floor(Math.random() * list.length)];\n      if (!choices.includes(candidate)) {\n        choices.push(candidate);\n      }\n    }\n\n    return shuffle(choices);\n  }\n\n  function makeSteps() {\n    const fillSteps = pattern.xValues.map((x, index) => {\n      return {\n        level: \"Lv1\",\n        title: \"Complete the table\",\n        question: `When x = ${x}, what is y?`,\n        choices: makeChoices(pattern.yValues[index], pattern.yValues),\n        answer: String(pattern.yValues[index]),\n        fillIndex: index,\n        explanation:\n          pattern.type === \"Direct proportion\"\n            ? `Using ${pattern.formula}, when x = ${x}, y = ${pattern.yValues[index]}.`\n            : `Using ${pattern.formula}, when x = ${x}, y = ${pattern.yValues[index]}.`\n      };\n    });\n\n    const changeAnswer = pattern.type === \"Direct proportion\" ? \"It increases\" : \"It decreases\";\n\n    return [\n      ...fillSteps,\n      {\n        level: \"Lv2\",\n        title: \"Look at the changes\",\n        question: \"In this table, what happens to y as x increases?\",\n        choices: [\"It increases\", \"It decreases\", \"It stays the same\", \"It changes irregularly\"],\n        answer: changeAnswer,\n        explanation:\n          pattern.type === \"Direct proportion\"\n            ? \"In this table, y increases as x increases.\"\n            : \"In this table, y decreases as x increases.\"\n      },\n      {\n        level: \"Lv2\",\n        title: \"Which relationship?\",\n        question: \"What is the relationship between x and y?\",\n        choices: [\"Direct proportion\", \"Inverse proportion\", \"Neither\", \"Cannot tell yet\"],\n        answer: pattern.type,\n        explanation:\n          pattern.type === \"Direct proportion\"\n            ? \"When x doubles or triples, y also doubles or triples. The ratio y \u00f7 x stays constant: this is direct proportion.\"\n            : \"The product x \u00d7 y stays constant. This is inverse proportion.\"\n      },\n      {\n        level: \"Lv3\",\n        title: \"Choose an equation\",\n        question: \"Which equation shows the relationship between x and y?\",\n        choices: makeFormulaChoices(),\n        answer: pattern.formula,\n        explanation: `This table follows ${pattern.formula}.`\n      },\n      {\n        level: \"Lv4\",\n        title: \"Challenge\",\n        question: `When x = ${pattern.challengeX}, what is y?`,\n        choices: pattern.challengeChoices,\n        answer: pattern.challengeY,\n        explanation: `Substitute x = ${pattern.challengeX} into ${pattern.formula}. The answer is ${pattern.challengeY}.`\n      }\n    ];\n  }\n\n  function makeFormulaChoices() {\n    const baseNumber = pattern.type === \"Direct proportion\"\n      ? Number(pattern.yValues[0]) \/ Number(pattern.xValues[0])\n      : Number(pattern.xValues[0]) * Number(pattern.yValues[0]);\n\n    const correct = pattern.formula;\n\n    const wrongs = pattern.type === \"Direct proportion\"\n      ? [\n          `y = ${baseNumber} \u00f7 x`,\n          `y = x \u00f7 ${baseNumber}`,\n          `y = x + ${baseNumber}`\n        ]\n      : [\n          `y = ${baseNumber} \u00d7 x`,\n          `y = x \u00f7 ${baseNumber}`,\n          `y = x + ${baseNumber}`\n        ];\n\n    return shuffle([correct, ...wrongs]);\n  }\n\n  function renderStart() {\n    app.innerHTML = `\n      <div class=\"ratio-game\">\n        <h2>Direct & Inverse Proportion<\/h2>\n        <div class=\"ratio-start\">\n          <p>Explore tables and identify direct or inverse proportion.<\/p>\n          <p>Fill the gaps, compare the values and choose an equation.<\/p>\n          <button id=\"startBtn\">Start<\/button>\n        <\/div>\n      <\/div>\n    `;\n\n    document.getElementById(\"startBtn\").addEventListener(\"click\", startGame);\n  }\n\n  function startGame() {\n    pattern = pickPattern();\n    steps = makeSteps();\n    current = 0;\n    score = 0;\n    filledY = Array(pattern.xValues.length).fill(\"\");\n    answered = false;\n    renderQuestion();\n  }\n\n  function renderQuestion() {\n    answered = false;\n    const step = steps[current];\n\n    app.innerHTML = `\n      <div class=\"ratio-game\">\n        <h2>Direct & Inverse Proportion<\/h2>\n\n        <div class=\"ratio-top\">\n          <div class=\"ratio-badge\">${step.level}\uff1a${step.title}<\/div>\n          <div class=\"ratio-badge\">Question ${current + 1} \/ ${steps.length}<\/div>\n          <div class=\"ratio-badge\">Score ${score}<\/div>\n        <\/div>\n\n        <div class=\"ratio-story\">\n          <strong>${pattern.title}<\/strong><br>\n          ${pattern.story}\n        <\/div>\n\n        ${renderTable()}\n\n        <div class=\"ratio-question-box\">\n          <div class=\"ratio-question\">${step.question}<\/div>\n        <\/div>\n\n        <div class=\"ratio-choices\">\n          ${step.choices.map(choice => `\n            <button class=\"ratio-choice\" data-choice=\"${choice}\">\n              ${choice}\n            <\/button>\n          `).join(\"\")}\n        <\/div>\n\n        <div id=\"message\" class=\"ratio-message\"><\/div>\n      <\/div>\n    `;\n\n    document.querySelectorAll(\".ratio-choice\").forEach(btn => {\n      btn.addEventListener(\"click\", checkAnswer);\n    });\n  }\n\n  function renderTable() {\n    const step = steps[current];\n\n    return `\n      <div class=\"ratio-table-wrap\">\n        <table class=\"ratio-table\">\n          <tr>\n            <th>${pattern.xLabel}<\/th>\n            ${pattern.xValues.map((x, index) => {\n              const targetClass = step.fillIndex === index ? \"ratio-target\" : \"\";\n              return `<td class=\"${targetClass}\">${x}<\/td>`;\n            }).join(\"\")}\n          <\/tr>\n          <tr>\n            <th>${pattern.yLabel}<\/th>\n            ${pattern.xValues.map((_, index) => {\n              const isTarget = step.fillIndex === index;\n              const value = filledY[index];\n              const cellClass = [\n                \"ratio-cell\",\n                value === \"\" ? \"empty\" : \"filled\",\n                isTarget ? \"ratio-target\" : \"\"\n              ].join(\" \");\n\n              return `\n                <td class=\"${cellClass}\">\n                  ${value === \"\" ? (isTarget ? \"\uff1f\" : \"\") : value}\n                <\/td>\n              `;\n            }).join(\"\")}\n          <\/tr>\n        <\/table>\n      <\/div>\n    `;\n  }\n\n  function checkAnswer(e) {\n    if (answered) return;\n    answered = true;\n\n    const selected = e.currentTarget.dataset.choice;\n    const step = steps[current];\n    const buttons = document.querySelectorAll(\".ratio-choice\");\n    const message = document.getElementById(\"message\");\n    const gameBox = document.querySelector(\".ratio-game\");\n\n    buttons.forEach(btn => {\n      btn.disabled = true;\n\n      if (btn.dataset.choice === step.answer) {\n        btn.classList.add(\"correct\");\n      }\n\n      if (btn.dataset.choice === selected && selected !== step.answer) {\n        btn.classList.add(\"wrong\");\n      }\n    });\n\n    if (selected === step.answer) {\n      score++;\n\n      if (step.fillIndex !== undefined) {\n        filledY[step.fillIndex] = step.answer;\n      }\n\n      message.textContent = `Correct! ${step.explanation}`;\n\n      gameBox.classList.add(\"correct-flash\");\n      showCelebrate();\n      showStars();\n\n      setTimeout(goNext, 1600);\n    } else {\n      message.textContent = \"Try again. Look at the table and choose another answer.\";\n\n      setTimeout(() => {\n        buttons.forEach(btn => {\n          btn.disabled = false;\n          btn.classList.remove(\"wrong\");\n          btn.classList.remove(\"correct\");\n        });\n\n        answered = false;\n        message.textContent = \"\";\n      }, 900);\n    }\n  }\n\n  function goNext() {\n    current++;\n\n    if (current >= steps.length) {\n      renderResult();\n    } else {\n      renderQuestion();\n    }\n  }\n\n  function renderResult() {\n    let comment = \"\";\n\n    if (score === steps.length) {\n      comment = \"Great work! You completed every step correctly.\";\n    } else if (score >= steps.length - 2) {\n      comment = \"Nice work! Keep connecting tables with equations.\";\n    } else {\n      comment = \"Try again and look closely at how the values change.\";\n    }\n\n    app.innerHTML = `\n      <div class=\"ratio-game\">\n        <h2>Direct & Inverse Proportion<\/h2>\n\n        <div class=\"ratio-result\">\n          <h3>Results<\/h3>\n          <p>${score} of ${steps.length} steps correct!<\/p>\n          <p>${comment}<\/p>\n\n          <div class=\"ratio-story\">\n            <strong>${pattern.title}<\/strong><br>\n            ${pattern.story}<br>\n            Relationship: ${pattern.type}<br>\n            Equation: ${pattern.formula}\n          <\/div>\n\n          ${renderFinalTable()}\n\n          <button id=\"restartBtn\" class=\"ratio-restart\">Play again<\/button>\n        <\/div>\n      <\/div>\n    `;\n\n    document.getElementById(\"restartBtn\").addEventListener(\"click\", startGame);\n  }\n\n  function renderFinalTable() {\n    return `\n      <div class=\"ratio-table-wrap\">\n        <table class=\"ratio-table\">\n          <tr>\n            <th>${pattern.xLabel}<\/th>\n            ${pattern.xValues.map(x => `<td>${x}<\/td>`).join(\"\")}\n          <\/tr>\n          <tr>\n            <th>${pattern.yLabel}<\/th>\n            ${pattern.yValues.map(y => `<td class=\"ratio-cell filled\">${y}<\/td>`).join(\"\")}\n          <\/tr>\n        <\/table>\n      <\/div>\n    `;\n  }\n\n  function showCelebrate() {\n    const div = document.createElement(\"div\");\n    div.className = \"ratio-celebrate\";\n    div.textContent = \"Correct!\";\n    document.body.appendChild(div);\n\n    setTimeout(() => {\n      div.remove();\n    }, 1200);\n  }\n\n  function showStars() {\n    const marks = [\"\u2605\", \"\u2728\", \"\ud83c\udf1f\", \"\u25ce\", \"\u2605\"];\n\n    for (let i = 0; i < 20; i++) {\n      const star = document.createElement(\"div\");\n      star.className = \"ratio-star\";\n      star.textContent = marks[Math.floor(Math.random() * marks.length)];\n\n      star.style.left = \"50%\";\n      star.style.top = \"45%\";\n      star.style.setProperty(\"--x\", `${Math.random() * 560 - 280}px`);\n      star.style.setProperty(\"--y\", `${Math.random() * 380 - 190}px`);\n\n      document.body.appendChild(star);\n\n      setTimeout(() => {\n        star.remove();\n      }, 1200);\n    }\n  }\n\n  renderStart();\n});\n\ndocument.addEventListener('DOMContentLoaded',()=>{\n  const lesson=document.querySelector('.cd-lesson[data-original-post=\"12080\"]');\n  if(!lesson)return;\n  const words={'\u3053\u308c\u597d\u304d':'I like this','\u97f3\u3042\u308a':'Sound on','\u97f3\u306a\u3057':'Sound off','\u6b63\u89e3\u30fb\u4e0d\u6b63\u89e3\u306e\u97f3':'Answer sounds'};\n  function localize(){\n    const walker=document.createTreeWalker(lesson,NodeFilter.SHOW_TEXT);\n    let n;while(n=walker.nextNode()){\n      if(n.parentElement.closest('script,style'))continue;\n      const t=n.nodeValue.trim();if(words[t])n.nodeValue=n.nodeValue.replace(t,words[t]);\n    }\n    lesson.querySelectorAll('[aria-label=\"\u52b9\u679c\u97f3\"]').forEach(el=>el.setAttribute('aria-label','Answer sounds'));\n  }\n  localize();new MutationObserver(localize).observe(lesson,{childList:true,subtree:true,characterData:true});\n});\n<\/script><div id=\"ratio-table-game\"><\/div><\/div><\/section>\n<section class=\"cd-copy cd-en-how\"><h2>How to play<\/h2><ol><li>Tap <strong>Start<\/strong> and read the story.<\/li><li>Look at the highlighted column. Choose the missing value.<\/li><li>Compare x and y, choose the relationship and equation, then solve the challenge.<\/li><\/ol><p>Correct answers move you on automatically. If you make a mistake, try another answer.<\/p><\/section>\n<details class=\"cd-copy cd-en-how\"><summary>For parents and teachers<\/summary><p>This game connects tables, direct and inverse proportion, and equations through everyday examples. Each round selects one of 16 situations.<\/p><p>In direct proportion, y \u00f7 x is constant. In inverse proportion, x \u00d7 y is constant. Increasing or decreasing values alone do not establish either relationship.<\/p><p>Money problems use Japanese yen (\u00a5). Speed is measured in km\/h, and water in liters. The fixed-distance table rounds travel times to two decimal places. The group-work example assumes equal working rates and no extra delays.<\/p><\/details>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Complete tables, compare how x and y change, and choose an equation for direct or inverse proportion.<\/p>\n","protected":false},"author":1,"featured_media":16284,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2614],"tags":[2677,2684],"cd_learning_unit":[],"cd_english_grade":[2532],"class_list":["post-16273","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-math","tag--en","tag-6-en","entry","has-media"],"_links":{"self":[{"href":"https:\/\/chicodori.net\/index.php\/wp-json\/wp\/v2\/posts\/16273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chicodori.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chicodori.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chicodori.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chicodori.net\/index.php\/wp-json\/wp\/v2\/comments?post=16273"}],"version-history":[{"count":3,"href":"https:\/\/chicodori.net\/index.php\/wp-json\/wp\/v2\/posts\/16273\/revisions"}],"predecessor-version":[{"id":16285,"href":"https:\/\/chicodori.net\/index.php\/wp-json\/wp\/v2\/posts\/16273\/revisions\/16285"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/chicodori.net\/index.php\/wp-json\/wp\/v2\/media\/16284"}],"wp:attachment":[{"href":"https:\/\/chicodori.net\/index.php\/wp-json\/wp\/v2\/media?parent=16273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chicodori.net\/index.php\/wp-json\/wp\/v2\/categories?post=16273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chicodori.net\/index.php\/wp-json\/wp\/v2\/tags?post=16273"},{"taxonomy":"cd_learning_unit","embeddable":true,"href":"https:\/\/chicodori.net\/index.php\/wp-json\/wp\/v2\/cd_learning_unit?post=16273"},{"taxonomy":"cd_english_grade","embeddable":true,"href":"https:\/\/chicodori.net\/index.php\/wp-json\/wp\/v2\/cd_english_grade?post=16273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}