:root{--visible-height:100svh;--visible-top:0px;color-scheme:light;font-family:Arial,Helvetica,sans-serif;color:#70556b;background:#1c2433;font-synthesis:none}
*{box-sizing:border-box}html{height:100%;overflow:clip;overscroll-behavior:none;-webkit-tap-highlight-color:transparent}body{position:fixed;top:var(--visible-top);left:0;margin:0;width:100%;height:min(var(--visible-height),100dvh);container-type:size;overflow:clip;overscroll-behavior:none;background:#fff8ef}
button{font:inherit;cursor:pointer;color:inherit;-webkit-tap-highlight-color:transparent}button:focus-visible,[role=button]:focus-visible{outline:3px solid #c48eaf;outline-offset:4px}button:disabled{cursor:default}[hidden]{display:none!important}
.map-screen{position:relative;width:100%;height:100%;overflow:hidden;background:#d8eef0;transition:opacity .35s}
#map-canvas{display:block;width:100%;height:100%;touch-action:none;user-select:none;cursor:grab;outline:none}#map-canvas:active{cursor:grabbing}#map-canvas:focus-visible{box-shadow:inset 0 0 0 2px #c5accc}
.earth-country,.country-marker,.world-place{cursor:pointer}.territory-border{stroke-linejoin:round;stroke-linecap:round;opacity:.7}.earth-country.highlighted .territory-border{stroke:#d89bb4;stroke-width:3;stroke-dasharray:1;animation:border-draw 1.1s ease both;opacity:1}
@keyframes border-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
.country-marker:focus-visible{outline:none}.country-marker:focus-visible>path{stroke:#9e77b3;stroke-width:4}.country-marker:hover>path{fill:#fffdf8}
.region-ground{transition:fill 1s}.unlocked>.region-ground{fill:#d3e5bb}.unlocked>.region-fog,.unlocked>.region-lock{display:none}.region-lock{pointer-events:none;opacity:.8}
.world-place{--freshness:0;outline:none}.world-place .shop-art{filter:saturate(calc(.8 + var(--freshness)*.2))}.world-place.unavailable .shop-art{filter:grayscale(.65);opacity:.65}
.world-place:focus-visible .place-hit{stroke:#bb8fb0;stroke-width:2}.session-face{transition:translate .2s}.world-place:hover .session-face{translate:0 -3px}.session-map-icon{pointer-events:none}
.connection-retry{position:absolute;left:calc(50% - 26px);bottom:max(24px,env(safe-area-inset-bottom));width:52px;height:52px;border:2px solid #d4b5c7;border-radius:20px;background:#fff7e6;display:grid;place-items:center}.connection-retry svg{width:26px;height:26px;fill:none;stroke:#ab7c9c;stroke-width:2;stroke-linecap:round}
.shop-awning{transform-origin:0 -30px;animation:awning-sway 5s ease-in-out infinite}.shop-steam{animation:steam-rise 4s ease-in-out infinite}.shop-spark{animation:shop-spark 3s ease-in-out infinite;transform-origin:33px -44px}.fluffy-tree{transform-box:fill-box;transform-origin:bottom center}
.travel-route{pointer-events:none;animation:route-flow 1.3s linear infinite}.travel-plane{animation:plane-shake 1.6s ease-in-out infinite;transform-box:fill-box;transform-origin:center}#world-pawn.walking .pawn-body{animation:pawn-step .35s ease-in-out infinite alternate;transform-origin:0 0}#world-pawn.riding .pawn-body{animation:pawn-step .8s ease-in-out infinite alternate}.pawn-vehicle{display:none}.riding .pawn-vehicle{display:block}
@keyframes pawn-step{to{translate:0 -3px;rotate:3deg}}@keyframes plane-shake{0%,100%{rotate:-1deg}50%{rotate:1deg}}@keyframes route-flow{to{stroke-dashoffset:-10}}@keyframes awning-sway{50%{transform:skewX(2deg)}}@keyframes steam-rise{0%,100%{translate:0 2px;opacity:.25}50%{translate:0 -5px;opacity:.85}}@keyframes shop-spark{50%{opacity:.4;scale:.7}}
main{position:relative;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;width:100%;margin:auto;height:100%;min-height:0;overflow:clip;padding:max(28px,env(safe-area-inset-top)) 18px max(24px,env(safe-area-inset-bottom));gap:clamp(8px,2cqh,20px);--slot-size:min(96px,calc((100cqw - 48px - (var(--slot-count,3) - 1)*8px)/var(--slot-count,3)),max(64px,18cqh));background:#1c2433;color:#f8f4ec}
#title{display:flex;align-items:center;justify-content:center;height:46px;line-height:1;margin:0;transition:opacity .2s}#title img{display:block;width:50px;height:50px}.session-emblem{position:absolute;top:max(28px,env(safe-area-inset-top));left:18px;width:42px;height:42px;object-fit:contain;pointer-events:none}.session-launching .session-emblem{visibility:hidden}
#progress{height:6px;border-radius:12px;overflow:hidden;background:#e6e6d8}#progress-fill{width:100%;height:100%;background:#a9c99f;transform:scaleX(0);transform-origin:left;transition:transform .42s cubic-bezier(.2,.7,.3,1);border-radius:12px}#progress.resetting #progress-fill{transition:none}
.sound-area{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:0;gap:clamp(7px,1.8cqh,14px)}#sound{flex:none;display:grid;place-items:center;width:clamp(144px,34cqh,260px);height:clamp(94px,22cqh,170px);border:0;border-radius:28px;background:none;padding:0;overflow:visible}#sound:active{scale:.97}#sound svg.vendor-art{width:100%;height:100%;fill:none;overflow:visible}
.vendor-body{transform-origin:80px 120px;animation:vendor-breathe 4s ease-in-out infinite}.vendor-hand{transform-origin:112px 90px;animation:vendor-wave 7s ease-in-out infinite}.vendor-eyes{transform-origin:80px 52px;animation:vendor-blink 5s infinite}.playing .vendor-mouth{animation:vendor-talk .3s ease-in-out infinite alternate;transform-origin:81px 64px}.playing .vendor-hand{animation:vendor-wave 1.6s ease-in-out infinite}.scene-goods{animation:goods-bob 5s ease-in-out infinite}
@keyframes vendor-breathe{50%{translate:0 -2px}}@keyframes vendor-wave{0%,70%,100%{rotate:0deg}80%{rotate:-12deg}90%{rotate:5deg}}@keyframes vendor-blink{0%,45%,49%,100%{scale:1 1}47%{scale:1 .1}}@keyframes vendor-talk{to{scale:1.1 1.8}}@keyframes goods-bob{50%{translate:0 -2px}}
.kind-noun,.kind-pronoun{--word-color:#c2dfcb}.kind-verb,.kind-auxiliary,.kind-negation{--word-color:#c4d5ed}.kind-adjective{--word-color:#dce6ba}.kind-adverb{--word-color:#c3e2e8}.kind-connector{--word-color:#edcbb5}.kind-determiner,.kind-preposition{--word-color:#f3dfae}
.slots{display:flex;flex-wrap:nowrap;justify-content:center;gap:8px;max-width:100%;transition:opacity .28s,transform .28s}.word-slot{position:relative;flex:none;display:grid;place-items:center;width:var(--slot-size);height:var(--slot-size);padding:3px;border:2px solid color-mix(in srgb,var(--word-color) 80%,#b6a3b7);border-radius:18px;background:color-mix(in srgb,var(--word-color) 25%,#fff9ef);transition:background .3s,border-color .3s,box-shadow .3s}
.word-slot.active{border-color:#b291ae;box-shadow:0 0 0 4px #dabbd529}.word-slot.active:empty:after{content:'';position:absolute;left:50%;top:50%;translate:-50% -50%;width:9px;height:9px;border-radius:50%;background:#b69ab2;opacity:.6}.word-slot img{width:100%;height:100%;object-fit:contain}.word-slot.filled{background:var(--word-color)}.word-slot.receiving>img,.word-slot.receiving>.action-art{visibility:hidden}.slots.complete .word-slot{border-color:#9ab792;box-shadow:0 0 0 4px #b1cca929;background:#dbebd2}.slots.exiting{opacity:0;transform:translateY(-8px)}
.cards{--card-size:min(124px,calc((100cqw - 60px)/2),max(32px,calc((100cqh - var(--slot-size) - 290px - env(safe-area-inset-top) - env(safe-area-inset-bottom))/2)));display:grid;grid-template-columns:repeat(2,var(--card-size));grid-template-rows:repeat(2,var(--card-size));gap:12px;justify-content:center;align-items:end;transition:opacity .55s ease,transform .3s ease}.card{position:relative;overflow:hidden;width:var(--card-size);height:var(--card-size);border:1px solid color-mix(in srgb,var(--word-color) 65%,#344653);border-radius:18px;padding:6px;background:var(--word-color);box-shadow:none;transition:opacity .25s,background .2s,border-color .2s,box-shadow .2s;animation:arrive .4s both}.card img{width:100%;height:100%;object-fit:contain;pointer-events:none}.card:first-child{grid-column:1 / -1;justify-self:center}.card:nth-child(2){grid-column:1;grid-row:2}.card:nth-child(3){grid-column:2;grid-row:2}.cards.single .card{grid-column:1 / -1;grid-row:2;justify-self:center}.card:active{translate:0 1px;box-shadow:none}.card.wrong:after{content:'';position:absolute;inset:0;background:#c8b0c182;pointer-events:none;animation:dim .25s both}.card.correct{background:#d2e7c7;border-color:#7d9f73;box-shadow:inset 0 0 0 2px #607d59}.cards.exiting{opacity:0;transform:translateY(8px)}
.action-art{width:100%;height:100%;pointer-events:none;overflow:visible}.flying-word,.session-flight{position:fixed;pointer-events:none;z-index:6;object-fit:contain}.map-screen.selecting{opacity:0;pointer-events:none}.phase-intro #progress,.phase-intro .sound-area,.phase-intro .cards{opacity:0;pointer-events:none}.phase-intro .card{animation:none}.phase-out #title,.phase-out #progress,.phase-out .sound-area,.phase-out .cards{opacity:0;transition:opacity .24s ease}#progress,.sound-area{transition:opacity .55s ease}.connection-error #progress{box-shadow:0 0 0 3px #e0b4a3}.connection-error #sound{outline:2px dashed #d7a28d}
.completion-screen{position:absolute;inset:0;z-index:5;overflow:hidden;pointer-events:auto;background:#1c2433}.completion-emblem{position:fixed;pointer-events:none}.completion-emblem img{display:block;width:100%;height:100%;object-fit:contain}.completion-slots{position:absolute;top:calc(50% + var(--completion-icon-size)*.65 + 16px);left:50%;transform:translateX(-50%);display:flex;justify-content:center;gap:8px;width:max-content;max-width:calc(100% - 24px)}.completion-card{position:relative;flex:none;width:min(68px,calc((100cqw - 64px)/5),18cqh);height:min(68px,calc((100cqw - 64px)/5),18cqh);padding:4px;border:1px solid #b9b5b3;border-radius:14px;background:#f5eee6;transition:background .35s}.completion-card img{width:100%;height:100%;object-fit:contain}.completion-card.revealed{background:var(--word-color)}
@keyframes arrive{from{opacity:0;translate:0 9px}to{opacity:1;translate:0 0}}@keyframes dim{from{opacity:0}to{opacity:1}}
@container(max-height:600px){main{padding-top:max(12px,env(safe-area-inset-top));padding-bottom:max(12px,env(safe-area-inset-bottom));gap:10px}#title{height:34px}#title img{width:38px;height:38px}.session-emblem{top:12px;width:32px;height:32px}}
@container(max-height:500px) and (min-width:600px){main{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:30px 5px minmax(0,1fr);gap:8px 16px;padding:12px 18px;--slot-size:min(64px,calc((50cqw - 42px - (var(--slot-count,3) - 1)*6px)/var(--slot-count,3)))}#title,#progress{grid-column:1 / -1}.sound-area{grid-column:1;grid-row:3;justify-content:center}.cards{grid-column:2;grid-row:3;align-self:center;--card-size:min(95px,calc((100cqw - 80px)/4),calc((100cqh - 95px)/2))}.slots{gap:6px}#sound{width:160px;height:105px}}
.world-paused *{animation-play-state:paused!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

#map-canvas:not(.topics-visible) .region-cells{display:none}.earth-country:focus-visible{outline:none}.earth-country:focus-visible .country-land{stroke:#76538b;stroke-width:3}.topics-visible [data-region]{cursor:pointer}.topics-visible .region-cells{animation:topics-appear 900ms ease both}@keyframes topics-appear{from{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){.topics-visible .region-cells{animation:none}}

#map-canvas[aria-busy=true]{cursor:wait}.world-locked{cursor:not-allowed}#map-scene{pointer-events:auto}.travel-plane{animation:none}#map-player{pointer-events:none}

.session-emblem,.session-flight,.completion-emblem img{background:#edf2e8;border-radius:12px}.flying-word{background:var(--word-color);border-radius:18px}
