@font-face{font-family:Nunito;src:url('assets/nunito-regular.ttf');font-display:swap;font-weight:200 600}@font-face{font-family:Nunito;src:url('assets/nunito-bold.ttf');font-display:swap;font-weight:700 800}@font-face{font-family:Nunito;src:url('assets/nunito-black.ttf');font-display:swap;font-weight:900}
:root{--ink:#183c36;--primary:#145c45;--gold:#ffd369;--paper:#fffaf0;--radius:20px;--gap:16px;font-family:Nunito,'Trebuchet MS',system-ui,sans-serif;color:var(--ink);background:var(--paper);font-size:17px}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;min-height:48px;border:2px solid #c5d2c4;border-radius:14px;padding:12px 20px;background:white;color:var(--ink);font-weight:800;line-height:1.3}button:hover{border-color:var(--primary);background:#f0f7ee}button:disabled{cursor:default;opacity:.7}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:4px solid #d16300;outline-offset:4px}.primary{background:var(--primary);color:white;border-color:var(--primary);box-shadow:0 4px 0 #093c2c}.primary:hover{background:#0e4935;color:white}.secondary{background:#ffdd84;border-color:#dab55d}header{padding:20px 5%;display:flex;align-items:center;justify-content:space-between;gap:20px;background:#fffdf7;border-bottom:1px solid #e3e4d7}header>a{font-size:1.3rem;color:var(--ink);text-decoration:none;font-weight:900;line-height:1.1;position:relative;padding-left:45px}header a small{display:block;font-size:.6rem;letter-spacing:.1em;margin-top:6px}.brand-icon{position:absolute;left:0;top:0;width:35px;height:38px;background:var(--primary);color:var(--gold);border-radius:12px;display:grid;place-items:center}.header-right,.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.free{font-size:.85rem;font-weight:700}main{max-width:1240px;padding:0 28px;margin:30px auto;min-height:65vh}h1{font-size:clamp(2rem,4.5vw,3.5rem);letter-spacing:-.035em;line-height:1.1;margin:10px 0 18px;font-weight:900}h2{font-size:1.4rem}p{line-height:1.6}.eyebrow{color:#38674a;font-size:.8rem;font-weight:900;letter-spacing:.13em}.muted{color:#53695b;font-size:.9rem}.pill{background:#e8efe0;border-radius:30px;padding:10px 16px;font-weight:800;white-space:nowrap}.pill.gold{background:#ffe4a0}.welcome{display:grid;grid-template-columns:37% 63%;min-height:550px;border-radius:28px;overflow:hidden;background:#e8edda;box-shadow:0 12px 30px #24452712}.welcome-copy{padding:45px 32px;position:relative;z-index:1}.welcome h1{font-size:clamp(3.5rem,6vw,5.4rem);line-height:1.02}.welcome h1 span{color:#b85925}.lead{font-size:1.3rem}.welcome .row{align-items:stretch;flex-direction:column;max-width:270px}.trust{font-size:.85rem;font-weight:800;margin-top:25px}.welcome-art{background:url('assets/adventure-map.png') center/cover;position:relative;min-height:540px}.art-callout{position:absolute;bottom:20px;left:20px;right:20px;background:#fffdf1ef;border-radius:24px;text-align:center;padding:14px;font-size:1.1rem}.friends{display:flex;justify-content:center;height:110px}.avatar{display:inline-block;width:150px;height:150px;background-image:url('assets/explorer-sheet.png');background-size:200% 200%;background-repeat:no-repeat;flex-shrink:0;vertical-align:middle}.avatar.fox{background-position:0 0}.avatar.owl{background-position:100% 0}.avatar.rabbit{background-position:0 100%}.avatar.turtle{background-position:100% 100%}.avatar.small{width:65px;height:65px}.friends .avatar{width:110px;height:110px}.home-bottom{display:flex;justify-content:space-between;gap:24px;align-items:center;padding:30px 8px}.home-bottom p{margin:6px 0;font-size:.9rem}a{color:var(--primary)}.panel{padding:28px;background:white;border:1px solid #dfe6d5;border-radius:24px;margin:24px 0}.fields{display:grid;grid-template-columns:1fr 1fr;gap:24px}label{display:block;font-weight:800;margin:12px 0 8px}input,select{width:100%;border:2px solid #b9cabb;padding:12px;border-radius:12px;min-height:48px;background:#fff;color:var(--ink)}input[type=radio],input[type=checkbox]{width:24px;min-height:24px;height:24px;accent-color:var(--primary)}.character-field{border:0;padding:0;margin:30px 0}.character-field legend{font-weight:900;margin-bottom:10px}.characters,.profile-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.character-card{background:#f6f8ef;border:2px solid #dce5cf;border-radius:22px;text-align:center;padding:10px;display:flex;flex-direction:column;align-items:center;gap:5px}.character-card:has(input:checked){border-color:var(--primary);background:#eaf4d9}.character-card small{font-size:.8rem}.profile-card,.add-card{display:flex;flex-direction:column;align-items:center;padding:22px;gap:10px;border-radius:24px}.profile-card strong{font-size:1.2rem}.profile-card small{font-size:.85rem}.profile-grid{margin:30px 0;grid-template-columns:repeat(3,1fr)}.add-card{justify-content:center;background:#eef2e4;min-height:290px}.map-heading{display:flex;justify-content:space-between;align-items:center;gap:15px}.map-heading h1{font-size:2.7rem}.adventure-map{position:relative;aspect-ratio:1.6;background:url('assets/adventure-map.png') center/cover;border-radius:28px;border:8px solid #fff;box-shadow:0 12px 30px #24452720;overflow:hidden;margin:20px 0 28px}.map-node{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);width:205px;min-height:90px;text-align:center;background:#fff9e9f2;border:3px solid #fff4d1;box-shadow:0 6px 0 #48563a65;padding:16px 10px 10px}.map-node strong{display:block;font-size:1.05rem}.map-node small{display:block;font-size:.75rem;line-height:1.3;margin-top:4px}.node-number{position:absolute;top:-20px;left:calc(50% - 19px);width:38px;height:38px;display:grid;place-items:center;background:#ffc953;border:3px solid #fff;box-shadow:0 2px 4px #172d3f40;border-radius:50%}.map-node.locked{background:#edf0e7f2;opacity:1;color:#39483e;border-color:#d4dac9}.map-node.locked small{color:#465348}.map-node.open:hover{background:#fff3bc;transform:translate(-50%,-53%)}.map-node.done .node-number{background:#1d7654;color:white}.map-companion{position:absolute;left:2%;bottom:0;pointer-events:none}.map-companion .avatar{width:125px;height:125px}.map-caption{position:absolute;bottom:12px;left:20%;right:14%;background:#fff9e7e8;padding:8px 15px;border-radius:20px;font-size:.85rem;font-weight:800;text-align:center}.resume-banner{display:flex;gap:12px;align-items:center;background:#fff0c5;border:1px solid #ead18a;padding:12px 20px;border-radius:20px}.resume-banner div{flex:1}.resume-banner strong,.resume-banner span{display:block}.resume-banner span{font-size:.85rem}.roadmap{display:flex;gap:24px;align-items:center}.roadmap p{margin:5px 0}.game-list{display:flex;flex-wrap:wrap;gap:10px;flex:1}.game-list>span{background:#f0f2e8;padding:10px 13px;border-radius:12px;font-size:.85rem;font-weight:800}.game-list small{display:block;font-size:.75rem;color:#586553;margin-top:3px}.chapter-heading{display:flex;align-items:center;gap:20px;margin:20px 0}.chapter-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.chapter-card{display:flex;flex-direction:column;align-items:flex-start;padding:25px;gap:15px;background:#f1f6e8;text-align:left;min-height:230px;border-radius:24px}.chapter-icon{font-size:2.6rem}.chapter-card strong{font-size:1.4rem}.chapter-card small{font-size:.75rem;letter-spacing:.08em}.key-goal{display:flex;gap:20px;align-items:center;background:#ffe7a0;padding:25px;border-radius:22px;margin:25px 0}.key-goal>span{font-size:3rem}.key-goal p{margin:4px 0}.game-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px}.game-toolbar .row>span:not(.avatar){font-size:.9rem}.progress{height:8px;border-radius:10px;background:#dbe5cf;overflow:hidden;margin:18px 0}.progress span{display:block;height:100%;background:var(--primary)}.instruction{display:flex;align-items:center;gap:15px;padding:15px 22px;background:white;border:1px solid #dfe6d5;border-radius:24px}.instruction>div:nth-child(2){flex:1}.instruction h1{font-size:clamp(1.5rem,3vw,2.2rem);margin:5px 0 8px}.instruction p{margin:0;font-size:.9rem}.talker{width:100px;height:100px}.audio-status:empty{display:none}.audio-status{background:#ffe7a0;padding:10px}.hint-text{font-size:.9rem;text-align:center;margin:14px 0;font-weight:700}.play-scene{height:430px;position:relative;background:url('assets/forest-clearing.png') center 60%/cover;border-radius:24px;overflow:hidden;border:5px solid white;box-shadow:0 6px 20px #1b4b3220}.objects{display:flex;gap:40px;justify-content:center;align-items:center;height:290px}.object{user-select:none;touch-action:none;position:relative;min-width:130px;min-height:145px;padding:12px;background:#fffef4eb;border:3px solid #fff;border-radius:24px;box-shadow:0 8px 0 #23372935}.object-art{display:block;font-size:4.8rem;line-height:1.3;filter:drop-shadow(0 5px 3px #22372025)}.object-name{display:block;font-size:1rem;line-height:1.4}.object.selected{border-color:#124d34;background:#fff0b1}.object.hinted{outline:5px solid #ffcb4f;outline-offset:5px}.object[hidden]{display:none}.explore .objects{display:block;height:100%}.explore .object{position:absolute;background:transparent;border:3px solid transparent;box-shadow:none}.explore .object:hover,.explore .object.selected{background:#fffbe9ba;border-color:#fff}.explore .item-0{left:15%;top:14%}.explore .item-1{left:45%;top:28%}.explore .item-2{right:12%;top:10%}.explore .object-name{background:#fff8e8e8;border-radius:20px;padding:4px 10px}.basket{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);border:3px dashed #785d2a;background:#fff8d6ec;display:flex;gap:15px;align-items:center;min-width:250px;justify-content:center}.basket>span{font-size:2.5rem}.basket.over{background:#ffce50}.scene-label{position:absolute;bottom:8px;left:14px;font-size:.7rem;background:#fff9ddcc;padding:5px 10px;border-radius:12px}.feedback-bar{display:flex;justify-content:space-between;align-items:center;gap:20px;min-height:80px}.feedback-bar p{font-weight:800;font-size:1.1rem}.keyboard-help{font-size:.9rem;margin:12px 0}.result-panel{position:relative;max-width:850px;margin:auto;text-align:center;padding:40px;background:#edf4dc;border:4px solid white;border-radius:30px}.reward-symbol{font-size:4.2rem}.result-panel h1{font-size:2.8rem}.result-friend .avatar{width:170px;height:170px}.stars{font-size:2.3rem;color:#966100;letter-spacing:.12em}.reward-row{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin:18px}.reward-row span{background:#fff2c0;padding:9px 14px;border-radius:20px;font-weight:800;font-size:.9rem}.learning{background:#fffdf5;border-radius:22px;padding:20px;margin:20px 0}.learning h2{margin:0 0 12px}.learning>div{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.learning span{padding:8px 14px;border-radius:12px;background:#e8efe0}.learning p{font-size:.85rem}.result-panel>.row{justify-content:center}.switch-row{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:14px 0;border-bottom:1px solid #e0e7d7;max-width:600px}.switch-row input{flex-shrink:0}.discovery{text-align:center;max-width:850px;margin:auto}.discovery-choices{display:flex;justify-content:center;gap:20px;margin:30px 0}.manage-profile{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ddd;padding:15px 0}.notice{background:#ffe7a0;padding:15px;border-radius:16px}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.skip-link{position:absolute;top:-100px}.skip-link:focus{top:10px;left:10px;z-index:100;background:white;padding:15px}dialog{max-width:500px;border:2px solid #315743;border-radius:24px;padding:25px}dialog::backdrop{background:#102e3680}footer{text-align:center;padding:30px;line-height:1.8;color:#4d6356;font-size:.85rem}.large{font-size:21px}.contrast{--ink:#08150c;--primary:#083f25;--paper:white}.contrast .map-node,.contrast .instruction,.contrast .object-name{background:white;color:#08150c}.older .welcome-copy{background:#203e37;color:white}.older .welcome-copy .eyebrow,.older .welcome-copy h1 span{color:#ffce66}.older .chapter-card{border-radius:14px}.older .adventure-map{border-color:#274c40}.comparison-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.comparison-grid img{width:100%;border-radius:20px}.comparison-grid h2{font-size:1.2rem}@media(prefers-reduced-motion:no-preference){body:not(.no-motion) button{transition:background .18s,box-shadow .18s}body:not(.no-motion) .walking{animation:walk .65s ease}body:not(.no-motion) .object:disabled{animation:celebrate .5s ease}body:not(.no-motion) .reward-symbol{animation:celebrate .8s ease}}@keyframes walk{50%{box-shadow:0 0 0 12px #ffd36980;filter:brightness(1.15)}}@keyframes celebrate{50%{scale:1.08;rotate:3deg}}@media(max-width:850px){.welcome{grid-template-columns:42% 58%}.welcome-copy{padding:30px 20px}.welcome h1{font-size:3.5rem}.map-node{width:170px}.map-heading{align-items:flex-start;flex-direction:column}.roadmap{display:block}.chapter-card{padding:20px}.instruction{flex-wrap:wrap}.instruction>.row{margin-left:115px}.characters{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){header{padding:15px;gap:10px}header>a{font-size:1.05rem;padding-left:39px}header a small{font-size:.5rem}header button{padding:10px 12px}.free{display:none}main{padding:0 14px;margin:20px auto}.welcome{display:flex;flex-direction:column}.welcome-copy{padding:25px}.welcome-copy h1{font-size:3.5rem}.welcome-copy .lead{font-size:1.1rem;margin:10px 0}.welcome .row{max-width:none;flex-direction:row}.welcome .row button{flex:1;font-size:.9rem;padding:12px}.trust{margin:18px 0 0}.welcome-art{min-height:330px;background-position:center 40%}.art-callout{bottom:12px;left:12px;right:12px;font-size:.9rem;padding:8px}.friends{height:85px}.friends .avatar{width:85px;height:85px}.home-bottom{display:block;padding:22px 8px}.home-bottom>a{display:block;margin-top:12px}.fields{grid-template-columns:1fr;gap:0}.panel{padding:20px}.characters{gap:10px}.character-card{padding:5px}.character-card .avatar{width:130px;height:130px}.character-card small{font-size:.75rem}.profile-grid{grid-template-columns:1fr 1fr;gap:12px}.profile-card{padding:12px}.profile-card .avatar{width:125px;height:125px}.profile-card small{font-size:.75rem}.add-card{min-height:200px}.map-heading h1{font-size:2.2rem}.map-heading .row{gap:8px}.map-heading button{font-size:.8rem}.adventure-map{aspect-ratio:auto;min-height:720px;background-size:auto 100%;background-position:center;border-width:4px}.map-node{width:150px;min-height:88px;padding:17px 8px 8px}.map-node strong{font-size:.95rem}.map-node small{font-size:.72rem}.map-node{left:28%;top:18%}.map-node.node-1{left:73%;top:18%}.map-node.node-2{left:28%;top:44%}.map-node.node-3{left:73%;top:44%}.map-node.node-4{left:28%;top:70%}.map-node.node-5{left:73%;top:70%}.map-caption{left:7%;right:7%;bottom:20px;font-size:.78rem;padding:10px}.map-companion{left:5%;bottom:55px}.map-companion .avatar{width:85px;height:85px}.resume-banner{padding:10px;flex-wrap:wrap}.resume-banner .avatar{width:50px;height:50px}.resume-banner div{min-width:180px}.resume-banner button{margin-left:60px}.chapter-heading{gap:5px;align-items:flex-start}.chapter-heading>.avatar{width:90px;height:90px}.chapter-heading h1{font-size:2.1rem}.chapter-heading p{font-size:.85rem}.chapter-grid{grid-template-columns:1fr}.chapter-card{min-height:165px;gap:8px}.key-goal{padding:18px;gap:12px}.key-goal p{font-size:.85rem}.game-toolbar{flex-wrap:wrap;gap:8px}.game-toolbar button{font-size:.8rem;padding:10px}.game-toolbar .small{display:none}.game-toolbar>.row{gap:6px}.instruction{padding:14px;gap:8px}.talker{width:60px;height:60px}.instruction .eyebrow{font-size:.63rem;letter-spacing:.06em}.instruction h1{font-size:1.5rem}.instruction p{font-size:.8rem}.instruction>.row{margin-left:0}.instruction>.row button{font-size:.85rem}.hint-text{font-size:.8rem}.play-scene{height:430px;background-size:auto 100%}.objects{gap:8px;height:280px;align-items:center}.object{min-width:0;width:30%;min-height:115px;padding:6px;border-radius:17px}.object-art{font-size:3rem}.object-name{font-size:.85rem}.explore .object{width:100px}.explore .item-0{left:3%;top:8%}.explore .item-1{left:35%;top:36%}.explore .item-2{right:1%;top:10%}.basket{min-width:235px;bottom:28px;padding:10px;font-size:.9rem}.scene-label{font-size:.63rem;bottom:5px}.feedback-bar{flex-direction:column;align-items:stretch;gap:0}.feedback-bar p{font-size:.95rem}.result-panel{padding:25px 15px}.result-panel h1{font-size:2rem}.result-panel .row button{width:100%}.discovery-choices{gap:8px}.discovery-choices button{padding:10px}.comparison-grid{grid-template-columns:1fr}}

.four-choices .object{width:21%;min-width:0}.four-choices.explore .item-3{left:60%;top:48%}.celebration-caption{max-width:650px;margin:12px auto;font-weight:800}.celebration-controls{justify-content:center}.celebration-controls button{font-size:.8rem}.result-friend{position:relative}@media(prefers-reduced-motion:no-preference){body:not(.no-motion) .celebration .result-friend .avatar{animation:friend-cheer .8s ease 3}body:not(.no-motion) .celebration .stars{animation:star-glow .7s ease 4}body:not(.no-motion) .speaking .avatar{animation:friend-speak .5s ease 6}}@keyframes friend-cheer{50%{transform:translateY(-12px) rotate(-6deg)}}@keyframes star-glow{50%{transform:scale(1.12);filter:drop-shadow(0 0 8px #ffc247)}}@keyframes friend-speak{50%{transform:rotate(3deg)}}@media(max-width:600px){.four-choices .object{width:23%;padding:5px}.four-choices .object-art{font-size:2.4rem}.four-choices.explore .object{width:85px}.four-choices.explore .item-3{left:68%;top:48%}.celebration-controls button{width:100%}}

.play-scene{background-image:var(--scene,url('assets/forest-clearing.png'));background-position:var(--scene-position,center 60%)}.question-clock{display:flex;align-items:center;flex-wrap:wrap;gap:12px;background:#fff1ce;border-radius:18px;padding:12px 18px;margin:12px 0}.question-clock button{font-size:.8rem}.question-clock #clock-note{flex-basis:100%;font-size:.9rem}.question-clock #clock-note:empty{display:none}.hourglass{position:relative;display:inline-block;width:32px;height:46px;border-top:5px solid #865930;border-bottom:5px solid #865930;--sand:1}.hourglass:before{content:'';position:absolute;inset:0;border-left:2px solid #865930;border-right:2px solid #865930;clip-path:polygon(0 0,100% 0,58% 50%,100% 100%,0 100%,42% 50%);background:#fff9ea}.sand{position:absolute;left:3px;right:3px;background:#bd7900;height:18px;z-index:1}.top-sand{top:0;clip-path:polygon(0 0,100% 0,50% 100%);transform:scaleY(var(--sand));transform-origin:bottom}.bottom-sand{bottom:0;clip-path:polygon(50% 0,100% 100%,0 100%);transform:scaleY(calc(1 - var(--sand)));transform-origin:bottom}.instruction h1{font-size:clamp(1.4rem,2.7vw,2rem);line-height:1.35}.object-name{overflow-wrap:anywhere}.contrast .question-clock{background:#fff;color:#08150c;border:2px solid #08150c}@media(max-width:600px){.question-clock{gap:8px;padding:12px}.question-clock #clock-label{flex:1;min-width:160px}.instruction>div:nth-child(2){min-width:0;flex:1}.instruction h1{font-size:1.3rem}}
.instruction{display:grid;grid-template-columns:100px minmax(0,1fr) auto;align-items:start}.instruction>.row{margin-left:0;align-self:center}.instruction>div:nth-child(2){min-width:0;width:100%}@media(max-width:850px){.instruction{grid-template-columns:90px minmax(0,1fr)}.instruction>.row{grid-column:1/-1;margin-left:0}}@media(max-width:600px){.instruction{grid-template-columns:60px minmax(0,1fr)}.instruction>div:first-child{align-self:start}.instruction>.row{grid-column:1/-1;justify-content:flex-start}.instruction h1{letter-spacing:-.02em}.instruction .eyebrow{overflow-wrap:normal;letter-spacing:.04em}}
/* Six playable activities share the illustrated worlds and accessible controls. */
.game-list button{display:flex;flex-direction:column;gap:5px;align-items:flex-start;background:#fff7dc;min-width:170px}.game-list button small{font-size:.7rem;font-weight:700;color:#42624d}.activity-scene{background:linear-gradient(#fffaf0ab,#fffaf08c),var(--scene) center/cover;border:5px solid #e1c58d;border-radius:26px;min-height:400px;padding:28px;box-shadow:0 8px 24px #183c3614}.activity-help{background:#fffcf2ed;border-radius:14px;padding:12px 18px;font-weight:800;text-align:center;margin:0 0 20px}.matching-grid{display:grid;grid-template-columns:1fr 1fr;gap:25px;max-width:620px;margin:auto}.matching-grid>div{display:grid;gap:12px}.match-tile{display:flex;align-items:center;justify-content:center;gap:15px;min-height:96px;background:#fffdf7;box-shadow:0 4px 0 #dbbe83}.match-tile .object-art{font-size:3.2rem}.selected{border-color:#b96712!important;box-shadow:0 0 0 3px #ffc966!important}.match-tile:disabled{opacity:1;background:#e4f2d7;color:#20512f}.memory-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;max-width:800px;margin:auto}.memory-card{min-height:150px;background:#155b48;color:#ffdb80;border:4px solid #eec978;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 5px 0 #b99b62}.memory-card>span{font-size:3.8rem}.memory-card>small{font-size:.8rem}.memory-card.face-up{background:#fffdf4;color:#183c36;opacity:1}.story-page,.puzzle{max-width:870px;margin:auto;background:#fffdf6f2;border:1px solid #f0dab1;border-radius:22px;padding:24px}.story-illustration{display:block;font-size:5rem;text-align:center;filter:drop-shadow(0 6px 3px #a56b2d28)}.narrative{font-size:1.25rem;line-height:1.55;font-weight:800}.story-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.story-options>div{display:flex;flex-direction:column;gap:7px}.story-option{flex:1;background:#f9edc8;min-height:110px;font-size:1.05rem;display:flex;gap:12px;align-items:center;text-align:left}.story-option>span{font-size:2.6rem}.option-sound{background:white;font-size:.8rem}.sentence-slots{display:flex;flex-wrap:wrap;gap:10px;padding:18px 0;margin-bottom:18px;border-bottom:2px dashed #c8b789}.sentence-slot{padding:16px;background:#e9f2dd;border:2px dashed #88a474;border-radius:14px;min-width:100px;flex:1;font-weight:900;text-align:center}.token-bank{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:24px}.token-bank button{flex:1;min-width:100px;display:flex;flex-direction:column;justify-content:center;align-items:center;background:#fff2cc}.token-bank .object-art{font-size:3rem}.activity-scene .hinted{outline:4px solid #d98c00;outline-offset:3px}.contrast .activity-scene{background:#fff;border-color:#102919}.contrast .memory-card{background:#102919;color:#fff}.contrast .memory-card.face-up{background:#fff;color:#102919}.contrast .story-option{background:#fff;border-color:#102919}.activity-scene button:disabled{cursor:default}.activity-scene .token-bank button:disabled{opacity:.35}.no-motion .memory-card{transition:none}
@media(max-width:600px){.activity-scene{padding:14px;border-width:3px;min-height:330px}.matching-grid{gap:12px}.match-tile{padding:8px;min-height:82px;font-size:.9rem}.match-tile .object-art{font-size:2.8rem}.memory-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.memory-card{min-height:110px;padding:6px;border-width:3px}.memory-card>span{font-size:2.6rem}.memory-card>small{font-size:.65rem}.story-page,.puzzle{padding:15px}.story-options{grid-template-columns:1fr;gap:14px}.narrative{font-size:1.1rem}.story-illustration{font-size:4rem}.sentence-slot{font-size:.9rem;padding:12px;min-width:90px}.token-bank{gap:9px}.token-bank button{font-size:.9rem;padding:9px;min-width:82px}.game-list button{min-width:140px;flex:1}}

textarea{font:inherit;width:100%;border:2px solid #b9cabb;border-radius:12px;padding:12px;line-height:1.5;resize:vertical}textarea:focus-visible{outline:4px solid #d16300;outline-offset:3px}

.activity-instruction{grid-template-columns:minmax(0,1fr) auto}.activity-instruction>div:first-child{min-width:0}.activity-instruction>div:nth-child(2){flex:none}.activity-instruction h1{margin-bottom:4px}.activity-instruction .eyebrow{text-transform:uppercase}@media(max-width:600px){.activity-instruction{display:flex;flex-direction:column;align-items:stretch;gap:12px}.activity-instruction .eyebrow{font-size:.7rem}.activity-instruction .row{margin-left:0}.activity-instruction h1{font-size:1.5rem}}

.task-journey{position:relative;background:linear-gradient(#fffaf040,#fffaf050),var(--scene) center/cover;border:5px solid #e1c58d;border-radius:26px;min-height:390px;margin:24px 0}.journey-path{position:absolute;left:15%;right:15%;top:62%;border-top:12px dashed #fff0ad}.journey-stop{position:absolute;top:62%;transform:translate(-50%,-15%);width:27%;max-width:220px;display:flex;flex-direction:column;gap:8px;align-items:center;background:#fff9df}.journey-stop.done{border-color:#1c7856}.journey-stop small{font-size:.75rem}.journey-hero{position:absolute;left:var(--from);top:8%;transform:translateX(-50%);transition:left 1.7s ease}.journey-hero.arrived{left:var(--to)}.journey-hero .avatar{width:130px;height:150px}.no-motion .journey-hero{transition:none}@media(prefers-reduced-motion:reduce){.journey-hero{transition:none}}@media(max-width:600px){.task-journey{min-height:360px}.journey-stop{padding:10px 4px;font-size:.85rem}.journey-stop small{font-size:.65rem}.journey-hero .avatar{width:100px;height:125px}}

.mission-intro{background:linear-gradient(90deg,#fffaf080,#fffaf0e8),var(--scene) center/cover;border-radius:28px;padding:40px;min-height:440px;display:flex;align-items:center;gap:32px}.intro-character{animation:mission-arrive 1s ease both}.intro-character .avatar{width:220px;height:260px}.intro-copy{max-width:640px;animation:mission-copy .8s ease both}.intro-copy button{margin:8px}.treasure-panel{text-align:center;background:radial-gradient(ellipse,#fff2b2,#fffaf0 65%);border-radius:28px;padding:28px;overflow:hidden}.treasure-stage{position:relative;width:min(420px,100%);height:270px;margin:auto;display:grid;place-items:center}.treasure-chest{position:relative;width:200px;height:150px;z-index:2;filter:drop-shadow(0 14px 10px #75491745);margin-top:40px}.chest-base{position:absolute;bottom:0;width:100%;height:100px;border:9px solid #e6ac32;border-radius:8px 8px 20px 20px;background:repeating-linear-gradient(90deg,#965121 0 30px,#713a18 31px 35px)}.chest-base span{display:block;font-size:38px;margin-top:15px}.chest-lid{position:absolute;top:0;width:100%;height:60px;border:9px solid #e6ac32;border-radius:45px 45px 6px 6px;background:#965121;transform-origin:center bottom;z-index:3}.opened .chest-lid{animation:open-chest 1s ease forwards}.treasure-glow{position:absolute;width:180px;height:180px;border-radius:50%;background:#ffe381;filter:blur(20px);opacity:0}.opened .treasure-glow{animation:chest-glow 1.4s ease forwards}.reward-particle{position:absolute;left:50%;top:50%;opacity:0;color:var(--color);font-size:34px;font-weight:900}.opened .reward-particle{animation:reward-burst 1.8s var(--delay) ease-out both}.treasure-rewards{animation:mission-copy .7s .4s both}.treasure-rewards .row{justify-content:center}@keyframes open-chest{to{transform:translateY(-65px) rotate(-16deg)}}@keyframes chest-glow{to{opacity:1;transform:scale(1.5)}}@keyframes reward-burst{0%{opacity:0;transform:translate(-50%,-50%) scale(.2)}20%{opacity:1}80%{opacity:1}100%{opacity:0;transform:rotate(var(--angle)) translateY(calc(-1 * var(--distance))) rotate(calc(-1 * var(--angle))) scale(1.2)}}@keyframes mission-arrive{from{opacity:0;transform:translateX(-45px) scale(.85)}to{opacity:1;transform:none}}@keyframes mission-copy{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:none}}.no-motion .intro-character,.no-motion .intro-copy,.no-motion .treasure-rewards{animation:none}.no-motion .opened .chest-lid{animation:none;transform:translateY(-65px)}.no-motion .reward-particle{display:none}.no-motion .opened .treasure-glow{animation:none;opacity:1}@media(prefers-reduced-motion:reduce){.intro-character,.intro-copy,.treasure-rewards,.opened .chest-lid,.opened .treasure-glow,.opened .reward-particle{animation:none}.opened .chest-lid{transform:translateY(-65px)}.opened .treasure-glow{opacity:1}.reward-particle{display:none}}@media(max-width:600px){.mission-intro{flex-direction:column;padding:22px;gap:8px}.intro-character .avatar{width:120px;height:140px}.treasure-panel{padding:18px 10px}}

.match-word{font-size:.95rem;overflow-wrap:anywhere;text-align:center}.match-tile{flex-wrap:wrap}.memory-card small{overflow-wrap:anywhere;text-align:center}.object-name{overflow-wrap:anywhere}

/* Pilot: allow diagnostics and long translated content to reflow. */
.audio-diagnostics{margin:8px 0 18px;max-width:100%}.audio-diagnostics pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.75rem;background:#f0f4ed;padding:12px;border-radius:12px}button{overflow-wrap:anywhere}input[type=file]{max-width:100%}.row>*{max-width:100%}.manage-profile{flex-wrap:wrap}main:focus-visible{outline:4px solid #d16300;outline-offset:4px}

/* Game feel: particles, feedback animations and gentle idle motion */
#fx-layer{position:fixed;inset:0;pointer-events:none;z-index:9999;overflow:hidden}
.fx-particle{position:fixed;transform:translate(-50%,-50%);font-weight:900;line-height:1;text-shadow:0 2px 4px #0003;animation:fx-burst .95s cubic-bezier(.15,.7,.3,1) forwards}
.fx-confetti{position:fixed;top:-24px;opacity:.95;animation:fx-fall var(--fall) linear forwards}
.fx-fly{position:fixed;font-size:3.6rem;line-height:1;transform:translate(-50%,-50%);filter:drop-shadow(0 8px 6px #0004);animation:fx-fly .62s cubic-bezier(.45,0,.55,1) forwards}
@keyframes fx-burst{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}15%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy) + 30px)) rotate(var(--rot)) scale(1.1)}}
@keyframes fx-fall{to{transform:translate(var(--drift),110vh) rotate(var(--spin))}}
@keyframes fx-fly{0%{transform:translate(-50%,-50%) scale(1)}45%{transform:translate(calc(-50% + var(--dx)*.5),calc(-50% + var(--dy)*.5 - 90px)) scale(1.2) rotate(-10deg)}100%{transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(.35);opacity:.6}}
@media(prefers-reduced-motion:no-preference){
body:not(.no-motion) button{transition:background .18s,box-shadow .18s,scale .12s}
body:not(.no-motion) button:not(:disabled):active{scale:.95}
body:not(.no-motion) #app.screen-enter{animation:screen-enter .45s cubic-bezier(.2,.8,.3,1)}
body:not(.no-motion) .activity-scene.screen-enter{animation:screen-enter .4s ease}
body:not(.no-motion) .play-scene .object:not(:disabled):not(.dragging) .object-art{animation:float 3.2s ease-in-out infinite}
body:not(.no-motion) .play-scene .item-1 .object-art{animation-delay:-.8s!important}
body:not(.no-motion) .play-scene .item-2 .object-art{animation-delay:-1.6s!important}
body:not(.no-motion) .play-scene .item-3 .object-art{animation-delay:-2.4s!important}
body:not(.no-motion) .object.held{scale:1.08;box-shadow:0 14px 18px #1d362533}
body:not(.no-motion) .object.dragging{scale:1.12;cursor:grabbing;filter:drop-shadow(0 16px 14px #0003)}
body:not(.no-motion) .object.collected{animation:collected .6s ease forwards}
body:not(.no-motion) .hinted{animation:hint-pulse 1.1s ease-in-out infinite}
body:not(.no-motion) .instruction.speaking .talker,body:not(.no-motion) .speaking .talker{animation:talk .42s ease-in-out infinite}
body:not(.no-motion) .map-node.open:not(.done){animation:node-call 2.2s ease-in-out infinite}
body:not(.no-motion) #next,body:not(.no-motion) #activity-next,body:not(.no-motion) #open-treasure,body:not(.no-motion) #begin-mission{animation:breathe 1.6s ease-in-out infinite}
body:not(.no-motion) .treasure-panel:not(.opened) .treasure-chest{animation:chest-wiggle 2.6s ease-in-out infinite}
body:not(.no-motion) .memory-card:not(.face-up):not(:disabled):hover{rotate:-2deg;scale:1.03}
body:not(.no-motion) .shake{animation:shake .45s ease!important}
body:not(.no-motion) .pop{animation:pop .4s cubic-bezier(.3,1.6,.5,1)!important}
body:not(.no-motion) .caught{animation:caught .55s cubic-bezier(.3,1.6,.5,1)!important}
body:not(.no-motion) .beckon{animation:beckon .5s ease!important}
body:not(.no-motion) .glow{animation:scene-glow .9s ease!important}
body:not(.no-motion) .flip-in{animation:flip-in .32s ease-out!important}
body:not(.no-motion) .slot-in{animation:slot-in .38s cubic-bezier(.3,1.5,.5,1)!important}
body:not(.no-motion) .chosen{animation:chosen .6s ease!important}
}
@keyframes screen-enter{from{opacity:0;translate:0 14px}to{opacity:1;translate:0 0}}
@keyframes float{0%,100%{translate:0 0;rotate:0deg}50%{translate:0 -8px;rotate:2deg}}
@keyframes collected{to{opacity:.3;scale:.82;filter:grayscale(.4)}}
@keyframes hint-pulse{0%,100%{box-shadow:0 0 0 0 #ffcb4f00}50%{box-shadow:0 0 0 10px #ffcb4f88,0 0 26px 6px #ffe08a}}
@keyframes talk{0%,100%{translate:0 0;rotate:0deg}30%{translate:0 -4px;rotate:-3deg}70%{translate:0 -2px;rotate:3deg}}
@keyframes node-call{0%,100%{box-shadow:0 6px 0 #48563a65,0 0 0 0 #ffd36900}50%{box-shadow:0 6px 0 #48563a65,0 0 0 10px #ffd3697a}}
@keyframes breathe{0%,100%{scale:1}50%{scale:1.05}}
@keyframes chest-wiggle{0%,70%,100%{rotate:0deg}76%{rotate:-4deg}82%{rotate:4deg}88%{rotate:-2deg}94%{rotate:1deg}}
@keyframes shake{0%,100%{translate:0}20%{translate:-10px}40%{translate:9px}60%{translate:-6px}80%{translate:4px}}
@keyframes pop{0%{scale:1}45%{scale:1.16}100%{scale:1}}
@keyframes caught{0%{scale:1}30%{scale:1.18 .86}60%{scale:.94 1.08}100%{scale:1}}
@keyframes beckon{0%,100%{rotate:0deg}30%{rotate:-3deg}60%{rotate:3deg}}
@keyframes scene-glow{0%,100%{box-shadow:0 0 0 0 #ffd36900}40%{box-shadow:0 0 0 8px #ffd369cc,0 0 40px 10px #ffe9a6}}
@keyframes flip-in{from{transform:perspective(500px) rotateY(90deg)}to{transform:perspective(500px) rotateY(0)}}
@keyframes slot-in{from{opacity:0;translate:0 -18px;scale:.8}to{opacity:1;translate:0 0;scale:1}}
@keyframes chosen{0%{scale:1;box-shadow:0 0 0 0 #60c6b000}40%{scale:1.06;box-shadow:0 0 0 8px #60c6b088}100%{scale:1;box-shadow:0 0 0 0 #60c6b000}}

/* Organisation logo on the opening screen. */
.welcome-logo{display:block;width:360px;max-width:100%;height:auto;margin:0 0 22px;border-radius:12px}
@media(max-width:600px){.welcome-logo{width:300px;margin-bottom:18px}}
