:root{font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:#243a35;background:#f1f5ed;font-synthesis:none;--ink:#283d35;--muted:#708078;--green:#2e8566;--deep:#164f40;--cream:#fffdf5;--stroke:#e6e9de;--shadow:0 12px 34px #3e624015}*{box-sizing:border-box}body{margin:0}button{font:inherit;cursor:pointer;touch-action:manipulation}button:disabled{cursor:not-allowed;opacity:.53}[hidden]{display:none!important}.app{max-width:1330px;min-height:100dvh;margin:auto;background:#f8f8f1;box-shadow:0 0 50px #24473715}.topbar{display:flex;align-items:center;justify-content:space-between;padding:15px 26px;background:var(--cream);border-bottom:1px solid var(--stroke);gap:14px}.brand{display:flex;align-items:center;gap:11px}.brand-icon{background:#235b4b;color:#f9dd8d;border-radius:16px;padding:10px 15px;font-size:27px;box-shadow:0 6px 14px #235b4b25}.brand strong{font-weight:950;font-size:23px;letter-spacing:-.8px}.brand small{display:block;color:#829087;font-size:11px;margin-top:2px}.version{font-size:10px;padding:3px 6px;border-radius:6px;background:#eaf4e8;color:#4f8e65;margin-left:7px;vertical-align:middle;letter-spacing:normal}.top-actions{display:flex;align-items:center;gap:10px}.flag{font-size:11px;font-weight:800;color:#7a7147;background:#fff4d3;border-radius:40px;padding:9px 12px;white-space:nowrap}.flag.real{background:#e2f4ea;color:#237956}.icon-btn{height:38px;width:38px;border-radius:12px;border:1px solid #e6e5d6;background:white;font-size:19px}.content{display:grid;grid-template-columns:minmax(245px,295px) minmax(0,1fr);gap:22px;padding:25px 27px}.intro{padding:13px 3px}.eyebrow{display:block;color:#86a294;font-weight:900;letter-spacing:1.65px;font-size:10px}.intro h1{font-size:clamp(29px,3vw,41px);letter-spacing:-1.7px;line-height:1.05;margin:13px 0 10px;font-weight:950}.intro h1 em{font-style:normal;color:var(--green)}.intro>p{font-size:14px;line-height:1.7;color:#77867c;margin:0 0 22px}.mode-switch{background:#e8efe5;padding:5px;border-radius:17px;display:grid;gap:5px}.mode-switch button{border:none;background:transparent;border-radius:12px;padding:11px 9px;color:#6c8074;font-size:12px;font-weight:800;text-align:left}.mode-switch button.selected{background:white;box-shadow:0 4px 12px #5a79531c;color:#286d54}.intro .mode-explain{font-size:12px;line-height:1.6;margin:13px 4px 22px}.mission{background:#fffdf5;border:1px solid var(--stroke);border-radius:19px;padding:16px;box-shadow:var(--shadow)}.mission-head{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:850}.mission-head span+span{color:#308768}.progress-track,.hunt-meter{height:10px;border-radius:40px;background:#e6eadd;overflow:hidden;margin:13px 0}.progress-track>div,.hunt-meter>div{height:100%;width:0;background:linear-gradient(90deg,#a1ce91,#3fa47c);border-radius:40px;transition:width .3s}.mission p{font-size:12px;color:#76857a;line-height:1.6;margin:0}.tip-card{display:flex;align-items:flex-start;gap:11px;color:#7d825c;font-size:12px;line-height:1.65;padding:16px 8px}.tip-card>span:first-child{font-size:20px}.play-area{display:grid;grid-template-columns:minmax(0,1fr) 278px;gap:18px;align-items:stretch;min-width:0}.map-panel,.drawer{border:1px solid var(--stroke);border-radius:22px;background:#fffdf9;overflow:hidden;box-shadow:var(--shadow);min-width:0}.map-panel{position:relative;display:flex;flex-direction:column;min-height:515px}.map-top{padding:15px 17px;display:flex;align-items:center;justify-content:space-between;background:#fffdf9;z-index:2}.map-top strong{font-size:13px}.map-top small{font-size:11px;display:block;color:#8b9a8b;margin:4px 0 0 17px}.live-dot{width:8px;height:8px;background:#66bc7b;border-radius:50%;display:inline-block;box-shadow:0 0 0 4px #e1f4e1}.soft-btn{border:1px solid #d5e5d8;border-radius:11px;background:#f0f8ed;color:#326d52;padding:9px 11px;font-size:12px;font-weight:850}.illustrated-map,.real-map{min-height:410px;flex:1;position:relative;overflow:hidden;background:#dcebc8}.landscape{position:absolute;width:100%;height:100%;inset:0}.map-name{position:absolute;color:#62876299;font-weight:850;font-size:12px;letter-spacing:.1px;pointer-events:none}.map-name.one{left:8%;top:18%}.map-name.two{left:60%;top:24%}.map-name.three{left:61%;top:76%}.animal-pin{width:73px;height:73px;position:absolute;transform:translate(-50%,-50%);border:4px solid #fffaf0;background:#fffdf9e9;border-radius:50%;box-shadow:0 4px 0 #a4b99f,0 8px 17px #406f5670;z-index:3;animation:marker-bob 3s ease-in-out infinite}.animal-pin:nth-of-type(2){animation-delay:.6s}.animal-pin:nth-of-type(3){animation-delay:1.2s}.animal-pin span{font-size:38px}.animal-pin small{position:absolute;left:50%;top:69px;transform:translateX(-50%);background:#fffdf6;border:1px solid #e4e8ce;border-radius:10px;padding:4px 8px;font-weight:850;font-size:11px;color:#2e6c4d}.animal-pin.active{box-shadow:0 0 0 7px #ffe2a6c7,0 8px 20px #406f5670}.map-me{position:absolute;left:44%;top:48%;font-size:17px;background:#2d886c;border:3px solid #fff;color:white;padding:10px;border-radius:50%;z-index:2;box-shadow:0 3px 13px #357e54aa}.map-me span{position:absolute;top:44px;left:50%;transform:translateX(-50%);font-size:9px;white-space:nowrap;background:white;color:#2d775c;border-radius:8px;padding:4px 7px;font-weight:800}.map-bottom{background:#fffdf9;padding:12px 15px;display:flex;justify-content:space-between;align-items:center;min-height:56px;gap:10px;color:#829187;font-size:11px;z-index:2}.real-map .leaflet-control-attribution{font-size:10px!important}.real-map{z-index:1}.no-map{height:410px;background:#eaf3e6;padding:35px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center}.no-map>span{font-size:50px}.no-map p{font-size:13px;max-width:330px;line-height:1.5}.drawer{padding:18px;display:flex;flex-direction:column;gap:11px}.drawer-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.drawer-heading h2{margin:4px 0 0;letter-spacing:-.5px;font-size:24px}.rarity{background:#e9f2eb;color:#448566;font-size:10px;border-radius:25px;padding:6px 8px;font-weight:850;white-space:nowrap}.rarity.rare{background:#f8eaf9;color:#97609a}.creature-preview{position:relative;height:244px;border-radius:21px;background:linear-gradient(175deg,#e8f5dd,#e8f2e4 73%,#c8e9b4 73%);overflow:hidden;display:flex;align-items:center;justify-content:center}.creature-preview.water{background:linear-gradient(175deg,#ddf3ff,#e5f5ee 72%,#b0e4e9 72%)}.creature-preview.fire{background:linear-gradient(170deg,#f5e9fc,#faedf0 72%,#dfd3f6 72%)}.preview-glow{position:absolute;width:155px;height:155px;background:#fff9d3b6;filter:blur(20px);border-radius:100%;top:36px}.creature-art{width:210px;height:200px;position:relative;display:grid;place-items:center;z-index:1;cursor:pointer}.creature-art svg{height:100%;max-width:100%;overflow:visible}.preview-note{position:absolute;bottom:8px;left:0;right:0;font-size:10px;color:#7d957b;text-align:center;z-index:2}.creature-description{font-size:12px;line-height:1.6;color:#748478;margin:0;min-height:57px}.distance-line{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;color:#6c8472;font-size:11px;border-top:1px solid #eff0e5;padding:14px 0 3px}.distance-line strong{color:#388766}.primary-cta{border:0;background:linear-gradient(100deg,#247b5c,#33a27c);color:white;font-size:13px;font-weight:900;border-radius:14px;min-height:49px;width:100%;padding:12px 13px;box-shadow:0 5px 0 #1b5945,0 10px 16px #36744d25;display:flex;align-items:center;justify-content:center;gap:9px}.primary-cta:disabled{background:#c9d1c8;box-shadow:none;color:#77877d}.secure-note{font-size:10px;color:#97a399;line-height:1.6}.album-section{padding:0 27px 23px}.album-title{display:flex;justify-content:space-between;align-items:end;gap:8px;margin:12px 0 14px}.album-title h2{font-size:22px;letter-spacing:-.5px;margin:5px 0 0}.text-button{color:#829485;border:0;background:transparent;font-size:12px;text-decoration:underline}.collection-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.animal-card{display:flex;align-items:center;gap:14px;background:white;border:1px solid #e8ecdf;border-radius:17px;padding:12px;min-width:0}.animal-card .mini-portrait{width:63px;height:64px;border-radius:13px;background:linear-gradient(#e8f4e4,#d6ecd4);display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}.mini-portrait svg{width:90px;height:86px}.animal-card.locked .mini-portrait svg{filter:grayscale(1);opacity:.26}.animal-card strong{font-size:13px}.animal-card span{display:block;color:#84938a;font-size:11px;margin-top:4px}.animal-card button{display:block;background:transparent;border:0;padding:3px 0;color:#398967;font-size:11px;text-decoration:underline}.bottom-message{color:#789285;font-size:12px;margin-top:11px}footer{color:#9aab9e;font-size:11px;text-align:center;padding:15px 12px;border-top:1px solid #e8ece1}.modal-backdrop{position:fixed;z-index:3000;inset:0;background:#162c2bc7;display:flex;align-items:center;justify-content:center;padding:16px;backdrop-filter:blur(6px)}.hunt-modal,.win-modal{width:min(430px,100%);background:#fffef8;position:relative;border-radius:28px;padding:24px;text-align:center;box-shadow:0 30px 90px #0006;max-height:94dvh;overflow:auto}.hunt-modal h2,.win-modal h2{font-size:27px;letter-spacing:-.7px;margin:6px 0}.hunt-modal p{font-size:13px;color:#7c8b7e;line-height:1.5;margin:8px 0}.close-modal{position:absolute;right:12px;top:10px;border:0;background:#f1f2eb;border-radius:50%;font-size:23px;width:36px;height:36px;color:#7b8d7c}.hunt-stage{height:340px;border-radius:23px;position:relative;background:linear-gradient(#d8f1ef 0%,#e9f6dc 68%,#b8dfab 69%,#a9d391 100%);overflow:hidden;touch-action:none;margin:17px 0}.hunt-stage.water{background:linear-gradient(#d4edfa,#e6fbfd 68%,#99dce5 69%,#8ad5d8)}.hunt-stage.fire{background:linear-gradient(#eee4ff,#f7e2ec 69%,#dbc4ec 70%)}.stage-decor{position:absolute;bottom:5px;border-radius:50%;background:#7fb77e6e;width:140px;height:40px}.stage-decor.a{left:-28px}.stage-decor.b{right:-42px;bottom:-10px}.hunt-creature{position:absolute;top:43px;left:50%;transform:translateX(-50%);width:210px;height:205px;z-index:3;cursor:pointer}.hunt-creature svg{width:100%;height:100%}.mini-game{position:absolute;inset:0;z-index:4;pointer-events:none}.mini-game button{pointer-events:auto}.berry{position:absolute;width:54px;height:58px;display:grid;place-items:center;border:3px solid #fff;border-radius:50%;font-size:29px;background:#fff7dfeb;box-shadow:0 5px 14px #43573944;animation:berry-float 1.25s ease-in-out infinite;transition:opacity .18s}.berry:active{transform:scale(.91)}.bubble{position:absolute;width:68px;height:68px;display:grid;place-items:center;background:radial-gradient(circle at 30% 25%,#fffefeef,#93e4f0c9 60%,#6ecbdff2);border:3px solid #fff;border-radius:50%;font-size:25px;font-weight:900;color:#277b94;box-shadow:0 7px 18px #5ca1bb55;animation:berry-float 2s ease-in-out infinite}.bubble.used{background:#c9e2db;color:#8fa6a0;opacity:.55}.dragon-hold{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);border:3px solid white;border-radius:999px;background:linear-gradient(120deg,#fdc479,#f48b69);color:#6d2d32;font-weight:900;font-size:14px;min-width:170px;height:55px;box-shadow:0 5px 15px #b7746b55;touch-action:none;user-select:none}.dragon-hold.holding{background:#f9e193;box-shadow:0 0 0 8px #f7cb7e76}.hunt-meter{margin:13px 0 7px}.hunt-feedback{min-height:20px;font-weight:750!important;color:#38775c!important}.subtle-action{background:none;border:0;color:#70a38a;font-size:12px;text-decoration:underline}.win-modal{padding:30px 24px}.win-stars{font-size:27px;letter-spacing:10px;color:#dba35d;animation:twinkle 1s infinite alternate}.win-animal{width:230px;height:215px;margin:auto}.win-animal svg{width:100%;height:100%}.win-modal>p{color:#6b8a76;font-size:14px;line-height:1.5}.win-modal .primary-cta{margin-top:25px}.toast{position:fixed;bottom:27px;left:50%;transform:translate(-50%,25px);opacity:0;pointer-events:none;z-index:5000;border-radius:13px;background:#264f40;color:white;padding:13px 17px;font-size:13px;font-weight:700;box-shadow:0 12px 38px #1d3e3760;max-width:min(460px,90vw);transition:opacity .25s,transform .25s}.toast.visible{opacity:1;transform:translate(-50%,0)}.leaf-animal-marker{background:white;width:55px;height:55px;border:3px solid #fff7e5;border-radius:50%;box-shadow:0 4px 12px #28432d6f;display:grid;place-items:center;font-size:29px}.leaf-animal-marker.active{box-shadow:0 0 0 6px #ffc76f99,0 4px 12px #28432d6f}.leaf-player{width:23px;height:23px;border:4px solid white;border-radius:50%;background:#2a9feb;box-shadow:0 0 0 10px #3fbbf540,0 4px 10px #34638d44}.pet{transform-origin:50% 85%;animation:pet-breathe 2.5s ease-in-out infinite}.pet .tail{transform-box:fill-box;transform-origin:0 90%;animation:tail-wag 1.35s ease-in-out infinite}.pet .ear-left,.pet .ear-right{transform-box:fill-box;transform-origin:50% 90%;animation:ear-wiggle 3s ease-in-out infinite}.pet .ear-right{animation-delay:.4s}.pet .eye{transform-box:fill-box;transform-origin:center;animation:blink 5.1s infinite}.pet .sparkle{animation:twinkle 1.5s ease-in-out infinite alternate}.pet.boop{animation:pet-bounce .5s ease-in-out}.pet.boop .tail{animation-duration:.18s}@keyframes blink{0%,91%,95%,100%{transform:scaleY(1)}93%{transform:scaleY(.07)}}@keyframes pet-breathe{0%,100%{transform:translateY(1px) scale(1)}50%{transform:translateY(-5px) scale(1.018)}}@keyframes tail-wag{0%,100%{transform:rotate(-13deg)}50%{transform:rotate(19deg)}}@keyframes ear-wiggle{0%,86%,100%{transform:rotate(0deg)}91%{transform:rotate(12deg)}}@keyframes marker-bob{0%,100%{translate:0 0}50%{translate:0 -7px}}@keyframes berry-float{0%,100%{translate:0 0}50%{translate:0 -7px}}@keyframes pet-bounce{0%{transform:scale(1)}30%{transform:translateY(-18px) rotate(-5deg) scale(1.09)}65%{transform:translateY(0) rotate(4deg) scale(.96)}100%{transform:scale(1)}}@keyframes twinkle{from{opacity:.5;transform:scale(.94)}to{opacity:1;transform:scale(1.05)}}@media(max-width:1080px){.content{grid-template-columns:1fr}.intro{display:grid;grid-template-columns:1.1fr 1fr;gap:12px;padding:2px}.intro .eyebrow,.intro h1,.intro>p{grid-column:1}.intro h1{margin:0}.intro>p{margin-bottom:0}.mode-switch,.mode-explain,.mission,.tip-card{grid-column:2}.mode-switch{grid-row:1 /span 2}.mission{grid-row:3 /span 2}.mode-explain{margin:0!important}.tip-card{display:none}.play-area{grid-template-columns:minmax(0,1fr) 290px}}@media(max-width:700px){.topbar{padding:11px 13px}.brand strong{font-size:19px}.brand-icon{font-size:21px;padding:8px 11px}.brand small{font-size:10px}.flag{font-size:9px;padding:7px 9px}.content{display:block;padding:13px}.intro{display:block;padding:6px 4px 12px}.intro h1{font-size:30px;margin:6px 0}.intro>p{font-size:12px;line-height:1.55;margin:5px 0 12px}.mode-switch{display:grid;grid-template-columns:1fr 1fr;padding:4px}.mode-switch button{text-align:center;font-size:11px;padding:10px 5px}.intro .mode-explain{margin:9px 0!important;font-size:11px}.mission{padding:11px;margin-top:12px}.mission p{font-size:11px}.play-area{display:flex;flex-direction:column;gap:12px}.map-panel{min-height:0;border-radius:18px}.illustrated-map,.real-map{min-height:285px;height:285px;flex:none}.map-top{padding:10px 12px}.map-bottom{padding:8px 12px}.map-name{font-size:10px}.animal-pin{width:57px;height:57px}.animal-pin span{font-size:28px}.animal-pin small{top:54px}.drawer{border-radius:18px;padding:12px;display:grid;grid-template-columns:1fr 110px;gap:9px;align-items:center}.drawer-heading{grid-column:1}.drawer-heading h2{font-size:20px}.creature-preview{grid-column:2;grid-row:1 / span 4;height:126px;border-radius:13px}.creature-art{width:123px;height:118px}.preview-note{display:none}.creature-description{font-size:11px;grid-column:1;min-height:0}.distance-line{grid-column:1 / -1;padding:7px 0}.primary-cta{grid-column:1 / -1;min-height:44px}.secure-note{grid-column:1 / -1}.album-section{padding:0 13px 14px}.album-title h2{font-size:19px}.collection-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.animal-card{display:block;text-align:center;padding:7px 2px;border-radius:12px}.animal-card .mini-portrait{margin:auto;width:58px;height:58px}.animal-card strong{font-size:12px}.animal-card span{font-size:9px}.animal-card button{margin:auto;font-size:10px}footer{font-size:10px;padding:12px 16px}.hunt-modal{padding:18px}.hunt-stage{height:310px}.hunt-modal h2{font-size:23px}.hunt-modal p{font-size:12px}.hunt-creature{top:35px}.toast{bottom:16px}}@media(prefers-reduced-motion:reduce){.pet,.pet *, .animal-pin,.berry,.bubble,.win-stars{animation:none!important}}


/* v0.3 — театр характеров, эмоции, жесты, частицы и дневник моментов */
.drawer{padding-bottom:12px}
.mood-panel{display:flex;align-items:center;gap:9px;margin:12px 0 10px;padding:11px 10px;background:#f1f6ec;border:1px solid #dcead9;border-radius:14px;min-height:75px}
.mood-icon{font-size:28px;background:white;border-radius:13px;width:40px;height:40px;display:grid;place-items:center;flex-shrink:0}
.mood-copy{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}
.mood-copy strong{font-size:12px;color:#286f54}
.mood-copy span{font-size:11px;color:#62766c;line-height:1.4}
.mood-sound{font-size:11px;font-weight:950;color:#956b9a;max-width:62px;text-align:right}
.reaction-buttons{display:grid;grid-template-columns:repeat(3, minmax(0,1fr));gap:6px;margin:6px 0}
.reaction-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:white;border:1px solid #dae9d9;border-radius:13px;padding:9px 4px;color:#35684d;min-height:62px;transition:transform .14s,background .14s}
.reaction-btn span{font-size:24px}.reaction-btn b{font-weight:780;font-size:10px}
.reaction-btn:hover{background:#f3f9ee;transform:translateY(-2px)}.reaction-btn:active{transform:scale(.95)}
.trick-btn{display:flex;align-items:center;justify-content:center;gap:8px;background:#fff3db;color:#7d5531;border:1px solid #efdeb9;padding:10px 7px;border-radius:13px;font-size:11px;font-weight:850;width:100%;margin:8px 0 12px}
.creature-description{min-height:0!important}
.preview-particles{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2}
.reaction-particle{position:absolute;left:50%;top:55%;font-size:24px;pointer-events:none;animation:particle-fly 1.3s ease-out both;animation-delay:var(--delay);filter:drop-shadow(0 2px 3px #0002)}
@keyframes particle-fly{0%{transform:translate(-50%,-50%) scale(.3);opacity:0}15%{opacity:1}100%{transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty))) scale(.9) rotate(25deg);opacity:0}}
.pet .face-emotion>g{opacity:0;transition:opacity .15s}.pet.emotion-happy .face-happy,.pet.emotion-shy .face-shy,.pet.emotion-surprised .face-surprised,.pet.emotion-sleepy .face-sleepy,.pet.emotion-proud .face-proud{opacity:1}
.pet.emotion-happy .eye,.pet.emotion-sleepy .eye{opacity:.10}
.pet.emotion-shy .ear-left,.pet.emotion-shy .ear-right{animation:ears-shy .85s ease-in-out infinite alternate}
.pet.emotion-surprised .eye{transform:scale(1.22)}
.pet.emotion-proud .ear-left,.pet.emotion-proud .ear-right{transform:rotate(-6deg)}
.pet.pet-fox{animation:fox-idle 2.7s ease-in-out infinite}.pet.pet-otter{animation:otter-idle 2.4s ease-in-out infinite}.pet.pet-dragon{animation:dragon-idle 3.3s ease-in-out infinite}
.pet.pet-fox .tail{animation:fox-tail 1.65s cubic-bezier(.3,.1,.6,.95) infinite}
.pet.pet-otter .tail{animation:otter-tail 2.3s ease-in-out infinite}
.pet.pet-dragon .tail{animation:dragon-tail 2.2s ease-in-out infinite}
.pet.pet-fox.action-sniff{animation:fox-sniff 1.6s ease-in-out 2}
.pet.pet-fox.action-peek{animation:fox-peek 1.4s ease-in-out 2}
.pet.pet-fox.action-dash{animation:fox-dash 1.2s cubic-bezier(.3,0,.6,1) 2}
.pet.pet-otter.action-bobble{animation:otter-bobble 1.4s ease-in-out 2}
.pet.pet-otter.action-tumble{animation:otter-roll 1.5s ease-in-out 2}
.pet.pet-otter.action-splash{animation:otter-splash 1.1s ease-in-out 3}
.pet.pet-dragon.action-proud{animation:dragon-proud 1.8s ease-in-out 2}
.pet.pet-dragon.action-flap{animation:dragon-flap 1.2s ease-in-out 3}
.pet.pet-dragon.action-sneeze{animation:dragon-sneeze 1.25s ease-out 2}
.pet.pet-dragon.action-puff{animation:dragon-puff 1.3s ease-in-out 2}
.pet.pet-dragon.action-flap ~ *{animation:unset}
@keyframes fox-idle{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-4px) rotate(2deg)}}
@keyframes otter-idle{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-7px) rotate(3deg)}}
@keyframes dragon-idle{0%,100%{transform:translateY(1px) scale(1)}50%{transform:translateY(-6px) scale(1.02)}}
@keyframes fox-tail{0%,100%{transform:rotate(-17deg)}40%{transform:rotate(15deg)}60%{transform:rotate(27deg)}}
@keyframes otter-tail{0%,100%{transform:rotate(-4deg) scaleY(1)}50%{transform:rotate(17deg) scaleY(1.1)}}
@keyframes dragon-tail{0%,100%{transform:rotate(0deg)}50%{transform:rotate(11deg)}}
@keyframes ears-shy{from{transform:rotate(-12deg)}to{transform:rotate(10deg)}}
@keyframes fox-sniff{0%,100%{transform:translateX(0)}20%,55%{transform:translate(4px,3px) rotate(5deg)}35%,70%{transform:translate(-3px,-2px) rotate(-4deg)}}
@keyframes fox-peek{0%,100%{transform:translate(0,0) rotate(0)}25%,65%{transform:translate(-16px,9px) rotate(-13deg)}45%{transform:translate(-10px,4px) rotate(-7deg)}}
@keyframes fox-dash{0%,100%{transform:translateX(0) rotate(0) scale(1)}20%{transform:translate(-22px,-18px) rotate(-9deg) scale(1.06)}50%{transform:translate(23px,2px) rotate(6deg)}74%{transform:translate(-7px,-10px) rotate(-4deg)}}
@keyframes otter-bobble{0%,100%{transform:translateY(0) rotate(0)}25%{transform:translateY(-16px) rotate(-8deg)}50%{transform:translateY(0) rotate(5deg)}75%{transform:translateY(-9px) rotate(-6deg)}}
@keyframes otter-roll{0%,100%{transform:rotate(0) scale(1)}35%{transform:rotate(-21deg) translateY(9px) scale(.93)}68%{transform:rotate(18deg) translateY(-6px) scale(1.06)}}
@keyframes otter-splash{0%,100%{transform:translateY(0) scale(1)}25%{transform:translateY(-15px) scale(1.11,.93)}56%{transform:translateY(6px) scale(.91,1.08)}80%{transform:translateY(-5px)}}
@keyframes dragon-proud{0%,100%{transform:translateY(0) scale(1)}25%,65%{transform:translateY(-8px) rotate(-5deg) scale(1.06)}40%{transform:translateY(-9px) rotate(4deg)}}
@keyframes dragon-flap{0%,100%{transform:translateY(0)}35%{transform:translateY(-18px) rotate(-5deg)}68%{transform:translateY(-10px) rotate(5deg)}}
@keyframes dragon-sneeze{0%,100%{transform:translateY(0) scale(1)}26%{transform:translate(-12px,6px) scale(.9,.96)}43%{transform:translate(14px,-20px) rotate(9deg) scale(1.15)}60%{transform:translate(-4px,0) rotate(-5deg)}}
@keyframes dragon-puff{0%,100%{transform:scale(1)}40%{transform:translateY(-3px) scale(1.12,.9)}65%{transform:scale(.96,1.06)}}
.pet.pet-dragon.action-flap .ear-left,.pet.pet-dragon.action-flap .ear-right{animation:dragon-wings .18s alternate infinite}
@keyframes dragon-wings{from{transform:rotate(-12deg)}to{transform:rotate(16deg)}}
.moments-section{padding:4px 27px 10px}.moments-header{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:0 0 12px}.moments-header h2{margin:5px 0 0;font-size:22px;letter-spacing:-.5px}.moments-header>span{font-size:11px;color:#819087;text-align:right;max-width:270px}
.moments-feed{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}.moment-card{display:flex;align-items:center;gap:9px;border-radius:14px;border:1px solid #e5ebdf;background:#fffdf9;padding:11px;min-height:74px;min-width:0}.moment-ico{font-size:28px}.moment-card div{flex:1;min-width:0}.moment-card strong{display:block;font-size:11px;color:#376c58}.moment-card div span{display:block;color:#7a8b7f;font-size:11px;line-height:1.38;margin-top:3px}.moment-card small{align-self:start;color:#9ca99b;font-size:9px}
.hunt-creature .pet{transform-origin:50% 83%}
@media(max-width:700px){.moments-section{padding:8px 13px}.moments-header>span{display:none}.moments-feed{display:flex;overflow-x:auto;gap:8px;scroll-snap-type:x mandatory}.moment-card{min-width:235px;scroll-snap-align:start}.mood-panel{min-height:64px}.reaction-btn{min-height:59px}}
@media(prefers-reduced-motion:reduce){.pet,.pet *, .reaction-particle{animation-duration:.01ms!important;animation-iteration-count:1!important}}

/* v0.10 — экран игрока: карта, события и коллекция */
.content{display:block;padding:22px 27px 0}
.topbar{flex-wrap:wrap}
.intro,.drawer,.moments-section{display:none!important}
.admin-link,.flag{display:none!important}
.map-refresh-status{display:flex;align-items:center;gap:8px;margin-left:auto;color:#6f8176;font-size:10px;white-space:nowrap}.map-refresh-status .soft-btn{padding:8px 10px;font-size:10px}
.play-area{display:block!important;max-width:1040px;margin:0 auto}
.map-panel{min-height:590px;border-radius:24px}
.route-status-card{display:flex;align-items:center;gap:12px;margin:12px 0 0;padding:13px 15px;border:1px solid #cfe5ce;border-radius:18px;background:linear-gradient(135deg,#f4fbef,#fffdf9);box-shadow:var(--shadow)}
.route-status-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:#dff1dc;color:#287252;font-size:25px;font-weight:900;flex-shrink:0}
.route-status-copy{min-width:0;flex:1}.route-status-copy strong{display:block;color:#285f4b;font-size:14px;line-height:1.2}.route-status-copy span{display:block;margin-top:3px;color:#718378;font-size:11px}.route-status-meta{color:#4f8065;font-size:11px;font-weight:800;white-space:nowrap}
.route-progress{height:5px;margin-top:8px;border-radius:999px;background:#e1eddf;overflow:hidden}.route-progress i{display:block;width:0;height:100%;border-radius:inherit;background:#54a879;transition:width .35s ease}
.map-quick-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:12px 0 0;padding:14px 16px;border:1px solid var(--stroke);border-radius:18px;background:#fffdf9;box-shadow:var(--shadow)}
.map-selection-copy{display:flex;flex-direction:column;gap:4px;min-width:0}
.map-selection-copy strong{color:var(--deep);font-size:14px}
.map-selection-copy span{color:#829187;font-size:11px}
.map-selection-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}
.route-voice-settings{display:flex;align-items:center;gap:5px;color:#73857a;font-size:10px;white-space:nowrap}
.route-voice-settings select{min-height:36px;padding:0 8px;border:1px solid #dce8da;border-radius:10px;background:#f8fbf5;color:#376c58;font:inherit;outline:none}
.map-catch-btn{width:auto;min-height:42px;padding:10px 18px;font-size:12px;box-shadow:0 4px 0 #1b5945,0 8px 14px #36744d22}
.map-selection-actions .soft-btn{white-space:nowrap}
.events-panel{margin-top:14px;padding:16px;border:1px solid var(--stroke);border-radius:18px;background:#fffdf9;box-shadow:var(--shadow)}
.events-heading{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:10px}
.events-heading h2{margin:4px 0 0;font-size:18px;letter-spacing:-.35px}
.events-heading>span{font-size:10px;color:#829187}
.events-feed{display:grid;gap:8px}
.event-item{display:flex;align-items:center;gap:10px;min-height:52px;padding:9px 11px;border:1px solid #e5ebdf;border-radius:13px;background:#f8fbf5}
.event-item.is-new{border-color:#cfe7ce;background:#f2faed}
.event-icon{width:30px;height:30px;display:grid;place-items:center;border-radius:10px;background:#e5f3e2;font-size:17px;flex-shrink:0}
.event-copy{min-width:0;flex:1}.event-copy strong{display:block;color:#376c58;font-size:11px}.event-copy span{display:block;color:#7a8b7f;font-size:11px;line-height:1.35;margin-top:2px}
.event-time{align-self:flex-start;color:#9ca99b;font-size:9px;white-space:nowrap}
.events-empty{padding:12px;color:#8a988f;font-size:11px;line-height:1.45;border:1px dashed #dce7d8;border-radius:12px;background:#fbfdf9}
.album-section{width:min(1040px,calc(100% - 54px));max-width:none;margin:18px auto 28px;padding:16px;border:1px solid var(--stroke);border-radius:18px;background:#fffdf9;box-shadow:var(--shadow)}
.album-title{margin:0 0 12px}.album-title h2{font-size:20px}
.album-title .text-button{display:none}
.collection-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.animal-card{min-height:112px;padding:10px;border-radius:15px}
.animal-card button{font-size:10px}

/* Keep the original map footer for backwards-compatible JS hooks, but move its visual status into the compact panel above. */
#mapBottom{display:none!important}
#creatureDrawer:not([hidden]){display:flex!important}
.leaf-animal-marker .map-animal-img{width:100%;height:100%;object-fit:contain;display:block;padding:3px}
@media(max-width:700px){
  .map-refresh-status{order:3;width:100%;justify-content:space-between;margin:0;border-top:1px solid var(--stroke);padding-top:8px}
  .content{padding:12px 13px 0}
  .map-panel{min-height:0;border-radius:18px}
  .illustrated-map,.real-map{height:56vh;min-height:330px;max-height:540px}
  .route-status-card{align-items:flex-start;padding:12px}.route-status-icon{width:38px;height:38px;font-size:22px}.route-status-copy strong{font-size:13px}.route-status-meta{font-size:10px}
  .map-quick-actions{align-items:stretch;flex-direction:column;gap:11px;padding:12px}
  .map-selection-actions{width:100%;flex-wrap:wrap}.map-selection-actions .soft-btn,.map-selection-actions .map-catch-btn{flex:1}.route-voice-settings{flex:1;justify-content:space-between}.route-voice-settings select{flex:1}
  .events-panel{padding:13px;margin-top:10px}.events-heading h2{font-size:17px}
  .album-section{width:calc(100% - 26px);margin-top:14px;padding:13px 12px 16px}.collection-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px}
}
/* В v0.2 мобильная карточка была двухколоночной; v0.3 нужна большая сцена для мимики. */
@media(max-width:700px){
 .drawer{display:flex;flex-direction:column;align-items:stretch;gap:10px;padding:14px}
 .drawer-heading{grid-column:auto}
 .creature-preview{grid-row:auto;grid-column:auto;width:100%;height:244px;border-radius:19px}
 .creature-art{width:236px;height:216px}
 .preview-note{display:block;bottom:10px;font-size:11px}
 .mood-panel{width:100%;margin:0;min-height:72px}
 .mood-copy span{font-size:12px}
 .reaction-buttons{width:100%;gap:9px;margin:0}
 .reaction-btn{min-height:67px}
 .trick-btn{width:100%;margin:0}
 .creature-description{font-size:12px;min-height:auto}
 .distance-line,.primary-cta,.secure-note{width:100%}
}

/* v0.4 — обновлённые персонажи на основе пользовательских референсов */
.animal-photo-pin{width:66px;height:66px;border-radius:18px;padding:3px;background:rgba(255,255,255,.92);border:2px solid #fff;box-shadow:0 12px 28px #00000024}
.animal-photo-pin img{width:100%;height:100%;object-fit:cover;border-radius:14px;display:block}
.animal-photo-pin span{display:none}
.animal-photo-pin small{top:64px}
.leaf-animal-marker{width:58px;height:58px;border-radius:18px;background:white;border:3px solid #fff;box-shadow:0 8px 20px #0000002a;overflow:hidden;display:grid;place-items:center}
.leaf-animal-marker img{width:100%;height:100%;object-fit:cover;display:block}
.leaf-animal-marker.active{outline:3px solid #f6cf7c;transform:scale(1.06)}
.leaf-animal-marker.nearby{outline:4px solid #54b47e;box-shadow:0 0 0 9px #54b47e33,0 8px 20px #0000002a}
.leaf-animal-marker.caught{filter:grayscale(.75);opacity:.58;border-color:#e2e6df;box-shadow:0 5px 13px #28432d33}
.leaf-nearby-tooltip{border:0!important;border-radius:10px!important;background:#23694f!important;color:#fff!important;font-weight:850;box-shadow:0 5px 14px #1e593d55}
.leaf-nearby-tooltip:before{border-top-color:#23694f!important}
.creature-art,.hunt-creature,.win-animal,.mini-portrait{display:grid;place-items:center}
.avatar-card{position:relative;display:grid;place-items:center;transform-origin:50% 80%;transition:transform .22s ease, filter .22s ease, box-shadow .22s ease}
.avatar-card .avatar-glow{position:absolute;inset:auto 10% 6% 10%;height:22%;border-radius:50%;background:radial-gradient(circle,#ffffffc5 0%,#ffe7ad90 35%,transparent 70%);filter:blur(8px);z-index:0}
.avatar-card .avatar-img{position:relative;z-index:1;display:block;user-select:none;-webkit-user-drag:none;object-fit:contain;filter:drop-shadow(0 14px 22px rgba(0,0,0,.14))}
.avatar-card .avatar-accent{position:absolute;right:10%;top:7%;z-index:2;pointer-events:none}
.avatar-card.preview{width:220px;height:198px}
.avatar-card.preview .avatar-img{width:220px;height:198px}
.avatar-card.stage{width:190px;height:190px}
.avatar-card.stage .avatar-img{width:190px;height:190px}
.avatar-card.win{width:150px;height:150px}
.avatar-card.win .avatar-img{width:150px;height:150px}
.avatar-card.mini{width:64px;height:64px}
.avatar-card.mini .avatar-img{width:64px;height:64px;border-radius:16px}
.kind-fox .avatar-accent::before{content:'✦';color:#ffb347;font-size:26px;opacity:.82}
.kind-otter .avatar-accent::before{content:'🫧';font-size:22px;opacity:.85}
.kind-dragon .avatar-accent::before{content:'✨';font-size:22px;opacity:.85}
/* базовые архетипы */
.avatar-card.kind-fox{transform:rotate(-2deg)}
.avatar-card.kind-otter{transform:translateY(2px) scale(.98)}
.avatar-card.kind-dragon{transform:translateY(1px) scale(1.01)}
/* эмоции */
.avatar-card.emotion-curious{transform:rotate(-5deg) translateY(-2px) scale(1.01)}
.avatar-card.emotion-curious .avatar-accent{animation:floatAccent 1.8s ease-in-out infinite}
.avatar-card.emotion-happy{transform:translateY(-5px) scale(1.04) rotate(2deg)}
.avatar-card.emotion-happy .avatar-img{filter:drop-shadow(0 14px 22px rgba(0,0,0,.14)) saturate(1.08) brightness(1.02)}
.avatar-card.emotion-shy{transform:translateY(3px) scale(.97) rotate(-7deg)}
.avatar-card.emotion-shy .avatar-img{filter:drop-shadow(0 14px 22px rgba(0,0,0,.14)) brightness(.98) saturate(.95)}
.avatar-card.emotion-surprised{transform:translateY(-4px) scale(1.06) rotate(3deg)}
.avatar-card.emotion-surprised .avatar-accent::before{content:'⚡';font-size:24px}
.avatar-card.emotion-sleepy{transform:translateY(7px) scale(.96) rotate(-8deg)}
.avatar-card.emotion-sleepy .avatar-img{filter:drop-shadow(0 10px 16px rgba(0,0,0,.12)) saturate(.9) brightness(.95)}
.avatar-card.emotion-proud{transform:translateY(-7px) scale(1.05)}
.avatar-card.emotion-proud .avatar-accent::before{content:'👑';font-size:22px}
/* действия */
.avatar-card.action-sniff{animation:sniffy 1.2s ease-in-out 2}
.avatar-card.action-peek{animation:peeky 1.2s ease-in-out 2}
.avatar-card.action-dash{animation:dashy 1s cubic-bezier(.35,.05,.65,1) 2}
.avatar-card.action-bobble{animation:bobbly 1.25s ease-in-out 2}
.avatar-card.action-tumble{animation:tumbly 1.25s ease-in-out 2}
.avatar-card.action-splash{animation:splashy 1s ease-in-out 3}
.avatar-card.action-proud{animation:proudy 1.35s ease-in-out 2}
.avatar-card.action-flap{animation:flappy 1.1s ease-in-out 3}
.avatar-card.action-sneeze{animation:sneezy 1.1s ease-in-out 2}
.avatar-card.action-puff{animation:puffy 1.1s ease-in-out 2}
@keyframes floatAccent{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes sniffy{0%,100%{transform:translateX(0) rotate(-3deg)}30%{transform:translateX(7px) rotate(2deg)}60%{transform:translateX(-5px) rotate(-6deg)}}
@keyframes peeky{0%,100%{transform:translateX(0) rotate(-5deg)}50%{transform:translateX(-16px) rotate(-12deg)}}
@keyframes dashy{0%,100%{transform:translateX(0) rotate(0) scale(1)}30%{transform:translate(-14px,-12px) rotate(-8deg) scale(1.05)}60%{transform:translate(18px,1px) rotate(5deg)}}
@keyframes bobbly{0%,100%{transform:translateY(0) rotate(0)}25%{transform:translateY(-10px) rotate(-5deg)}50%{transform:translateY(0) rotate(4deg)}75%{transform:translateY(-6px) rotate(-3deg)}}
@keyframes tumbly{0%,100%{transform:rotate(0) scale(.98)}35%{transform:rotate(-12deg) translateY(8px) scale(.94)}68%{transform:rotate(10deg) translateY(-5px) scale(1.02)}}
@keyframes splashy{0%,100%{transform:translateY(0) scale(1)}25%{transform:translateY(-14px) scale(1.07,.95)}56%{transform:translateY(4px) scale(.94,1.05)}80%{transform:translateY(-5px)}}
@keyframes proudy{0%,100%{transform:translateY(-3px) scale(1.02)}35%{transform:translateY(-10px) scale(1.06) rotate(-3deg)}65%{transform:translateY(-8px) scale(1.05) rotate(2deg)}}
@keyframes flappy{0%,100%{transform:translateY(0) scale(1)}40%{transform:translateY(-14px) scale(1.04) rotate(-3deg)}70%{transform:translateY(-9px) scale(1.03) rotate(3deg)}}
@keyframes sneezy{0%,100%{transform:translateY(0) scale(1)}25%{transform:translate(-12px,5px) scale(.95)}45%{transform:translate(11px,-14px) scale(1.08) rotate(6deg)}60%{transform:translate(-4px,0) rotate(-3deg)}}
@keyframes puffy{0%,100%{transform:scale(1)}40%{transform:translateY(-2px) scale(1.07,.95)}65%{transform:scale(.98,1.03)}}
@media(max-width:700px){
  .animal-photo-pin{width:60px;height:60px}
  .animal-photo-pin small{top:58px}
  .avatar-card.preview{width:236px;height:212px}
  .avatar-card.preview .avatar-img{width:236px;height:212px}
  .avatar-card.stage{width:172px;height:172px}
  .avatar-card.stage .avatar-img{width:172px;height:172px}
  .avatar-card.win{width:135px;height:135px}
  .avatar-card.win .avatar-img{width:135px;height:135px}
}

/* v0.5 — живые сцены, архетипы и более выразительные движения */
.scene-props,.hunt-scene-props{position:absolute;inset:0;pointer-events:none;z-index:0;overflow:hidden}
.scene-wrap{position:absolute;inset:0}
.scene-wrap .prop{position:absolute;display:block;user-select:none;filter:drop-shadow(0 4px 6px rgba(0,0,0,.08))}
.emotion-chips{display:flex;flex-wrap:wrap;gap:6px;margin:-2px 0 2px}
.emotion-chip{display:inline-flex;align-items:center;justify-content:center;padding:6px 9px;border-radius:999px;font-size:10px;font-weight:850;border:1px solid #e4e8dd;background:#fffdf8;color:#567264;box-shadow:0 2px 7px rgba(0,0,0,.04)}
.emotion-chip.chip-1{background:#fff4dd;color:#8f6530}
.emotion-chip.chip-2{background:#edf7ef;color:#3f7a55}
.emotion-chip.chip-3{background:#f1edfb;color:#6f5ca2}
/* themed stage backgrounds */
.creature-preview.scene-fox{background:linear-gradient(180deg,#f7f0d9 0%,#e7f2da 60%,#c9e7b0 100%)}
.creature-preview.scene-otter{background:linear-gradient(180deg,#e7f7ff 0%,#eefaf4 60%,#b7e5ee 100%)}
.creature-preview.scene-dragon{background:linear-gradient(180deg,#f4e9ff 0%,#f8eef5 60%,#e0d1f6 100%)}
.hunt-stage.scene-fox{background:linear-gradient(180deg,#f7f0d9 0%,#e7f2da 67%,#bddb99 68%,#a9d086 100%)}
.hunt-stage.scene-otter{background:linear-gradient(180deg,#d7f0ff 0%,#e9fbfd 66%,#9bdbe7 67%,#85cedc 100%)}
.hunt-stage.scene-dragon{background:linear-gradient(180deg,#eee4ff 0%,#f7e2ec 66%,#ddcaef 67%,#ccb2eb 100%)}
/* fox scene */
.fox-scene .bush{bottom:16px;width:110px;height:66px;background:radial-gradient(circle at 30% 40%,#94cf7f,#5fa865 64%,#4f9155 100%);border-radius:50% 50% 40% 40%}
.fox-scene .bush.one{left:-12px;animation:swayy 4.2s ease-in-out infinite}
.fox-scene .bush.two{right:-8px;bottom:10px;width:92px;height:54px;animation:swayy 5.1s ease-in-out infinite reverse}
.fox-scene .butterfly{font-size:18px;animation:butterflyFly 4.8s ease-in-out infinite}
.fox-scene .butterfly.a{left:19%;top:28%}
.fox-scene .butterfly.b{right:16%;top:20%;animation-delay:1.2s}
.fox-scene .berry{font-size:22px;bottom:26px;animation:berryDance 3s ease-in-out infinite}
.fox-scene .berry.one{left:24%}
.fox-scene .berry.two{right:23%;animation-delay:1.4s}
/* otter scene */
.otter-scene .ripple{left:50%;bottom:32px;transform:translateX(-50%);border-radius:50%;border:3px solid #87d7eb;opacity:.5;animation:rippleLoop 3.6s linear infinite}
.otter-scene .ripple.one{width:150px;height:44px}
.otter-scene .ripple.two{width:112px;height:34px;animation-delay:1.2s}
.otter-scene .bubble{font-size:22px;animation:bubbleRise 3.7s ease-in infinite}
.otter-scene .bubble.a{left:18%;bottom:24px}
.otter-scene .bubble.b{right:16%;bottom:30px;animation-delay:1.3s}
.otter-scene .bubble.c{left:65%;bottom:52px;font-size:18px;animation-delay:2.1s}
/* dragon scene */
.dragon-scene .crystal{bottom:20px;width:34px;height:54px;background:linear-gradient(180deg,#f7d5ff,#ae90ef);clip-path:polygon(50% 0,100% 40%,75% 100%,25% 100%,0 40%);opacity:.78;animation:crystalGlow 2.6s ease-in-out infinite}
.dragon-scene .crystal.one{left:14%}
.dragon-scene .crystal.two{right:14%;height:46px;animation-delay:1.2s}
.dragon-scene .ember{font-size:22px;animation:emberFloat 3.8s ease-in-out infinite}
.dragon-scene .ember.a{left:23%;top:28%}
.dragon-scene .ember.b{right:19%;top:20%;animation-delay:1.1s}
.dragon-scene .ember.c{left:63%;top:16%;font-size:18px;animation-delay:2.1s}
/* stronger character idles */
.avatar-card.preview.kind-fox,.avatar-card.stage.kind-fox{animation:foxIdlePortrait 2.8s ease-in-out infinite}
.avatar-card.preview.kind-otter,.avatar-card.stage.kind-otter{animation:otterIdlePortrait 2.35s ease-in-out infinite}
.avatar-card.preview.kind-dragon,.avatar-card.stage.kind-dragon{animation:dragonIdlePortrait 3s ease-in-out infinite}
.avatar-card.kind-fox .avatar-img{filter:drop-shadow(0 15px 22px rgba(151,90,40,.18))}
.avatar-card.kind-otter .avatar-img{filter:drop-shadow(0 15px 24px rgba(35,106,136,.17))}
.avatar-card.kind-dragon .avatar-img{filter:drop-shadow(0 15px 24px rgba(108,69,153,.2))}
@keyframes foxIdlePortrait{0%,100%{transform:translateY(0) rotate(-1.5deg)}50%{transform:translateY(-6px) rotate(2deg)}}
@keyframes otterIdlePortrait{0%,100%{transform:translateY(1px) rotate(-2.2deg) scale(.985)}50%{transform:translateY(-8px) rotate(2.2deg) scale(1.01)}}
@keyframes dragonIdlePortrait{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-8px) scale(1.025) rotate(1.5deg)}}
@keyframes swayy{0%,100%{transform:rotate(0)}50%{transform:rotate(4deg)}}
@keyframes butterflyFly{0%,100%{transform:translate(0,0) rotate(-6deg)}25%{transform:translate(18px,-6px) rotate(8deg)}50%{transform:translate(3px,-16px) rotate(-2deg)}75%{transform:translate(-12px,-7px) rotate(7deg)}}
@keyframes berryDance{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px) rotate(9deg)}}
@keyframes rippleLoop{0%{transform:translateX(-50%) scale(.7);opacity:.05}20%{opacity:.4}100%{transform:translateX(-50%) scale(1.35);opacity:0}}
@keyframes bubbleRise{0%{transform:translateY(0) scale(.7);opacity:0}15%{opacity:.85}85%{opacity:.45}100%{transform:translateY(-120px) scale(1.1);opacity:0}}
@keyframes crystalGlow{0%,100%{transform:translateY(0) scale(1);filter:drop-shadow(0 0 8px rgba(188,146,255,.25))}50%{transform:translateY(-4px) scale(1.04);filter:drop-shadow(0 0 16px rgba(188,146,255,.5))}}
@keyframes emberFloat{0%,100%{transform:translateY(0) scale(.95);opacity:.5}50%{transform:translateY(-18px) scale(1.08);opacity:1}}
/* modal stage tweaks */
.hunt-scene-props .scene-wrap.preview{display:none}
.hunt-scene-props .scene-wrap.hunt .prop{opacity:.95}
.hunt-stage .stage-decor{z-index:1}
.hunt-creature{z-index:3}
.mini-game{z-index:4}
/* separate emotions stand out more visually */
.avatar-card.emotion-curious .avatar-accent::before{content:'👀';font-size:22px}
.avatar-card.emotion-happy .avatar-accent::before{content:'💛';font-size:22px}
.avatar-card.emotion-shy .avatar-accent::before{content:'🌷';font-size:22px}
.avatar-card.emotion-sleepy .avatar-accent::before{content:'💤';font-size:20px}
@media(max-width:700px){
  .emotion-chips{gap:5px}
  .emotion-chip{font-size:9px;padding:5px 8px}
  .fox-scene .butterfly,.otter-scene .bubble,.dragon-scene .ember{font-size:18px}
  .dragon-scene .crystal{width:28px;height:46px}
}
@media(prefers-reduced-motion:reduce){
  .scene-wrap .prop,.avatar-card{animation:none!important}
}

/* v0.6: actual articulated image puppet. Every layer is independently animated. */
.rig.avatar-card{display:block;position:relative;width:220px;height:220px;max-width:none;max-height:none;transform:none;animation:none!important;filter:none!important;isolation:isolate;overflow:visible;touch-action:manipulation}
.rig.avatar-card.preview{width:220px;height:220px}
.rig.avatar-card.stage{width:195px;height:195px}
.rig.avatar-card.win{width:175px;height:175px}
.rig.avatar-card.mini{width:65px;height:65px;transform:none}
.rig-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;transform:translateZ(0)}
.rig-layer img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;max-width:none;display:block;pointer-events:none;user-select:none;-webkit-user-drag:none;filter:drop-shadow(0 1px 1px rgba(0,0,0,.02))}
.rig-footshadow{position:absolute;z-index:-1;left:28%;bottom:5%;width:44%;height:8%;background:rgba(61,54,53,.12);border-radius:50%;filter:blur(6px)}
.rig-expression{width:100%;height:100%;position:absolute;inset:0;pointer-events:none;overflow:visible}
.rig-blink{opacity:0;animation:rigBlink 5.5s steps(1,end) infinite}
.rig.kind-otter .rig-blink{animation-duration:6.7s;animation-delay:1s}
.rig.kind-dragon .rig-blink{animation-duration:4.9s;animation-delay:2s}
.rig-blush,.rig-surprise{opacity:0;transition:opacity .16s ease}
.rig.emotion-shy .rig-blush,.rig.emotion-happy .rig-blush{opacity:1}
.rig.emotion-surprised .rig-surprise{opacity:1}
.rig.emotion-sleepy .rig-blink{opacity:1;animation:none}
.rig-sparkles{position:absolute;left:75%;top:16%;font-size:21px;color:#ffc45f;opacity:.5;pointer-events:none;animation:rigSparkle 2.9s ease-in-out infinite}
.rig.kind-otter .rig-sparkles{color:#82d9ed}
.rig.kind-dragon .rig-sparkles{color:#ef92fc}
/* joint pivots expressed in original portrait coordinates */
.rig.kind-fox .part-tail{transform-origin:57% 72%;animation:foxTailJoint 1.8s ease-in-out infinite alternate}
.rig.kind-fox .part-ear_l{transform-origin:35% 29%;animation:foxEarLeft 4.6s ease-in-out infinite}
.rig.kind-fox .part-ear_r{transform-origin:65% 29%;animation:foxEarRight 4.1s ease-in-out infinite}
.rig.kind-fox .part-head{transform-origin:49% 49%;animation:foxHeadLook 4.4s ease-in-out infinite}
.rig.kind-fox .part-arm_l{transform-origin:40% 62%;animation:foxPawLeft 2.5s ease-in-out infinite}
.rig.kind-fox .part-arm_r{transform-origin:54% 62%;animation:foxPawRight 2.8s ease-in-out infinite}
.rig.kind-fox .part-torso{transform-origin:49% 83%;animation:foxBodyBreath 2.6s ease-in-out infinite}
.rig.kind-otter .part-tail{transform-origin:29% 85%;animation:otterTailJoint 3.8s ease-in-out infinite}
.rig.kind-otter .part-head{transform-origin:50% 48%;animation:otterHeadRoll 3.5s ease-in-out infinite}
.rig.kind-otter .part-ear_l{transform-origin:25% 32%;animation:otterEarLeft 4s ease-in-out infinite}
.rig.kind-otter .part-ear_r{transform-origin:75% 32%;animation:otterEarLeft 4s ease-in-out infinite reverse}
.rig.kind-otter .part-arm_l{transform-origin:35% 58%;animation:otterPaddleLeft 2s ease-in-out infinite}
.rig.kind-otter .part-arm_r{transform-origin:66% 58%;animation:otterPaddleRight 2s ease-in-out infinite}
.rig.kind-otter .part-torso{transform-origin:51% 89%;animation:otterBodyBreath 3s ease-in-out infinite}
.rig.kind-dragon .part-tail{transform-origin:43% 75%;animation:dragonTailJoint 3s ease-in-out infinite}
.rig.kind-dragon .part-wing_l{transform-origin:36% 51%;animation:dragonWingLeft 2.6s ease-in-out infinite}
.rig.kind-dragon .part-wing_r{transform-origin:72% 53%;animation:dragonWingRight 2.6s ease-in-out infinite}
.rig.kind-dragon .part-head{transform-origin:53% 62%;animation:dragonHeadProud 3.4s ease-in-out infinite}
.rig.kind-dragon .part-horn_l{transform-origin:36% 33%;animation:dragonHorn 4.3s ease-in-out infinite}
.rig.kind-dragon .part-horn_r{transform-origin:75% 34%;animation:dragonHorn 4.1s ease-in-out infinite reverse}
.rig.kind-dragon .part-crest{transform-origin:55% 35%;animation:dragonHorn 3.7s ease-in-out infinite}
.rig.kind-dragon .part-arm_l{transform-origin:39% 74%;animation:dragonClawLeft 3.2s ease-in-out infinite}
.rig.kind-dragon .part-arm_r{transform-origin:66% 74%;animation:dragonClawRight 3.2s ease-in-out infinite}
.rig.kind-dragon .part-torso{transform-origin:53% 90%;animation:dragonBodyBreath 3s ease-in-out infinite}
/* stage show movement without moving the entire illustration */
.rig.action-sniff .part-head{animation:foxSniffJoint .56s ease-in-out 4}
.rig.action-peek .part-head{animation:foxPeekJoint .8s ease-in-out 3}
.rig.action-dash .part-head{animation:foxSurpriseJoint .58s ease-in-out 4}
.rig.action-dash .part-tail{animation:foxTailFast .21s ease-in-out 12}
.rig.action-dash .part-arm_l,.rig.action-dash .part-arm_r{animation:foxWaveFast .24s ease-in-out 10}
.rig.action-bobble .part-head{animation:otterHappyJoint .75s ease-in-out 3}
.rig.action-bobble .part-arm_l,.rig.action-bobble .part-arm_r{animation:otterPaddleLeft .3s ease-in-out 8}
.rig.action-tumble .part-head{animation:otterTumbleHead .88s ease-in-out 3}
.rig.action-tumble .part-arm_l{animation:otterPaddleLeft .32s ease-in-out 7}
.rig.action-splash .part-head{animation:otterSplashHead .53s ease-in-out 4}
.rig.action-splash .part-arm_l,.rig.action-splash .part-arm_r{animation:otterSplashArm .26s ease-in-out 9}
.rig.action-proud .part-head{animation:dragonProudJoint .8s ease-in-out 3}
.rig.action-flap .part-wing_l{animation:dragonWingLeft .25s ease-in-out 10}
.rig.action-flap .part-wing_r{animation:dragonWingRight .25s ease-in-out 10}
.rig.action-flap .part-head{animation:dragonFlapHead .6s ease-in-out 4}
.rig.action-sneeze .part-head{animation:dragonSneezeHead .72s ease-in-out 3}
.rig.action-sneeze .part-wing_l,.rig.action-sneeze .part-wing_r{animation:dragonWingLeft .22s ease-in-out 10}
.rig.action-puff .part-head{animation:dragonPuffHead .72s ease-in-out 3}
.rig.emotion-happy .rig-sparkles,.rig.emotion-surprised .rig-sparkles{opacity:1;animation-duration:1s}
.rig.mini .rig-layer,.rig.mini .rig-sparkles{animation:none!important}
@keyframes rigBlink{0%,89%,94%,100%{opacity:0}90%,92%{opacity:1}}
@keyframes rigSparkle{0%,100%{opacity:.25;transform:scale(.75)}50%{opacity:.85;transform:scale(1.2)}}
@keyframes foxTailJoint{from{transform:rotate(-8deg)}to{transform:rotate(9deg)}}
@keyframes foxTailFast{from{transform:rotate(-22deg)}to{transform:rotate(18deg)}}
@keyframes foxEarLeft{0%,88%,100%{transform:rotate(0)}91%{transform:rotate(-8deg)}94%{transform:rotate(3deg)}}
@keyframes foxEarRight{0%,85%,100%{transform:rotate(0)}90%{transform:rotate(9deg)}94%{transform:rotate(-4deg)}}
@keyframes foxHeadLook{0%,100%{transform:rotate(-1deg) translateY(0)}40%{transform:rotate(4deg) translateY(-2px)}75%{transform:rotate(-3deg)}}
@keyframes foxPawLeft{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(7deg)}}
@keyframes foxPawRight{0%,100%{transform:rotate(6deg)}50%{transform:rotate(-8deg)}}
@keyframes foxBodyBreath{0%,100%{transform:scaleY(1)}50%{transform:scaleY(1.016)}}
@keyframes foxSniffJoint{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(5px) rotate(5deg)}}
@keyframes foxPeekJoint{0%,100%{transform:rotate(0)}50%{transform:translate(-7px,3px) rotate(-10deg)}}
@keyframes foxSurpriseJoint{0%,100%{transform:translateX(0) rotate(0)}35%{transform:translate(-9px,-8px) rotate(-7deg)}70%{transform:translate(9px,-3px) rotate(8deg)}}
@keyframes foxWaveFast{from{transform:rotate(-13deg)}to{transform:rotate(16deg)}}
@keyframes otterTailJoint{0%,100%{transform:rotate(-7deg)}50%{transform:rotate(7deg)}}
@keyframes otterHeadRoll{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(4deg) translateY(-3px)}}
@keyframes otterEarLeft{0%,100%{transform:rotate(0)}50%{transform:rotate(6deg)}}
@keyframes otterPaddleLeft{0%,100%{transform:rotate(-7deg)}50%{transform:rotate(13deg) translateY(-2px)}}
@keyframes otterPaddleRight{0%,100%{transform:rotate(8deg)}50%{transform:rotate(-15deg) translateY(-2px)}}
@keyframes otterBodyBreath{0%,100%{transform:scaleX(1)}50%{transform:scaleX(1.025)}}
@keyframes otterHappyJoint{0%,100%{transform:translateY(0) rotate(0)}40%{transform:translateY(-6px) rotate(-8deg)}70%{transform:translateY(-4px) rotate(5deg)}}
@keyframes otterTumbleHead{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(15deg) translateY(3px)}}
@keyframes otterSplashHead{0%,100%{transform:translateY(0)}45%{transform:translateY(-10px) rotate(-8deg)}72%{transform:translateY(5px) rotate(4deg)}}
@keyframes otterSplashArm{from{transform:rotate(-20deg)}to{transform:rotate(20deg)}}
@keyframes dragonTailJoint{0%,100%{transform:rotate(-6deg)}50%{transform:rotate(10deg)}}
@keyframes dragonWingLeft{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(-15deg) scaleX(.95)}}
@keyframes dragonWingRight{0%,100%{transform:rotate(5deg)}50%{transform:rotate(17deg) scaleX(.97)}}
@keyframes dragonHeadProud{0%,100%{transform:rotate(0) translateY(0)}50%{transform:rotate(-3deg) translateY(-4px)}}
@keyframes dragonHorn{0%,100%{transform:rotate(0)}50%{transform:rotate(3deg)}}
@keyframes dragonClawLeft{0%,100%{transform:rotate(0)}50%{transform:rotate(-4deg)}}
@keyframes dragonClawRight{0%,100%{transform:rotate(0)}50%{transform:rotate(5deg)}}
@keyframes dragonBodyBreath{0%,100%{transform:scaleY(1)}50%{transform:scaleY(1.023)}}
@keyframes dragonProudJoint{0%,100%{transform:translateY(0) rotate(0)}55%{transform:translateY(-9px) rotate(-4deg)}}
@keyframes dragonFlapHead{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px) rotate(3deg)}}
@keyframes dragonSneezeHead{0%,100%{transform:rotate(0) scale(1)}25%{transform:translate(-7px,5px) rotate(-6deg) scale(.94)}48%{transform:translate(11px,-9px) rotate(8deg) scale(1.07)}}
@keyframes dragonPuffHead{0%,100%{transform:scale(1)}45%{transform:scale(1.045) translateY(-4px)}}
.hunt-expression{position:absolute;z-index:6;top:9px;left:9px;right:9px;display:flex;flex-direction:column;gap:2px;pointer-events:none;background:#ffffffd9;border:1px solid #ffffff90;border-radius:12px;padding:8px 9px;box-shadow:0 7px 20px #273e3422;backdrop-filter:blur(6px);text-align:left}
.hunt-expression strong{font-size:12px;color:#316f58}
.hunt-expression span{font-size:10px;color:#51695e;white-space:normal;line-height:1.25}
.hunt-stage.scene-otter .hunt-expression strong{color:#3782a8}
.hunt-stage.scene-dragon .hunt-expression strong{color:#8c5aba}
@media(max-width:700px){.rig.avatar-card.preview{width:224px;height:224px}.rig.avatar-card.stage{width:171px;height:171px}.rig.avatar-card.win{width:148px;height:148px}.hunt-expression{padding:7px 9px}}
@media(prefers-reduced-motion:reduce){.rig .rig-layer,.rig .rig-blink,.rig .rig-sparkles{animation:none!important}}
/* Conservative joint angles keep the plush/textured source art connected. */
@keyframes foxPeekJoint{0%,100%{transform:rotate(0)}50%{transform:translate(-4px,2px) rotate(-6deg)}}
@keyframes foxSurpriseJoint{0%,100%{transform:translateX(0) rotate(0)}35%{transform:translate(-5px,-5px) rotate(-4deg)}70%{transform:translate(6px,-2px) rotate(4deg)}}
@keyframes otterTumbleHead{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(9deg) translateY(2px)}}
@keyframes dragonSneezeHead{0%,100%{transform:rotate(0) scale(1)}25%{transform:translate(-4px,3px) rotate(-4deg) scale(.98)}48%{transform:translate(5px,-6px) rotate(5deg) scale(1.04)}}
@keyframes dragonProudJoint{0%,100%{transform:translateY(0) rotate(0)}55%{transform:translateY(-5px) rotate(-2deg)}}

/* v0.9: all creatures use original GLB characters in the encounter screens. */
.avatar-card.portrait-whole{overflow:visible;filter:none;isolation:isolate}
.avatar-card.portrait-whole.preview .avatar-img,
.avatar-card.portrait-whole.stage .avatar-img,
.avatar-card.portrait-whole.win .avatar-img{object-fit:contain;height:100%;width:100%}
.avatar-card.portrait-whole .avatar-img{filter:drop-shadow(0 10px 10px rgba(60,76,65,.14))}
.avatar-card.portrait-whole.preview{animation:portraitWholeIdle 3.2s ease-in-out infinite}
.avatar-card.portrait-whole.stage{animation:portraitWholeIdle 3.2s ease-in-out infinite}
.avatar-card.portrait-whole.mini{animation:none!important;transform:none!important}
@keyframes portraitWholeIdle{0%,100%{translate:0 0}50%{translate:0 -5px}}
.avatar-card.model3d,.avatar-card.model3d.preview,.avatar-card.model3d.stage,.avatar-card.model3d.win{
 display:block;position:relative;max-width:none;max-height:none;overflow:visible;
 animation:none!important;transform:none!important;filter:none!important;isolation:isolate;
}
.avatar-card.model3d.preview{width:248px;height:222px}
.avatar-card.model3d.stage{width:240px;height:224px}
.avatar-card.model3d.win{width:198px;height:194px}
.glb-canvas{width:100%;height:100%;display:block;touch-action:none;position:relative;z-index:2;cursor:grab;border-radius:18px}
.glb-canvas:active{cursor:grabbing}
.model3d-ground{position:absolute;bottom:11%;left:20%;width:60%;height:13%;border-radius:50%;background:radial-gradient(ellipse,rgba(39,82,98,.27),rgba(64,130,157,.11) 47%,transparent 76%);filter:blur(7px);pointer-events:none;z-index:0}
.glb-loading{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);font-size:11px;white-space:nowrap;border-radius:15px;padding:8px 11px;background:#ffffffcc;color:#427d93;font-weight:800;z-index:6;pointer-events:none;box-shadow:0 4px 12px #487c8625}
.glb-loading[hidden]{display:none!important}
.glb-fallback{position:absolute;inset:0;z-index:2;display:grid;place-items:center;pointer-events:none}
.glb-fallback img{height:100%;width:100%;object-fit:contain}
.model3d-toolbar{position:absolute;display:flex;align-items:center;gap:5px;right:-6px;top:6px;z-index:8;pointer-events:auto}
.model3d-toolbar button{width:28px;height:28px;background:#fffdfdec;border:1px solid #cce7e5;box-shadow:0 3px 8px #286a801e;border-radius:10px;font-size:17px;color:#2d7b91;font-weight:800;padding:0}
.model3d-toolbar button.active{background:#2b8199;color:white}
.model3d-mark{display:inline-flex;align-items:center;color:#227893;background:#eefaffd9;border:1px solid #c3eaf4;border-radius:15px;font-size:9px;font-weight:950;letter-spacing:.5px;padding:5px 7px;white-space:nowrap}
.creature-preview.scene-otter:has(.model3d){background:radial-gradient(circle at 55% 23%,#ffffff 0%,#e3f9fc 40%,#bedfe9 82%,#a4d1dd 100%)}
.hunt-stage.scene-otter:has(.model3d){background:radial-gradient(circle at 50% 17%,#ffffff,#e7f9ff 48%,#b1e4ed 100%)}
.hunt-stage.scene-otter .hunt-creature:has(.model3d){top:42px}
.win-animal:has(.model3d){min-height:190px}
/* 3D overlay states animate the mesh mathematically; never deform the canvas as paper sprite. */
.avatar-card.model3d[class*="emotion-"],.avatar-card.model3d[class*="action-"]{transform:none!important;filter:none!important;animation:none!important}
@media(max-width:700px){
 .creature-art:has(.model3d){width:100%;height:212px}
 .avatar-card.model3d.preview{width:min(100%,285px);height:214px;margin:auto}
 .avatar-card.model3d.stage{width:min(100%,252px);height:216px}
 .model3d-toolbar{right:0;top:3px}
 .hunt-stage.scene-otter .hunt-creature:has(.model3d){top:43px}
}
@media(max-width:700px){
 #creatureDrawer:not([hidden]) .creature-preview{height:250px;min-height:250px}
 #creatureDrawer:not([hidden]) .creature-art{width:100%;height:232px}
 #creatureDrawer:not([hidden]) .avatar-card.model3d.preview{width:min(100%,285px);height:232px}
 #creatureDrawer:not([hidden]) .model3d-toolbar{right:2px;top:5px;gap:7px}
 #creatureDrawer:not([hidden]) .model3d-toolbar button{width:40px;height:40px;border-radius:12px;font-size:22px}
 #creatureDrawer:not([hidden]) .model3d-toolbar .model3d-mark{font-size:10px;padding:6px 8px}
}
@media(prefers-reduced-motion:reduce){.avatar-card.portrait-whole{animation:none!important}}

/* v0.9 — 3D for fox, otter and dragon; existing map/collection images remain lightweight. */
.creature-preview.scene-fox:has(.model3d){background:radial-gradient(circle at 50% 23%,#fffaf0 0%,#ffe9cb 47%,#f5c99c 100%)}
.creature-preview.scene-dragon:has(.model3d){background:radial-gradient(circle at 51% 20%,#fffaff 0%,#f1e2ff 49%,#cbaae8 100%)}
.creature-preview.scene-goat:has(.model3d){background:radial-gradient(circle at 50% 23%,#fffef1 0%,#f2efc5 48%,#cbdc9a 100%)}
.hunt-stage.scene-fox:has(.model3d){background:radial-gradient(circle at 50% 17%,#fffaf2,#ffe0b6 55%,#efc493)}
.hunt-stage.scene-dragon:has(.model3d){background:radial-gradient(circle at 50% 17%,#fffaff,#efdbff 55%,#c7a7e7)}
.hunt-stage.scene-goat:has(.model3d){background:radial-gradient(circle at 50% 17%,#fffef1,#f0edc6 56%,#c8d99a 100%)}
.hunt-stage.scene-fox .hunt-creature:has(.model3d),.hunt-stage.scene-dragon .hunt-creature:has(.model3d){top:42px}
.kind-fox .model3d-ground{background:radial-gradient(ellipse,rgba(176,106,53,.24),rgba(206,136,72,.1) 47%,transparent 76%)}
.kind-dragon .model3d-ground{background:radial-gradient(ellipse,rgba(112,62,147,.27),rgba(140,76,173,.11) 47%,transparent 76%)}
.kind-goat .model3d-ground{background:radial-gradient(ellipse,rgba(105,130,62,.25),rgba(145,166,78,.1) 47%,transparent 76%)}
.goat-treat{background:#f3f6d9;border-color:#fffde9}
@media(max-width:700px){
 .hunt-stage.scene-fox .hunt-creature:has(.model3d),.hunt-stage.scene-dragon .hunt-creature:has(.model3d){top:43px}
 .model3d-toolbar{gap:3px}
 .model3d-toolbar button{width:27px;height:27px}
}
/* Preserve HTML's hidden contract: without this the 2D fallback can paint over WebGL. */
.glb-fallback[hidden]{display:none!important}

/* Mobile layout guardrails: keep the page inside the visual viewport. */
html,body{width:100%;min-width:0;overflow-x:hidden}
.app{width:100%;min-width:0}
@media(max-width:700px){
  .app{width:100%;max-width:none;overflow:hidden}
  .topbar{min-width:0;flex-wrap:wrap;gap:8px;padding:11px 16px}
  .brand{min-width:0;flex:1 1 185px}
  .brand>div{min-width:0}
  .brand small{max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .top-actions{min-width:0;flex:1 1 100%;gap:6px;justify-content:flex-end}
  .top-actions .admin-link{padding:8px 9px!important;font-size:10px!important;white-space:nowrap}
  .top-actions .flag{min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;text-align:center}
  .content,.play-area,.map-panel,.drawer{width:100%;max-width:100%;min-width:0}
  .map-top{gap:8px}
  .map-top>div{min-width:0;flex:1 1 auto}
  .map-top strong{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}
  .map-top .soft-btn{flex:0 0 auto;white-space:nowrap}
  .map-bottom{flex-wrap:wrap}
  .map-bottom #mapGuide{min-width:0;flex:1 1 170px}
  .map-bottom #placeBtn{max-width:100%;flex:0 1 auto}
  .real-map,.illustrated-map{width:100%;max-width:100%}
}
@media(max-width:380px){
  .topbar{padding-inline:11px}
  .brand{flex-basis:170px}
  .brand small{max-width:180px}
  .top-actions .flag{font-size:8px;padding-inline:7px}
  .top-actions .admin-link{padding-inline:7px!important}
}
.topbar .admin-link,.topbar .flag.real{display:none!important}
.hex-label{cursor:grab!important}
.hex-label:active{cursor:grabbing!important}
#placeBtn{display:none!important}

/* Camera encounter MVP: live rear-camera feed with a non-geospatial creature overlay. */
.camera-panel{position:relative;min-height:min(62vh,520px);background:#101916;border-radius:22px;overflow:hidden;isolation:isolate;color:#fff;box-shadow:0 16px 38px #10241d38}
.camera-video,.camera-shade{position:absolute;inset:0;width:100%;height:100%}
.webxr-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}.webxr-canvas[hidden]{display:none!important}.camera-panel.webxr-mode .camera-video{display:none}.camera-panel.webxr-mode .camera-shade{background:linear-gradient(180deg,#09130d55 0%,transparent 34%,transparent 62%,#09130dcc 100%)}
.camera-video{display:block;object-fit:cover;background:#101916}
.camera-shade{z-index:1;background:linear-gradient(180deg,#09130d99 0%,transparent 30%,transparent 61%,#09130dcc 100%);pointer-events:none}
.camera-topline{position:absolute;z-index:3;top:13px;left:14px;right:14px;display:flex;justify-content:space-between;gap:10px;align-items:center;font-size:10px;font-weight:850;letter-spacing:.3px;text-shadow:0 1px 4px #000}
.camera-live{color:#fff;background:#be4f5acc;border:1px solid #ffffff55;border-radius:999px;padding:7px 9px}
.camera-topline span:last-child{background:#10251dcc;border:1px solid #ffffff44;border-radius:999px;padding:7px 9px}
.camera-creature{position:absolute;z-index:2;left:50%;top:46%;width:210px;height:210px;transform:translate(-50%,-50%);pointer-events:none;filter:drop-shadow(0 13px 15px #101c1840)}
.camera-creature .avatar-card.model3d.stage{width:210px;height:210px}.camera-creature .glb-canvas{border-radius:50%}.camera-creature .model3d-toolbar,.camera-creature .glb-loading{display:none}
.camera-bottomline{position:absolute;z-index:3;left:14px;right:14px;bottom:14px;display:grid;gap:8px;justify-items:center;text-align:center}.camera-bottomline p{max-width:340px;margin:0;color:#fff;font-size:11px;line-height:1.35;text-shadow:0 1px 4px #000}.camera-capture{width:min(100%,300px);margin:0}.camera-capture:disabled{opacity:.55;filter:grayscale(.2);cursor:not-allowed}.camera-bottomline .subtle-action{color:#fff;background:#10251dcc;border-color:#ffffff55;padding:8px 12px}.camera-panel[hidden]{display:none!important}
.webxr-launch{border-color:#ffffff88;background:#10251dcc;color:#fff;font-size:11px;padding:8px 12px}.webxr-launch[hidden]{display:none!important}
@media(max-width:700px){.camera-panel{min-height:66vh;border-radius:18px}.camera-creature{width:174px;height:174px;top:44%}.camera-creature .avatar-card.model3d.stage{width:174px;height:174px}.camera-topline{font-size:9px}.camera-bottomline{bottom:11px}.camera-bottomline p{font-size:10px}}
.camera-creature.camera-nearby{filter:drop-shadow(0 13px 15px #54b47e66)}
.camera-creature{transition:left .42s cubic-bezier(.22,.8,.28,1),transform .36s cubic-bezier(.22,.8,.28,1),opacity .22s ease;will-change:left,transform,opacity}
.camera-creature .avatar-card.model3d.stage{animation:none!important}
.leaf-animal-marker.nearby{animation:map-marker-pulse 1.2s ease-in-out infinite}
.proximity-pulse{animation:map-radius-pulse 1.35s ease-in-out infinite;transform-origin:center}
@keyframes camera-avatar-breathe{0%,100%{translate:0 0}50%{translate:0 -7px}}
@keyframes map-marker-pulse{0%,100%{filter:brightness(1);transform:scale(1)}50%{filter:brightness(1.12);transform:scale(1.1)}}
@keyframes map-radius-pulse{0%,100%{opacity:.42}50%{opacity:1}}
footer,.version,#modeFlag{display:none!important}
.auth-backdrop{position:fixed;z-index:6000;inset:0;background:#162c2bd9;display:flex;align-items:center;justify-content:center;padding:18px;backdrop-filter:blur(8px)}
.auth-card{width:min(410px,100%);background:#fffef8;border-radius:26px;padding:28px 22px;text-align:center;box-shadow:0 30px 90px #0007}
.auth-mark{width:54px;height:54px;margin:0 auto 12px;display:grid;place-items:center;border-radius:17px;background:#235b4b;color:#f9dd8d;font-size:28px}
.auth-card h2{margin:5px 0 9px;font-size:25px;letter-spacing:-.5px}.auth-card p{margin:0 auto 18px;max-width:320px;color:#718278;font-size:13px;line-height:1.55}.auth-link{display:flex;text-decoration:none;margin-bottom:10px}.auth-retry{width:100%;min-height:44px}.auth-card small{display:block;margin-top:15px;color:#91a096;font-size:10px;line-height:1.5}
.world-prep-modal{width:min(410px,100%);background:#fffef8;border-radius:28px;padding:30px 23px 23px;text-align:center;box-shadow:0 30px 90px #0007}.world-prep-art{width:72px;height:72px;margin:0 auto 15px;display:grid;place-items:center;border-radius:24px;background:linear-gradient(145deg,#2f8568,#174e40);color:#f9dd8d;font-size:38px;box-shadow:0 12px 26px #235b4b36}.world-prep-modal h2{margin:8px 0 10px;font-size:26px;letter-spacing:-.7px}.world-prep-modal p{margin:0 auto 20px;max-width:320px;color:#718278;font-size:13px;line-height:1.55}.world-prep-modal .primary-cta{margin-bottom:10px}.world-prep-modal .subtle-action{display:block;margin:0 auto;color:#6f9a82}.world-prep-modal small{display:block;min-height:18px;margin-top:13px;color:#91a096;font-size:10px;line-height:1.45}

/* Navigator map and compact mobile pass. */
.real-map{background:#e8eee8}
.real-map .leaflet-control-zoom a{color:#285d4d;font-weight:800}
.real-map .leaflet-control-attribution{background:#ffffffd9!important;border-radius:6px 0 0 0;padding:2px 5px}
.soft-btn.map-follow-off{background:#fff7df;border-color:#edd9a2;color:#8b6a2d}
.leaf-player{position:relative;width:25px;height:25px;border:4px solid #fff;border-radius:50%;background:#1f9be5;box-shadow:0 0 0 8px #3fbbf545,0 3px 9px #34638d55}
.leaf-player:after{content:'';position:absolute;left:50%;top:-9px;width:7px;height:7px;border-radius:50%;background:#fff;transform:translateX(-50%);box-shadow:0 0 0 3px #1f9be555}
.camera-topline span:last-child{max-width:68%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.camera-capture{min-height:44px}
@media(max-width:700px){
  .topbar{padding:8px 12px;flex-wrap:nowrap;gap:8px;min-height:54px}
  .brand{flex:1 1 auto;gap:8px}
  .brand-icon{font-size:19px;padding:7px 10px;border-radius:13px}
  .brand strong{font-size:18px}
  .brand small{display:none}
  .top-actions{flex:0 0 auto;gap:5px}
  .top-actions .icon-btn{width:34px;height:34px;border-radius:10px;font-size:17px}
  .content{padding:8px 10px}
  .intro{padding:2px 3px 7px}
  .intro h1{font-size:28px;margin:4px 0 6px}
  .intro>p{font-size:11.5px;line-height:1.45;margin:4px 0 8px}
  .intro .mode-explain{margin:6px 0!important;font-size:10.5px;line-height:1.4}
  .mission{margin-top:7px;padding:9px 10px;border-radius:16px}
  .progress-track{margin:8px 0}
  .mission p{font-size:10.5px;line-height:1.4}
  .play-area{gap:9px}
  .map-panel{border-radius:16px}
  .map-top{padding:8px 10px}
  .map-top strong{font-size:12px}
  .map-top small{font-size:10px;margin-top:3px}
  .map-top .soft-btn{padding:7px 8px;font-size:10px}
  .illustrated-map,.real-map{min-height:292px;height:292px}
  .map-bottom{min-height:44px;padding:7px 10px;font-size:10px}
  .drawer{padding:10px;gap:7px}
  .drawer-heading h2{font-size:19px}
  .creature-preview{height:116px}
  .distance-line{padding:6px 0 1px;font-size:10px}
  .primary-cta{min-height:42px;padding:9px 10px;font-size:12px}
  .secure-note{font-size:9px;line-height:1.35}
  .camera-panel{min-height:64dvh}
  .camera-topline{top:10px;left:10px;right:10px}
  .camera-topline span:last-child{font-size:8px;padding:6px 7px}
  .camera-bottomline{left:10px;right:10px;bottom:10px;gap:6px}
  .camera-bottomline p{font-size:10px}
}

/* Mobile first: keep the encounter action visible before the optional profile details. */
@media(max-width:700px){
  body.mobile-encounter-compact .drawer{display:grid;grid-template-columns:minmax(0,1fr);gap:7px}
  body.mobile-encounter-compact .drawer .creature-preview,
  body.mobile-encounter-compact .drawer .mood-panel,
  body.mobile-encounter-compact .drawer .emotion-chips,
  body.mobile-encounter-compact .drawer .reaction-buttons,
  body.mobile-encounter-compact .drawer .trick-btn,
  body.mobile-encounter-compact .drawer .creature-description,
  body.mobile-encounter-compact .drawer .secure-note{display:none!important}
  body.mobile-encounter-compact .drawer-heading,
  body.mobile-encounter-compact .drawer .distance-line,
  body.mobile-encounter-compact .drawer .primary-cta{grid-column:1}
  body.mobile-encounter-compact .drawer-heading h2{font-size:20px}
  body.mobile-encounter-compact .drawer .distance-line{padding-top:4px}
}

.sound-symbol{position:relative;display:inline-block;width:18px;height:16px;vertical-align:middle;color:#2c6651}
.sound-symbol:before{content:'';position:absolute;left:1px;top:5px;width:6px;height:7px;background:currentColor;border-radius:2px;clip-path:polygon(0 25%,42% 25%,100% 0,100% 100%,42% 75%,0 75%)}
.sound-symbol.sound-on:after{content:'))';position:absolute;left:8px;top:-4px;font-size:14px;letter-spacing:-4px;font-weight:900}
.sound-symbol.sound-off{opacity:.55}.sound-symbol.sound-off:after{content:'×';position:absolute;right:-2px;top:-8px;font-size:15px;font-weight:900}
.brand-icon{display:grid;place-items:center;line-height:1}
#realMap .leaflet-container{touch-action:none}
#realMap .leaflet-control-zoom a{touch-action:manipulation;user-select:none}
.camera-reticle{position:absolute;z-index:1;left:50%;top:46%;width:84px;height:84px;transform:translate(-50%,-50%);border:2px solid #ffffffb8;border-radius:50%;box-shadow:0 0 0 1px #10251d44,0 0 24px #ffffff45;pointer-events:none;transition:left .18s ease,border-color .18s ease,opacity .18s ease}
.camera-reticle:before,.camera-reticle:after{content:'';position:absolute;background:#fff;opacity:.8}
.camera-reticle:before{left:50%;top:-9px;width:2px;height:102px;transform:translateX(-50%)}
.camera-reticle:after{top:50%;left:-9px;width:102px;height:2px;transform:translateY(-50%)}
.camera-reticle span{position:absolute;inset:29px;border:1px solid #fff;border-radius:50%}
.camera-reticle.camera-target-offscreen{border-color:#f5c971;opacity:.72}
.camera-reticle.camera-target-offscreen span{border-color:#f5c971}
/* Goat collection cards use the same GLB as the encounter and camera. */
.animal-card .mini-portrait .avatar-card.model3d.mini{width:100%;height:100%;max-width:none;max-height:none;overflow:hidden;border-radius:13px;display:block;position:relative;animation:none!important;transform:none!important}
.animal-card .mini-portrait .avatar-card.model3d.mini .glb-canvas{border-radius:13px;cursor:default}
.animal-card .mini-portrait .avatar-card.model3d.mini .model3d-ground{bottom:3%;left:12%;width:76%;height:18%;filter:blur(4px)}
.animal-card .mini-portrait .avatar-card.model3d.mini .glb-loading{font-size:8px;padding:4px 5px}
.animal-card.locked .mini-portrait .avatar-card.model3d.mini{filter:grayscale(1);opacity:.42}
.leaf-animal-marker .avatar-card.model3d.mini{width:55px;height:55px;max-width:none;max-height:none;overflow:hidden;border-radius:50%;display:block;position:relative;animation:none!important;transform:none!important}
.leaf-animal-marker .avatar-card.model3d.mini .glb-canvas{border-radius:50%;cursor:default}
.leaf-animal-marker .avatar-card.model3d.mini .model3d-ground{bottom:2%;left:8%;width:84%;height:18%;filter:blur(3px)}
.leaf-animal-marker .avatar-card.model3d.mini .glb-loading{display:none}
.invite-btn{padding:8px 10px;font-size:10px;white-space:nowrap}
.social-modal{width:min(390px,100%);background:#fffef8;position:relative;border-radius:26px;padding:24px;text-align:center;box-shadow:0 30px 90px #0006}
.social-modal h2{font-size:24px;letter-spacing:-.5px;margin:7px 0 9px}.social-modal p{font-size:12px;line-height:1.55;color:#748478;margin:0 0 16px}.social-modal .primary-cta,.social-wide-btn{width:100%;margin-top:9px}.social-wide-btn{min-height:44px;border:1px solid #d5e5d8;border-radius:14px;background:#f0f8ed;color:#326d52;font-size:12px;font-weight:850}.social-modal small{display:block;color:#839287;font-size:10px;line-height:1.45;margin-top:12px}
#shareWinBtn{width:100%;margin-top:12px;min-height:44px}
@media(max-width:700px){.invite-btn{font-size:9px;padding:7px 8px}.social-modal{padding:20px 16px}.social-modal h2{font-size:21px}}
.collection-progress{display:block;margin-top:4px;color:#829187;font-size:11px;font-weight:700}
.collection-tools{display:flex;align-items:end;gap:14px}
.collection-sort-label{display:flex;align-items:center;gap:7px;color:#829187;font-size:10px;font-weight:750}
.collection-sort-label select{border:1px solid #dfe8dc;border-radius:9px;background:#f6fbf3;color:#326d52;padding:7px 9px;font:inherit;font-size:10px;outline:none}
.animal-card-copy{min-width:0;flex:1}.animal-card-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:2px}.animal-card-actions button{margin:0!important}.animal-card-actions button[data-share]{color:#8b6a39}
.collection-share-btn{width:100%;min-height:42px;margin-top:0;background:#f3f8ee}
.map-top-actions{display:flex;align-items:center;gap:7px}
body.map-fullscreen{overflow:hidden}
body.map-fullscreen .map-panel{position:fixed;inset:0;z-index:2600;width:100vw;height:100dvh;min-height:100dvh;border-radius:0;display:flex}
body.map-fullscreen .map-panel .real-map,body.map-fullscreen .map-panel .illustrated-map{min-height:0;height:auto;flex:1}
body.map-fullscreen .map-top{padding:14px 18px}
body.map-fullscreen .map-top-actions{gap:8px}
@media(max-width:700px){.album-title{align-items:flex-start;flex-direction:column}.collection-tools{width:100%;align-items:center;justify-content:space-between;gap:8px}.collection-sort-label{flex:1;justify-content:space-between}.collection-sort-label select{max-width:125px}.animal-card-actions{justify-content:center;gap:4px}.animal-card-actions button{font-size:9px}.collection-share-btn{font-size:11px}}
