@font-face{font-family:Fredoka;src:url(/fonts/fredoka-latin.woff2)format("woff2");font-style:normal;font-weight:400 700;font-display:swap}@font-face{font-family:Nunito;src:url(/fonts/nunito-latin.woff2)format("woff2");font-style:normal;font-weight:400 900;font-display:swap}:root{color:#243d35;font-synthesis:none;--ink:#243d35;--muted:#52665a;--paper:#fff9ed;--paper-dark:#eee6d3;--green:#28684d;--green-dark:#1f503c;--line:#c6cdb9;--panel-shadow:0 8px 24px #203f3030;--button-shadow:0 3px 7px #243d3526;--edge-left:max(1.25rem, env(safe-area-inset-left,0px));--edge-right:max(1.25rem, env(safe-area-inset-right,0px));--edge-top:max(1.25rem, env(safe-area-inset-top,0px));--edge-bottom:max(1.25rem, env(safe-area-inset-bottom,0px));scrollbar-color:#8b9e87 var(--paper-dark);scrollbar-width:thin;background:#e7ddc6;font-family:Nunito,sans-serif;font-weight:600}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}body{overscroll-behavior:none}::selection{color:#fff9ed;background:#28684d}button,input{font:inherit}button{border:1px solid var(--line);min-height:48px;color:var(--ink);background:var(--paper);cursor:pointer;box-shadow:var(--button-shadow);-webkit-tap-highlight-color:transparent;border-radius:12px;justify-content:center;align-items:center;gap:.55rem;padding:.65rem 1rem;font-weight:800;transition:background .15s,border-color .15s,box-shadow .15s,translate .15s;display:inline-flex}button:hover{background:#f0ecd9;border-color:#91a28a}button:active,button.pressed{translate:0 2px;box-shadow:0 1px 3px #243d3526}button:disabled{opacity:.5;cursor:default;translate:none}button:focus-visible,input:focus-visible,summary:focus-visible{outline-offset:4px;outline:3px solid #93601b}input{caret-color:var(--green)}h1,h2,h3{font-family:Fredoka,Nunito,sans-serif;font-weight:550}[hidden]{display:none!important}.ui-icon{flex:none;width:24px;height:24px;display:block}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}#classroom{touch-action:none;width:100%;height:100%;display:block}#classroom:focus{outline:none}.welcome{--welcome-gap:5vw;--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);padding:calc(var(--welcome-gap) + var(--safe-top)) calc(var(--welcome-gap) + var(--safe-right)) calc(var(--welcome-gap) + var(--safe-bottom)) calc(var(--welcome-gap) + var(--safe-left));background:linear-gradient(90deg,#fff7e8fa,#fff7e8f2 38%,#fff7e8ca 50%,#fff7e830 65%,#fff7e800 82%);align-items:start;display:grid;position:absolute;inset:0;overflow-y:auto}.welcome-panel{width:min(30rem,100%);margin-block:auto;margin-inline-start:max(0px, calc(38.2vw - var(--welcome-gap) - var(--safe-left) - 15rem));position:relative}.school-crest{aspect-ratio:1;object-fit:contain;border-radius:50%;width:clamp(48px,8vw,80px);height:auto;display:block;position:absolute;top:0;right:0}h1{letter-spacing:-.025em;color:var(--green-dark);margin:0 0 1.5rem;font-size:clamp(3.25rem,5.7vw,5.4rem);line-height:1.02}h1 span{display:block}.welcome-first{letter-spacing:.01em;margin-bottom:.55em;font-size:.3em;font-weight:450}.welcome-last{letter-spacing:-.015em;margin-top:.2em;font-size:.55em;font-weight:450}.intro{color:var(--muted);margin:0 0 1.75rem;font-size:1.05rem;line-height:1.65}.load-status{color:var(--muted);margin:0 0 .6rem;font-size:.9rem;line-height:1.5}.load-status[role=alert]{color:#873b21;max-width:27rem}progress{width:min(19rem,100%);height:8px;accent-color:var(--green);background:#d6ddc9;border:0;border-radius:8px;margin:0 0 1.5rem;display:block;overflow:hidden}progress::-webkit-progress-bar{background:#d6ddc9}progress::-webkit-progress-value{background:var(--green);border-radius:8px}progress::-moz-progress-bar{background:var(--green);border-radius:8px}.primary{color:#fffdf4;background:var(--green);border:1px solid #245e45;border-radius:14px;min-width:12rem;padding:.9rem 1.5rem;font-size:1.12rem;box-shadow:0 5px 12px #204c3b33}.primary:hover{background:var(--green-dark);border-color:#153f2b}.primary:disabled{cursor:wait}.primary .ui-icon{width:26px;height:26px}.welcome-actions{flex-wrap:wrap;align-items:stretch;gap:.75rem;display:flex}.welcome-actions button:not(.primary){background:#fff9eddb}.welcome-note,.save-status{color:var(--muted);font-size:.85rem;line-height:1.5}.welcome-note{margin:1.1rem 0 0}.save-status{max-width:25rem;margin:1rem 0 0}.save-status:empty{display:none}.game-header{z-index:8;top:var(--edge-top);left:var(--edge-left);align-items:center;gap:.6rem;display:flex;position:absolute}.game-header .icon-button{width:48px;height:48px;box-shadow:var(--panel-shadow);border-color:#ffffffc7;border-radius:14px;padding:11px;position:relative}.icon-button svg{width:24px;height:24px}.icon-button[aria-expanded=true]{background:var(--green);border-color:var(--green-dark);color:var(--paper)}.icon-button .sound-off,.icon-button .sound-paused,.icon-button .sound-unavailable,.icon-button:not([data-state=enabled]) .sound-waves{display:none}.icon-button[data-state=muted] .sound-off,.icon-button[data-state=paused] .sound-paused,.icon-button[data-state=unavailable] .sound-unavailable{display:initial}#save-badge{white-space:nowrap;background:var(--paper);color:#873b21;border-radius:5px;padding:.2rem .35rem;font-size:.65rem;position:absolute;top:calc(100% + 4px)}.game-menu,.sound-panel{z-index:7;top:max(5rem, calc(env(safe-area-inset-top,0px) + 3.75rem));left:var(--edge-left);width:min(23rem, calc(100% - var(--edge-left) - var(--edge-right)));max-height:calc(100dvh - max(5rem, calc(env(safe-area-inset-top,0px) + 3.75rem)) - var(--edge-bottom));overscroll-behavior:contain;touch-action:pan-y;background:var(--paper);box-shadow:var(--panel-shadow);border:1px solid #ffffffc7;border-radius:16px;padding:1.25rem;position:absolute;overflow-y:auto}.panel-heading{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.panel-heading h2{margin:0;font-size:1.5rem}.panel-heading button{background:var(--paper-dark);min-width:44px;min-height:44px;box-shadow:none;border-color:#0000;padding:.5rem}.game-menu h3{align-items:center;gap:.5rem;margin:1.25rem 0 .4rem;font-size:1.1rem;display:flex}.game-menu h3 .ui-icon{color:var(--green)}.game-menu p,.sound-panel p{margin:.65rem 0 1rem;font-size:.9rem;line-height:1.65}.game-menu .keyboard-guide{line-height:2.15}.game-menu .save-status{margin-bottom:0}#orientation-hint{background:#e7eddc;border:1px solid #c6d3b7;border-radius:10px;align-items:flex-start;gap:.65rem;padding:.8rem;display:flex}#orientation-hint>.ui-icon{color:var(--green);margin-top:.15rem}.sound-panel label{justify-content:space-between;align-items:center;gap:.6rem;font-size:.95rem;font-weight:800;display:flex}.sound-panel output{background:var(--paper-dark);color:var(--green-dark);font-variant-numeric:tabular-nums;border-radius:7px;padding:.2rem .5rem;font-size:.85rem}.sound-panel input{width:100%;height:30px;accent-color:var(--green);cursor:pointer;margin:.3rem 0 1rem;display:block}.sound-help{border-top:1px solid var(--line);margin-top:.75rem}.sound-help summary{cursor:pointer;min-height:44px;padding-block:.9rem;font-size:.9rem;font-weight:800}.sound-help p:last-child{margin-bottom:0}.tasks{right:var(--edge-right);top:var(--edge-top);box-shadow:var(--panel-shadow);background:#fff9edf5;border:1px solid #ffffffc7;border-radius:16px;padding:1rem 1.1rem;position:absolute}.task-heading{justify-content:space-between;align-items:center;gap:1.5rem;margin-bottom:.65rem;display:flex}.tasks h2{margin:0;font-size:1.25rem}#task-progress{color:var(--green-dark);font-variant-numeric:tabular-nums;background:#e5eddc;border-radius:8px;padding:.15rem .5rem;font-size:.85rem;font-weight:900}.tasks ul{margin:0;padding:0;list-style:none}.tasks li{align-items:center;gap:.65rem;margin-top:.5rem;font-size:.85rem;font-weight:700;line-height:1.3;display:flex}.task-mark{width:30px;height:30px;color:var(--green);background:#e2eadc;border-radius:9px;flex:none;place-items:center;display:grid}.task-mark .ui-icon{width:21px;height:21px}[data-task=water] .task-mark{color:#326674;background:#e2edf0}[data-task=math] .task-mark{color:#80561f;background:#f2e6ce}.tasks .complete .task-mark{background:var(--green);color:var(--paper)}.tasks .complete{color:var(--green-dark)}.round-complete{top:max(5rem, calc(env(safe-area-inset-top,0px) + 4rem));left:var(--edge-left);width:min(23rem, calc(100% - var(--edge-left) - var(--edge-right)));color:var(--green-dark);box-shadow:var(--panel-shadow);background:#eff5e5f7;border:2px solid #b7c9a1;border-radius:16px;align-items:flex-start;gap:.65rem;margin:0;padding:1rem 1.25rem;font-weight:800;line-height:1.55;display:flex;position:absolute}.answering .round-complete{display:none}kbd{vertical-align:middle;min-width:25px;height:28px;color:var(--ink);text-transform:uppercase;white-space:nowrap;background:#fffff7;border:1px solid #b5c0aa;border-bottom-width:3px;border-radius:6px;justify-content:center;align-items:center;margin-inline:1px;padding:0 .35rem;font:800 .75rem Nunito,sans-serif;display:inline-flex;box-shadow:0 2px 3px #243d3512}.key-group{white-space:nowrap;vertical-align:middle;gap:2px;display:inline-flex}.key-group kbd{margin:0}.hint{left:50%;bottom:var(--edge-bottom);width:max-content;max-width:calc(100% - var(--edge-left) - var(--edge-right));box-shadow:var(--panel-shadow);color:var(--ink);background:#fff9edf5;border:1px solid #ffffffbd;border-radius:14px;flex-wrap:wrap;justify-content:center;align-items:center;gap:.6rem 1.1rem;margin:0;padding:.75rem 1rem;font-size:.85rem;display:flex;position:absolute;transform:translate(-50%)}.hint-item{justify-content:center;align-items:center;gap:.5rem;line-height:1.6;display:inline-flex}.hint-item>.ui-icon{width:21px;height:21px;color:var(--green)}.joystick{left:var(--edge-left);bottom:var(--edge-bottom);width:152px;height:152px;box-shadow:var(--panel-shadow);touch-action:none;-webkit-user-select:none;user-select:none;background:#274f40cb;border:3px solid #fff9e8eb;border-radius:50%;position:absolute}.joystick:before{content:"";background:#fff9e81a;border:1px solid #fff9e88f;border-radius:50%;position:absolute;inset:25px}.joystick-run,.joystick-walk{color:#fff9e8;pointer-events:none;font-size:.72rem;font-weight:800;position:absolute;left:50%;transform:translate(-50%)}.joystick-run{top:6px}.joystick-walk{top:36px}.joystick-thumb{pointer-events:none;background:#f6df9e;border:2px solid #fffaf0;border-radius:50%;width:40px;height:40px;position:absolute;top:50%;left:50%;box-shadow:0 3px 9px #162f2470}.joystick.running{background:#785623ed;border-color:#f6d780}.jump-button{right:var(--edge-right);bottom:max(2.5rem, calc(env(safe-area-inset-bottom,0px) + 1.25rem));background:var(--green-dark);width:88px;height:88px;color:var(--paper);box-shadow:var(--panel-shadow);touch-action:none;-webkit-user-select:none;user-select:none;border:2px solid #fff9e8eb;border-radius:50%;flex-direction:column;gap:.1rem;padding:.5rem;font-size:.9rem;position:absolute}.jump-button .ui-icon{width:28px;height:28px}.jump-button:hover{background:var(--green);border-color:#fff9e8eb}.jump-button.pressed{background:#785623;border-color:#f6d780}.interact-button{right:var(--edge-right);bottom:max(8.75rem, calc(env(safe-area-inset-bottom,0px) + 7.5rem));min-width:96px;min-height:56px;color:var(--paper);box-shadow:var(--panel-shadow);touch-action:none;background:#995416;border:2px solid #fff9e8eb;border-radius:14px;position:absolute}.interact-button:hover{background:#7e4311;border-color:#fff9e8eb}.touch-mode .hint{width:min(27rem, calc(100% - var(--edge-left) - var(--edge-right)));bottom:max(12.5rem, calc(env(safe-area-inset-bottom,0px) + 11.25rem));gap:.4rem 1rem;font-size:.82rem}.task-marker{color:var(--paper);background:var(--green-dark);box-shadow:var(--button-shadow);pointer-events:none;white-space:nowrap;border:2px solid #fff9e8;border-radius:10px;align-items:center;gap:.35rem;padding:.4rem .65rem;font-size:.85rem;font-weight:800;display:flex;position:absolute;transform:translate(-50%,-100%)}.task-marker .ui-icon{width:20px;height:20px}.question-card{z-index:2;right:var(--edge-right);top:max(14rem, calc(env(safe-area-inset-top,0px) + 12.75rem));width:min(24rem, calc(100% - var(--edge-left) - var(--edge-right)));max-height:calc(100% - max(14rem, calc(env(safe-area-inset-top,0px) + 12.75rem)) - 5.5rem - env(safe-area-inset-bottom,0px));overscroll-behavior:contain;background:var(--paper);box-shadow:var(--panel-shadow);touch-action:pan-y;border:1px solid #ffffffc7;border-radius:16px;padding:1.25rem;position:absolute;overflow-y:auto}.question-title{align-items:flex-start;gap:.8rem;margin-bottom:1.25rem;display:flex}.question-title>.ui-icon{width:36px;height:36px;color:var(--green);background:#e2eadc;border-radius:10px;padding:6px}.question-card[data-subject=math] .question-title>.ui-icon{color:#80561f;background:#f2e6ce}.question-card h2{margin:.15rem 0 0;font-size:1.55rem;line-height:1.25}.answer-label{margin-bottom:.5rem;font-size:.85rem;font-weight:800;display:block}.math-answer{width:100%;height:3.5rem;color:var(--ink);text-align:center;background:#fffef6;border:2px solid #a6b59b;border-radius:10px;font-family:Fredoka,Nunito,sans-serif;font-size:1.9rem;font-weight:500}.number-pad{grid-template-columns:repeat(3,1fr);gap:.5rem;margin:.85rem 0 1rem;display:grid}.number-pad button{touch-action:manipulation;background:#f1eddd;border-color:#ccd0bc;border-radius:10px;min-height:46px;padding:.4rem;font-family:Fredoka,Nunito,sans-serif;font-size:1.35rem;font-weight:500}.number-pad button:hover{background:#e3e9d3}.number-pad .delete-digit{grid-column:span 2;font-family:Nunito,sans-serif;font-size:.9rem;font-weight:800}.check-answer{width:100%;min-width:0;padding:.75rem;font-size:1rem}.answer-feedback{color:#72451b;background:#f3e7cf;border-radius:10px;margin:1rem 0 0;padding:.8rem;font-size:.95rem;line-height:1.55}.answer-feedback:empty{display:none}.answer-feedback.correct{color:var(--green-dark);background:#e5eddc;font-weight:800}.science-choices{border:0;margin:0 0 1rem;padding:0}.science-choices legend{margin-bottom:.65rem;font-size:.85rem;font-weight:800}.science-choice{cursor:pointer;touch-action:pan-y;background:#f4f0e1;border:2px solid #c7cfb9;border-radius:12px;align-items:center;gap:.75rem;min-height:56px;margin-bottom:.6rem;padding:.85rem;font-size:.95rem;line-height:1.4;display:flex}.science-choice:has(input:checked){border-color:var(--green);background:#e4ecd8}.science-choice:has(input:focus-visible){outline-offset:2px;outline:3px solid #93601b}.science-choice input{width:1.2rem;height:1.2rem;accent-color:var(--green);flex:none;margin:0}.science-choice:has(input:disabled){cursor:default}.answering .interact-button{z-index:4;bottom:var(--edge-bottom)}.answering .hint{bottom:var(--edge-bottom);left:var(--edge-left);max-width:calc(100% - var(--edge-left) - var(--edge-right) - 7rem);width:auto;transform:none}#replay-confirmation{width:min(29rem,100% - 2rem);max-height:calc(100% - 2rem);color:var(--ink);background:var(--paper);box-shadow:var(--panel-shadow);border:1px solid #ffffffc7;border-radius:16px;padding:1.5rem;overflow:auto}#replay-confirmation::backdrop{background:#203a338c}#replay-confirmation h2{margin:0 0 .8rem;font-size:1.8rem}#replay-confirmation p{margin:0;line-height:1.65}.dialog-actions{flex-wrap:wrap;justify-content:flex-end;gap:.75rem;margin-top:1.5rem;display:flex}.dialog-actions .primary{min-width:0;font-size:1rem}@media (width<=640px){:root{--edge-left:max(.75rem, env(safe-area-inset-left,0px));--edge-right:max(.75rem, env(safe-area-inset-right,0px));--edge-top:max(.75rem, env(safe-area-inset-top,0px))}.welcome{--welcome-gap:2rem;background:linear-gradient(110deg,#fff7e8f5,#fff7e8d9)}.welcome h1{font-size:clamp(3rem,12vw,4.5rem)}.welcome .primary{min-width:10rem}.game-menu,.sound-panel{top:max(4.5rem, calc(env(safe-area-inset-top,0px) + 3.75rem));max-height:calc(100dvh - max(4.5rem, calc(env(safe-area-inset-top,0px) + 3.75rem)) - var(--edge-bottom))}.tasks{max-width:calc(100% - var(--edge-left) - var(--edge-right) - 7.25rem);padding:.75rem}.task-heading{gap:.75rem;margin-bottom:.5rem}.tasks h2{font-size:1.05rem}#task-progress{font-size:.75rem}.tasks li{gap:.45rem;margin-top:.4rem;font-size:.75rem}.task-mark{border-radius:8px;width:26px;height:26px}.task-mark .ui-icon{width:19px;height:19px}.round-complete{top:max(13rem, calc(env(safe-area-inset-top,0px) + 12rem))}.question-card{top:max(13rem, calc(env(safe-area-inset-top,0px) + 12rem));max-height:calc(100% - max(13rem, calc(env(safe-area-inset-top,0px) + 12rem)) - 5.5rem - env(safe-area-inset-bottom,0px));padding:1rem}.question-card h2{font-size:1.35rem}.hint-item>.ui-icon{width:19px;height:19px}#replay-confirmation{padding:1.25rem}}@media (height<=520px){.welcome{--welcome-gap:1.5rem}.welcome-panel{width:min(28rem,100%);margin-inline-start:max(0px, calc(38.2vw - var(--welcome-gap) - var(--safe-left) - 14rem))}.school-crest{width:64px}.welcome h1{margin:0 0 .75rem;font-size:clamp(2.6rem,5vw,3.5rem)}.welcome .intro{margin-bottom:.75rem;font-size:.95rem;line-height:1.45}.welcome progress{height:6px;margin-bottom:.8rem}.welcome .primary{padding-block:.65rem;font-size:1rem}.welcome-note,.welcome .save-status{margin-top:.65rem;font-size:.8rem}}@media (height<=520px) and (width>=641px){.tasks{padding:.65rem .85rem}.task-heading{margin-bottom:.35rem}.tasks h2{font-size:1.05rem}.tasks li{margin-top:.3rem;font-size:.75rem}.task-mark{border-radius:7px;width:24px;height:24px}.task-mark .ui-icon{width:18px;height:18px}.touch-mode .hint{width:min(26rem, calc(100% - 21rem - var(--edge-left) - var(--edge-right)));left:54%;bottom:var(--edge-bottom)}.question-card{left:var(--edge-left);right:auto;top:max(5rem, calc(env(safe-area-inset-top,0px) + 3.75rem));width:min(28rem, calc(100% - 19rem - var(--edge-left) - var(--edge-right)));max-height:calc(100% - max(5rem, calc(env(safe-area-inset-top,0px) + 3.75rem)) - 1rem - env(safe-area-inset-bottom,0px));padding:1rem}.question-title{margin-bottom:.75rem}.question-card h2{font-size:1.3rem}.answering .hint{left:auto;right:var(--edge-right);bottom:max(5.5rem, calc(env(safe-area-inset-bottom,0px) + 4.25rem));width:auto;max-width:16rem}}@media (height<=520px) and (width>=800px){.question-card[data-subject=math]>div:last-child{grid-template-rows:auto 3.5rem auto 1fr;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);align-items:start;gap:.6rem .85rem;display:grid}.question-card[data-subject=math] .answer-label{grid-area:1/1;margin:0}.question-card[data-subject=math] .math-answer{grid-area:2/1}.question-card[data-subject=math] .check-answer{grid-area:3/1;padding-inline:.6rem}.question-card[data-subject=math] .number-pad{grid-area:1/2/5;margin:0}.question-card[data-subject=math] .answer-feedback{grid-area:5/1/auto/-1;margin:0}}@media (prefers-reduced-motion:reduce){button{transition:none}}
