/* Larger default type for comfortable reading. Dense arcade labels are enlarged separately. */
:root{font-size:21px}
.large-text{font-size:24px}
.small{font-size:.95rem}.eyebrow,.badge,.footer{font-size:.85rem}.text-btn,.btn.small-btn{font-size:.95rem}.chip{font-size:.9rem}
.option-row p,.parent-summary p,.type-description,.evidence-table,.calendar-row{font-size:.95rem}.type-example,.branch-count,.type-focus{font-size:.82rem}
.lesson-tile span,.lesson-tile small,.question-source,.story-ribbon p,.title-note,.wardrobe-item,.wardrobe-item small{font-size:.9rem}
.map-pin-icon{width:clamp(62px,6.5vw,88px);height:clamp(62px,6.5vw,88px);font-size:clamp(1rem,1.45vw,1.3rem)}
.map-pin strong{margin-top:2px;padding:7px 11px;font-size:clamp(1rem,1.5vw,1.25rem);line-height:1.1}.map-pin-count{right:-12px;top:-10px;min-width:42px;min-height:32px;padding:5px 7px;font-size:.86rem}.map-tool{width:88px;height:78px;min-height:78px}.map-tool>span{font-size:1.8rem}.map-tool small{font-size:.86rem}.map-logo{font-size:clamp(1.1rem,1.9vw,1.5rem)}
.map-capy-host{grid-template-columns:minmax(250px,340px) 88px;gap:10px}.map-capy-button .shopkeeper{width:88px;max-height:132px}.map-capy-bubble{padding:13px 15px}.map-capy-bubble p{font-size:1.04rem;line-height:1.35;max-height:6.8em;overflow:auto;padding-right:3px}.map-capy-bubble .speaker-name{font-size:.82rem}.map-capy-replay{min-height:42px;padding:6px 11px;font-size:.9rem}
.map-quest-popover{gap:7px;width:clamp(280px,28vw,390px);padding:15px 17px;border-width:4px}.map-quest-popover strong{font-size:1.15rem}.map-quest-popover small{font-size:.98rem;line-height:1.4}.map-quest-main{min-height:50px;padding:8px 12px;font-size:1rem}.map-quest-close{width:48px;height:48px;min-height:48px;font-size:1.25rem}
.world-title-plaque small,.world-title-plaque span{font-size:.72rem}.world-title-plaque h1{font-size:clamp(1rem,1.65vw,1.3rem)}.world-guide-token{font-size:.8rem}
.mission-story>div>span{font-size:.7rem}.mission-story h2{font-size:clamp(1rem,1.35vw,1.2rem)}.mission-story p{font-size:.82rem}
body[data-route=world] .campaign-stop strong{font-size:.76rem}body[data-route=world] .campaign-stop small{font-size:.67rem}.world-action-token{font-size:.78rem}
.gwen-cutaway-dialogue .speaker-name{font-size:.82rem}.gwen-cutaway-dialogue p{font-size:clamp(1.2rem,2.15vw,1.55rem)}.gwen-cutaway-prompt{font-size:.72rem}
@media(max-width:640px){:root{font-size:19px}.large-text{font-size:22px}.small{font-size:1rem}.text-btn,.btn.small-btn{font-size:1rem}.map-pin strong{font-size:1rem}.map-capy-bubble p{font-size:1rem}}
@media(orientation:landscape) and (max-height:600px){:root{font-size:18px}body[data-route=worlds] .overworld{width:100vw;height:100dvh}.mission-drawer{grid-template-columns:140px minmax(390px,1fr) 105px;max-height:48dvh;overflow:auto}body[data-route=world] .campaign-stages{grid-template-columns:repeat(3,minmax(0,1fr))}body[data-route=world] .campaign-stop{display:grid;grid-template-columns:23px 1fr;align-items:center;text-align:left;min-height:58px}body[data-route=world] .campaign-stop strong{font-size:.72rem}body[data-route=world] .campaign-stop small{font-size:.64rem}.mission-story h2{font-size:.9rem}.world-action-token{font-size:.7rem}.map-pin-icon{width:54px;height:54px;font-size:.9rem}.map-pin strong{padding:5px 8px;font-size:.82rem}.map-pin-count{right:-8px;top:-8px;min-width:34px;min-height:27px;font-size:.7rem}.map-tool{width:76px;height:64px;min-height:64px}.map-tool>span{font-size:1.45rem}.map-tool small{font-size:.7rem}.map-capy-host{grid-template-columns:minmax(190px,270px) 68px}.map-capy-button .shopkeeper{width:68px;max-height:98px}.map-capy-bubble p{font-size:.82rem;max-height:3.2em}.map-capy-bubble .speaker-name{font-size:.66rem}.map-capy-replay{min-height:34px;font-size:.72rem}.map-quest-popover{width:270px;padding:10px 12px}.map-quest-popover strong{font-size:.92rem}.map-quest-popover small,.map-quest-main{font-size:.8rem}.map-quest-main{min-height:40px}.map-quest-close{width:40px;height:40px;min-height:40px}.gwen-cutaway-dialogue p{font-size:1rem}}

