:root{color:#17324d;background:#f2f7f5;font-family:ui-rounded,Nunito,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button{font:inherit}.app-shell{width:min(100% - 2rem,64rem);margin:0 auto;padding:2rem 0 3rem}.app-header{padding:1.5rem;border-radius:1.5rem;background:#176b87;color:#fff;box-shadow:0 .75rem 2rem #176b872e}.app-header>.eyebrow{color:#dff7ed}.header-status{display:flex;flex-wrap:wrap;gap:.5rem 1rem;margin-top:1.25rem;color:#dff7ed;font-size:.95rem}.header-status span{padding:.35rem .7rem;border:1px solid rgb(223 247 237 / 40%);border-radius:999px}.eyebrow{margin:0 0 .5rem;color:#176b87;font-size:.8rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}h1,h2,p{margin-top:0}h1,h2{margin-bottom:.75rem;line-height:1.1}.app-intro{max-width:42rem;margin-bottom:0;color:#e5fff5;line-height:1.5}.app-nav{display:flex;flex-wrap:wrap;gap:.75rem;padding:1.25rem 0}.nav-button{min-height:2.75rem;padding:.6rem 1rem;border:2px solid #bdd7d0;border-radius:999px;background:#fff;color:#17324d;cursor:pointer}.nav-button:hover,.nav-button:focus-visible,.nav-button.is-active{border-color:#176b87;background:#dff7ed}.nav-button:focus-visible{outline:3px solid #f4b942;outline-offset:2px}.app-main{min-height:18rem}.pwa-status,.pwa-update,.pwa-update-deferred{margin:.75rem 0;padding:.7rem .9rem;border:1px solid #c6e1d8;border-radius:.9rem;background:#fff;color:#17324d}.pwa-status{display:flex;align-items:center;flex-wrap:wrap;gap:.65rem 1rem;justify-content:space-between}.pwa-status p,.pwa-update p,.pwa-update-deferred{margin:0;line-height:1.45}.pwa-guidance{color:#446277;font-size:.88rem}.offline-ready{color:#176b87;font-weight:750}.pwa-update,.pwa-update-deferred{border-color:#edc76a;background:#fff4d8}.pwa-update .button-row{margin-top:.65rem}.shell-card{padding:1.5rem;border:1px solid #d5e7e1;border-radius:1.5rem;background:#fff;box-shadow:0 .5rem 1.5rem #17324d14}.shell-card .eyebrow{color:#176b87}.shell-card p:last-child{margin-bottom:0;line-height:1.6}.screen-card{padding:1.5rem;border:1px solid #d5e7e1;border-radius:1.5rem;background:#fff;box-shadow:0 .5rem 1.5rem #17324d14}.screen-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.screen-description{color:#446277}.profile-list,.grade-grid,.settings-grid{display:grid;gap:.85rem}.profile-list,.grade-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));margin:1.25rem 0 1.75rem}.profile-card,.grade-card{display:flex;align-items:center;gap:.8rem;min-height:5.5rem;padding:1rem;border:2px solid #c6e1d8;border-radius:1.1rem;background:#f7fffb;color:#17324d;text-align:left;cursor:pointer}.profile-card:hover,.profile-card:focus-visible,.grade-card:hover,.grade-card:focus-visible{border-color:#176b87;background:#e7fbf2}.profile-avatar,.grade-scenery{display:grid;flex:0 0 3rem;width:3rem;height:3rem;place-items:center;border-radius:50%;background:#dff7ed;font-size:1.9rem}.profile-card-copy,.grade-card-copy{display:grid;gap:.25rem;min-width:0}.profile-card-copy span,.grade-card-copy span{color:#446277;font-size:.85rem;line-height:1.3}.profile-card-arrow{margin-left:auto;color:#176b87;font-size:1.5rem}.create-profile-form,.settings-card{display:grid;gap:.85rem;padding:1.25rem;border:1px solid #d5e7e1;border-radius:1.1rem;background:#fbfffd}.create-profile-form h3,.settings-card h3{margin:0}label,.avatar-picker legend{color:#17324d;font-weight:750}label{display:grid;gap:.35rem}input,select{min-height:2.75rem;padding:.55rem .7rem;border:2px solid #bdd7d0;border-radius:.65rem;background:#fff;color:#17324d}input:focus-visible,select:focus-visible{outline:3px solid #f4b942;outline-offset:2px}.avatar-picker{min-width:0;margin:0;padding:0;border:0}.avatar-grid{display:grid;grid-template-columns:repeat(5,minmax(3.2rem,1fr));gap:.5rem;margin-top:.6rem}.avatar-option{display:grid;min-height:4.5rem;place-items:center;gap:.15rem;padding:.35rem;border:2px solid #c6e1d8;border-radius:.8rem;background:#fff;color:#17324d;cursor:pointer}.avatar-option.is-selected{border-color:#176b87;background:#dff7ed;box-shadow:inset 0 0 0 2px #fff}.avatar-emoji{font-size:1.55rem}.primary-button,.secondary-button,.danger-button,.speech-button,.visual-fallback-button{min-height:2.75rem;padding:.6rem 1rem;border:2px solid transparent;border-radius:.7rem;cursor:pointer;font-weight:750}.primary-button,.speech-button{background:#176b87;color:#fff}.secondary-button,.visual-fallback-button{border-color:#bdd7d0;background:#fff;color:#17324d}.danger-button{background:#a43f3f;color:#fff}button:disabled{cursor:not-allowed;opacity:.55}.button-row{display:flex;flex-wrap:wrap;gap:.65rem}.notice{margin:1rem 0;padding:.8rem 1rem;border-radius:.7rem;background:#e7fbf2;color:#17324d;line-height:1.45}.notice-warning{background:#fff4d8;border:1px solid #edc76a}.empty-state,.loading-card{color:#446277}.success-message{margin:0;color:#176b87;font-weight:700}.coming-soon-card{display:grid;gap:.35rem;padding:1rem;border-radius:.85rem;background:#f2f7f5;color:#446277}.settings-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr));margin:1.25rem 0}.destructive-card{margin-top:1rem;border-color:#e7b1a9}.confirmation-box{display:grid;gap:.65rem;padding:1rem;border:2px solid #e7b1a9;border-radius:.8rem;background:#fff7f5}.check-row{display:flex;align-items:flex-start;gap:.55rem;font-weight:500}.check-row input{flex:0 0 auto;width:1.25rem;min-height:1.25rem;margin-top:.1rem}.audio-controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:.75rem}.adventure-header{position:relative;overflow:hidden;padding:1.2rem 1.35rem 1rem;border-radius:1.25rem;background:linear-gradient(135deg,#176b87,#2f8b91);color:#fff;box-shadow:0 .75rem 1.8rem #176b8733}.adventure-header:after{position:absolute;right:-1rem;bottom:-2.5rem;width:9rem;height:6rem;border-radius:50%;background:#a8e6d147;content:""}.adventure-header-topline,.adventure-progress-row,.progress-map-heading,.section-heading-row{display:flex;align-items:center;justify-content:space-between;gap:1rem}.adventure-header .eyebrow{margin-bottom:.2rem;color:#dff7ed}.adventure-title{margin:0;font-size:clamp(1.35rem,4vw,1.8rem)}.adventure-actions,.round-choice-grid{display:flex;flex-wrap:wrap;gap:.55rem}.map-button{min-height:2.75rem;padding:.55rem .8rem;border:1px solid rgb(255 255 255 / 55%);border-radius:.65rem;background:#ffffff24;color:#fff;cursor:pointer;font-weight:750}.map-button:hover,.map-button:focus-visible{background:#ffffff47}.adventure-progress-row{position:relative;z-index:1;margin-top:1rem;color:#effff9;font-size:.95rem;font-weight:750}.star-count{color:#fff2b6}.quest-progress-track{position:relative;z-index:1;height:.65rem;margin-top:.55rem;overflow:hidden;border-radius:999px;background:#09364a6b}.quest-progress-track span{display:block;height:100%;border-radius:inherit;background:#ffd76a;transition:width .22s ease-out}.game-stage{display:grid;gap:1rem;margin-top:1rem}.start-quest-card,.prompt-card,.round-complete-card,.persistence-error-card{position:relative;display:grid;gap:1rem;padding:clamp(1.25rem,4vw,2rem);overflow:hidden;border:1px solid #d5e7e1;border-radius:1.5rem;background:#fff;box-shadow:0 .6rem 1.5rem #17324d14}.start-quest-card{grid-template-columns:minmax(8rem,.7fr) 1.5fr;align-items:center;min-height:18rem;background:linear-gradient(135deg,#fffdf4,#f2fffa)}.start-quest-card h2,.round-complete-card h2,.persistence-error-card h2{color:#17324d;font-size:clamp(1.7rem,5vw,2.35rem)}.start-quest-card p:not(.eyebrow),.round-complete-card p:not(.eyebrow):not(.celebration-heading),.persistence-error-card p:not(.eyebrow){color:#446277;line-height:1.55}.guide-art{display:grid;place-items:center}.guide-art img{width:min(100%,12rem);filter:drop-shadow(0 .6rem .25rem rgb(23 50 77 / 12%))}.quest-start-button{margin-top:.75rem;font-size:1.05rem}.prompt-card{grid-template-columns:4.2rem 1fr auto;align-items:center;min-height:10rem;background:linear-gradient(135deg,#fff,#f5fffb)}.guide-small{display:grid;width:4rem;height:4rem;place-items:center;border-radius:1.1rem;background:#fff4d8}.guide-small img{width:3.7rem;height:3.7rem}.prompt-copy h2{margin-bottom:.35rem;font-size:clamp(1.3rem,4vw,1.8rem)}.prompt-status{margin-bottom:0;color:#446277;font-weight:650}.restore-note{margin:.45rem 0 0;color:#176b87;font-size:.9rem;font-weight:750}.prompt-controls{display:grid;gap:.5rem;min-width:13rem}.prompt-button{min-height:3.25rem}.visual-prompt{margin:.75rem 0 0;padding:.65rem .8rem;border-left:.35rem solid #f4b942;border-radius:.35rem;background:#fff8e7;color:#17324d}.word-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem}.word-tile{position:relative;display:grid;min-width:0;min-height:5.6rem;place-items:center;padding:.75rem 2.5rem .75rem .75rem;border:3px solid #c6e1d8;border-radius:1.1rem;background:#fff;color:#17324d;cursor:pointer;font-size:clamp(1.1rem,3.5vw,1.65rem);font-weight:850;overflow-wrap:anywhere;text-align:center;transition:transform .15s ease,border-color .15s ease,background .15s ease}.word-tile:hover:not(:disabled),.word-tile:focus-visible{border-color:#176b87;background:#effff8;transform:translateY(-.15rem)}.word-tile:disabled{cursor:not-allowed}.word-tile-word{max-width:100%}.word-tile-mark{position:absolute;top:.5rem;right:.65rem;display:grid;width:1.7rem;height:1.7rem;place-items:center;border-radius:50%;background:#176b87;color:#fff;font-size:1rem}.word-tile-correct{border-color:#176b87;background:#dff7ed}.word-tile-incorrect{border-color:#a43f3f;background:#fff0ed}.word-tile-answer{border-color:#c9782b;background:#fff4d8}.feedback-panel{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;padding:1rem 1.2rem;border:2px solid #bdd7d0;border-radius:1rem;background:#f7fffb}.feedback-try-again{border-color:#edc76a;background:#fffaf0}.feedback-icon{display:grid;width:3rem;height:3rem;place-items:center;border-radius:50%;background:#f4b942;color:#17324d;font-size:1.5rem;font-weight:900}.feedback-panel h3{margin:0 0 .3rem;font-size:1.3rem}.feedback-panel p:last-child{margin:0;color:#446277}.feedback-actions{justify-content:flex-end}.round-complete-card{justify-items:center;text-align:center;background:linear-gradient(135deg,#fffdf4,#edfff8)}.round-treasure{font-size:4rem;line-height:1}.round-summary{max-width:36rem;margin-bottom:0}.celebration-stack{display:grid;width:min(100%,34rem);gap:.7rem}.celebration-heading{margin:0;color:#176b87;font-weight:850}.round-choice-grid{justify-content:center;margin-top:.5rem}.persistence-error-card{border-color:#e7b1a9;background:#fff7f5}.confetti{position:absolute;inset:0;pointer-events:none}.confetti span{position:absolute;top:-.5rem;left:calc(4% + (var(--confetti-index) * 7%));width:.55rem;height:1.1rem;border-radius:.2rem;background:#f4b942;animation:confetti-drop 1.2s calc(var(--confetti-index) * 40ms) ease-out forwards;transform:rotate(calc(var(--confetti-index) * 31deg))}@keyframes confetti-drop{0%{opacity:0;transform:translateY(-.5rem) rotate(0)}20%{opacity:1}to{opacity:0;transform:translateY(10rem) rotate(220deg)}}.confetti span:nth-child(3n){background:#176b87}.confetti span:nth-child(3n+1){background:#ef806d}.progress-screen,.game-screen{min-width:0}.progress-screen-heading{margin-bottom:1rem}.progress-map-card,.badges-section,.next-milestone-card{min-width:0;margin-top:1rem;padding:1.35rem;border:1px solid #d5e7e1;border-radius:1.35rem;background:#fff;box-shadow:0 .5rem 1.3rem #17324d0f}.progress-map-heading h2,.section-heading-row h2,.next-milestone-card h2{margin-bottom:0}.map-treasure,.badge-count{color:#176b87;font-weight:800}.map-treasure{display:inline-flex;align-items:center;gap:.35rem}.map-art{position:relative;width:100%;max-width:100%;margin-top:1rem;overflow:hidden;border-radius:1rem;background:#dff7ed}.map-art svg{display:block;width:100%;min-width:0;height:auto;aspect-ratio:16 / 9}.map-surface{fill:#dff7ed}.map-river{fill:none;stroke:#8dd2d1;stroke-width:26}.map-route{fill:none;stroke-linecap:round;stroke-width:10}.map-route-remaining{stroke:#7da69f;stroke-dasharray:8 10}.map-route-completed{stroke:#f4b942}.map-sun{fill:#ffd76a}.map-camp-ground{fill:#79c99c}.map-forest-ground{fill:#a8e6d1}.map-summit-ground{fill:#c4dbe8}.map-camp,.map-forest,.map-bridge,.map-summit,.map-treasure-pin,.map-current-marker{pointer-events:none}.map-landmark-marker{transition:fill .15s ease,stroke .15s ease}.map-landmark-unreached .map-landmark-marker{fill:#fff;stroke:#7da69f}.map-landmark-icon{fill:#17324d;font-size:1.15rem;font-weight:900}.map-overlay-labels{position:absolute;inset:0;pointer-events:none}.map-overlay-label{position:absolute;max-width:7.5rem;padding:.14rem .3rem;border:1px solid rgb(23 50 77 / 18%);border-radius:.35rem;background:#ffffffe0;color:#17324d;font-size:clamp(.75rem,2vw,.88rem);font-weight:850;line-height:1.1;text-align:center;white-space:nowrap;transform:translate(-50%,-50%)}.map-overlay-label-camp-start{top:91%;left:17%}.map-overlay-label-word-woods{top:36%;left:36%}.map-overlay-label-star-bridge{top:85%;left:61%}.map-overlay-label-story-summit{top:36%;left:80%}.map-treasure-pin path{fill:#f4b942;stroke:#c9782b;stroke-width:3}.map-treasure-pin text{fill:#17324d;font-size:.8rem;font-weight:900}.map-current-marker circle{fill:#176b87;stroke:#fff;stroke-width:6}.map-current-marker text{fill:#fff;font-size:1.2rem;font-weight:900}.map-mastery-summary{margin:.45rem 0 0;color:#446277;line-height:1.35}.map-mastery-summary strong{color:#17324d}.map-current-position,.map-complete-message{margin:.9rem 0 0;color:#446277;line-height:1.45}.map-current-position{padding:.7rem .85rem;border-left:.3rem solid #176b87;border-radius:.55rem;background:#e7fbf2}.map-current-position strong,.map-complete-message,.map-list-reached{color:#176b87}.map-complete-message{font-weight:750}.map-stop-list{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;margin:.75rem 0 0;padding:0;list-style:none;color:#446277;font-size:.85rem}.map-stop-list li{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:.2rem;min-width:0;padding:.65rem .55rem;border:2px solid #d5e7e1;border-radius:.75rem;background:#f7fffb;text-align:left}.map-stop-list li>span:first-child{font-size:1.1rem;line-height:1.15}.map-stop-list li>span:last-child{display:grid;gap:.15rem;min-width:0}.map-stop-list strong{overflow-wrap:anywhere;line-height:1.2}.map-stop-list small{color:#446277;font-size:.75rem;font-weight:650}.map-list-reached{border-color:#8fc8b5;font-weight:800}.map-list-unreached{border-style:dashed}.map-list-current{box-shadow:0 0 0 3px #f4b94240}.map-treasures{margin-top:1rem;padding-top:1rem;border-top:1px solid #d5e7e1}.map-treasures h3{margin:0;font-size:1rem}.map-treasure-list,.map-legend{display:grid;gap:.5rem;margin:.65rem 0 0;padding:0;list-style:none}.map-treasure-list li,.map-legend li{display:flex;align-items:flex-start;gap:.45rem;min-width:0;color:#446277;line-height:1.35}.map-treasure-list li>span:first-child,.map-legend li>span:first-child{flex:0 0 auto;color:#c9782b;font-weight:900}.map-no-treasures{margin:.65rem 0 0;color:#446277;font-size:.9rem}.map-legend{grid-template-columns:repeat(4,minmax(0,1fr));margin-top:1rem;padding-top:.8rem;border-top:1px solid #d5e7e1;font-size:.78rem}.progress-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;margin-top:1rem}.progress-stat-grid article{display:grid;justify-items:center;gap:.2rem;padding:.9rem .45rem;border:1px solid #d5e7e1;border-radius:.9rem;background:#f7fffb;color:#446277;text-align:center}.progress-stat-grid article span:first-child{font-size:1.35rem}.progress-stat-grid strong{color:#17324d;font-size:1.45rem}.milestone-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:.75rem;margin-top:1rem}.milestone-card{display:grid;grid-template-columns:3rem 1fr;align-items:center;gap:.75rem;min-height:5.5rem;padding:.8rem;border:2px solid #d5e7e1;border-radius:1rem;background:#fff}.milestone-locked{opacity:.7}.milestone-earned{border-color:#edc76a;background:#fffaf0}.milestone-featured{box-shadow:0 0 0 3px #f4b94233}.milestone-badge{display:grid;width:3rem;height:3rem;place-items:center;border-radius:50%;background:#e8f1ed;color:#7b9991;font-size:1.5rem;font-weight:900}.milestone-earned .milestone-badge{background:#f4b942;color:#17324d}.milestone-card h3{margin:0 0 .2rem;font-size:1rem}.milestone-card p{margin:0;color:#446277;font-size:.88rem;line-height:1.35}.milestone-status{display:block;margin-top:.3rem;color:#176b87;font-size:.78rem;font-weight:800}.next-milestone-card{background:#f7fffb}.next-milestone-card p:last-child{margin-bottom:0;color:#446277}.progress-footnote{margin:1rem 0 0;color:#446277;font-size:.9rem;text-align:center}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #f4b942;outline-offset:3px}@media(max-width:680px){.screen-heading{display:grid}.avatar-grid{grid-template-columns:repeat(5,minmax(2.7rem,1fr))}.adventure-header-topline,.progress-map-heading,.section-heading-row{align-items:flex-start;flex-direction:column}.adventure-actions{width:100%}.adventure-actions .map-button{flex:1}.prompt-card{grid-template-columns:3.4rem 1fr}.prompt-controls{grid-column:1 / -1;min-width:0}.feedback-panel{grid-template-columns:auto 1fr}.feedback-actions{grid-column:1 / -1;justify-content:stretch}.feedback-actions button{flex:1}.progress-screen-heading{align-items:flex-start}}@media(min-width:720px){.word-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.grade-list{display:grid;gap:.75rem;margin:1rem 0 0;padding:0;list-style:none}.grade-list li{display:flex;justify-content:space-between;gap:1rem;padding:.75rem 1rem;border-radius:.75rem;background:#f2f7f5}@media(max-width:520px){.app-shell{width:min(100% - 1rem,64rem);padding-top:.5rem}.app-header,.shell-card,.screen-card{padding:1.25rem;border-radius:1rem}.start-quest-card{grid-template-columns:1fr;text-align:center}.start-quest-card .guide-art img{width:8rem}.word-tile{min-height:5rem;padding-right:1.9rem}.progress-stat-grid{grid-template-columns:repeat(2,1fr)}.map-art{overflow:hidden}.map-stop-list,.map-legend{grid-template-columns:repeat(2,minmax(0,1fr))}.round-choice-grid{display:grid;width:100%}.round-choice-grid button{width:100%}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