/* One clear character for each SATs subject. */
.subject-avatar{position:relative;display:block;width:100%;aspect-ratio:1/1;overflow:visible;transform-origin:50% 92%;animation:subject-idle 5.5s ease-in-out infinite}
.subject-avatar>img{position:static!important;display:block;width:100%!important;height:100%!important;max-width:none!important;object-fit:contain!important;object-position:center bottom!important;mix-blend-mode:normal!important;image-rendering:pixelated;filter:drop-shadow(0 5px 3px #45344b55)}
.subject-avatar-reading{aspect-ratio:1856/2282}
.subject-avatar.compact{height:100%;aspect-ratio:auto}
@keyframes subject-idle{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-3px) rotate(.6deg)}}
.pom-pom-character{animation:pompom-idle 2.8s steps(3,end) infinite}
.pompom-mouth{position:absolute;left:50.4%;top:35.3%;width:7.5%;height:2.4%;border-radius:45%;background:#ff77c7;opacity:0;transform-origin:center;pointer-events:none}
.pom-pom-character.talking{animation:pompom-cheer .42s steps(2,end) infinite}
.pom-pom-character.mouth-moving .pompom-mouth{opacity:.85;animation:pompom-mouth .29s steps(2,end) infinite}
.evie-mouth{position:absolute;left:48.2%;top:26.1%;width:4.4%;height:1.65%;border-radius:12% 12% 55% 55%;background:#5a0c28;opacity:0;transform-origin:center top;pointer-events:none}
.evie-character.talking{animation:evie-talk .8s steps(2,end) infinite}
.evie-character.mouth-moving .evie-mouth{opacity:.92;animation:evie-mouth .29s steps(2,end) infinite}
.pink-mouth{position:absolute;left:50%;top:22.2%;width:5.4%;height:1.55%;border-radius:12% 12% 55% 55%;background:#64102f;opacity:0;transform:translateX(-50%);transform-origin:center top;pointer-events:none}
.pink-character.talking{animation:pink-talk .8s steps(2,end) infinite}
.pink-character.mouth-moving .pink-mouth{opacity:.9;animation:pink-mouth .29s steps(2,end) infinite}
@keyframes pompom-idle{50%{transform:translateY(-4px) rotate(-.7deg)}}
@keyframes pompom-cheer{50%{transform:translateY(-5px) rotate(1deg)}}
@keyframes pompom-mouth{50%{transform:scaleY(.35);opacity:.25}}
@keyframes evie-talk{50%{transform:translateY(-2px) rotate(.35deg)}}
@keyframes evie-mouth{50%{transform:scaleY(.32);opacity:.35}}
@keyframes pink-talk{50%{transform:translateY(-2px) rotate(-.3deg)}}
@keyframes pink-mouth{50%{transform:translateX(-50%) scaleY(.3);opacity:.35}}
.reduce-motion .subject-avatar,.reduce-motion .pom-pom-character,.reduce-motion .pompom-mouth,.reduce-motion .evie-character,.reduce-motion .evie-mouth,.reduce-motion .pink-character,.reduce-motion .pink-mouth{animation:none!important}.reduce-motion .pompom-mouth,.reduce-motion .evie-mouth,.reduce-motion .pink-mouth{display:none}
@media(prefers-reduced-motion:reduce){.subject-avatar,.pom-pom-character,.pompom-mouth,.evie-character,.evie-mouth,.pink-character,.pink-mouth{animation:none!important}.pompom-mouth,.evie-mouth,.pink-mouth{display:none}}

.subject-art{aspect-ratio:1.08/1;background:linear-gradient(155deg,#fff0b9,#efc8e5);padding:8px 8px 0}
.subject-art>.subject-avatar{height:100%}
.subject-shortcut{overflow:hidden;padding:0 0 11px!important;background:linear-gradient(#fff9d9,#f7d9ed)!important}
.subject-shortcut>strong{display:block;padding:8px 8px 2px;color:#57364f;font-size:1.08rem;line-height:1.15}
.subject-companion{display:block;padding:0 7px;color:#795a71;font-size:.82rem;line-height:1.25}
.subject-shortcut-maths .subject-art{background:linear-gradient(#cbe9ff,#bbd6ff)}
.subject-shortcut-grammar .subject-art{background:linear-gradient(#ffd2dc,#f2c9ff)}
.subject-shortcut-reading .subject-art{background:linear-gradient(#dbf3bf,#fff0ad)}
.subject-shortcut-spelling .subject-art{background:linear-gradient(#ffd0ed,#ffc65c)}

.map-pin-icon{overflow:hidden}
.map-pin-maths .map-pin-icon img,.map-pin-grammar .map-pin-icon img,.map-pin-spelling .map-pin-icon img{height:156%;max-width:145%;transform:translateY(17%)}
.map-pin-reading .map-pin-icon img{width:118%;height:145%;max-width:none;transform:translateY(15%)}
body[data-route=world] .world-companion>.subject-avatar{width:100%;height:min(31dvh,260px);aspect-ratio:auto}
body[data-route=world] .world-companion:has(.subject-avatar-reading){width:18%;bottom:29%}
.world-welcome-art>.subject-avatar{width:115px;height:155px;aspect-ratio:auto;margin:0 auto}
.world-welcome-art>.subject-avatar-reading{width:110px}
.world-welcome-art>.pom-pom-character{width:125px}
.subject-question-guide,.spelling-menu-friend{display:flex;align-items:center;gap:16px;padding:12px 16px;margin:14px 0;border:3px solid #b16b9e;border-radius:15px;background:linear-gradient(135deg,#fff1c1,#ffd5ee)}
.subject-question-guide>.subject-avatar{flex:0 0 92px;width:92px;height:92px;aspect-ratio:auto}
.subject-question-guide p,.spelling-menu-friend p{margin:4px 0 0;font-size:.92rem;line-height:1.4}
.spelling-menu-friend>.subject-avatar{flex:0 0 125px;width:125px;height:140px;aspect-ratio:auto}
.spelling-menu-friend h2{margin:0}
@media(max-width:650px){.world-welcome-art>.subject-avatar{width:68px;height:94px}.subject-question-guide{padding:9px 11px;gap:10px}.subject-question-guide>.subject-avatar{flex-basis:72px;width:72px;height:72px}.subject-question-guide p{font-size:.82rem}.spelling-menu-friend>.subject-avatar{flex-basis:90px;width:90px;height:105px}.subject-shortcut>strong{font-size:.98rem}.subject-companion{font-size:.75rem}}
@media(orientation:landscape) and (max-height:600px){.world-welcome-art>.subject-avatar{width:75px;height:96px}.subject-question-guide{padding:7px 10px;margin:8px 0}.subject-question-guide>.subject-avatar{flex-basis:64px;width:64px;height:64px}.subject-question-guide p{font-size:.72rem}.subject-art{max-height:150px}.subject-shortcut>strong{font-size:.86rem}.subject-companion{font-size:.67rem}}

/* Personal names can be long; small signs keep their full accessible labels. */
.stable-name{display:block;align-content:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.map-pin strong{max-width:240px;overflow:hidden;text-overflow:ellipsis}
.world-title-plaque h1,#world-welcome-title,.game-menu-links .btn{overflow-wrap:anywhere}
