/* =====================================================================
   MNDN Jornada v63: animações interativas
   Mapa do território, Vigilância Comunitária, Mapa das vilas online e
   Expedição pelo Brasil. Tudo em 2D, leve, e desligado quando o jogador
   pede "reduzir animações".
   ===================================================================== */

/* ---------- efeitos compartilhados ---------- */
.anm-fx{position:fixed;inset:0;pointer-events:none;z-index:40000;overflow:hidden}
.anm-p{position:absolute;left:0;top:0;font-size:18px;line-height:1;will-change:transform,opacity;animation:anmBurst var(--t,900ms) cubic-bezier(.15,.7,.3,1) forwards}
@keyframes anmBurst{0%{transform:translate(-50%,-50%) scale(.3) rotate(0);opacity:1}70%{opacity:1}100%{transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1) rotate(var(--r));opacity:0}}
.anm-float{position:absolute;transform:translate(-50%,-50%);padding:6px 11px;border-radius:999px;background:#fff8d6;color:#5b3d00;font:900 14px/1 system-ui,sans-serif;border:2px solid #e8b52a;box-shadow:0 4px 0 #b88310,0 8px 18px #0004;white-space:nowrap;animation:anmFloat 1.6s ease-out forwards}
@keyframes anmFloat{0%{transform:translate(-50%,-30%) scale(.6);opacity:0}15%{transform:translate(-50%,-60%) scale(1.08);opacity:1}100%{transform:translate(-50%,-260%) scale(1);opacity:0}}
.anm-toast{position:fixed;left:50%;bottom:28px;z-index:40001;transform:translateX(-50%);padding:10px 16px;border-radius:14px;background:#163d31;color:#fff;font:800 14px/1.3 system-ui,sans-serif;box-shadow:0 8px 24px #0006;animation:anmToast 2.2s ease forwards;max-width:calc(100vw - 32px);text-align:center}
@keyframes anmToast{0%{opacity:0;transform:translate(-50%,16px)}12%,82%{opacity:1;transform:translate(-50%,0)}100%{opacity:0;transform:translate(-50%,8px)}}
.anm-ripple{position:absolute;width:16px;height:16px;margin:-8px 0 0 -8px;border-radius:50%;border:3px solid #fff;pointer-events:none;animation:anmRipple .7s ease-out forwards;z-index:9}
@keyframes anmRipple{to{transform:scale(5);opacity:0}}
.anm-shake{animation:anmShake .45s ease}
@keyframes anmShake{20%{translate:-7px 0}40%{translate:6px 0}60%{translate:-4px 0}80%{translate:2px 0}}

/* =====================================================================
   1) MAPA DO TERRITÓRIO
   ===================================================================== */
.territorio-vivo .tv-map[data-anm]{touch-action:pan-y;user-select:none;-webkit-user-select:none;cursor:default;isolation:isolate}
.territorio-vivo .tv-map.anm-zoomed{touch-action:none;cursor:grab}
.territorio-vivo .tv-map.anm-dragging{cursor:grabbing}
.anm-world{position:relative;transform-origin:0 0;will-change:transform;transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.anm-world.anm-nodelay{transition:none}
.anm-world>img{display:block;width:100%;-webkit-user-drag:none;user-select:none}
.anm-amb{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:1}
.anm-world .tv-pin{z-index:4}
.anm-world .tv-pin:hover,.anm-world .tv-pin:focus-visible{z-index:6}

/* entrada dos pinos */
.anm-world .tv-pin.anm-in{animation:anmPinIn .6s cubic-bezier(.3,1.6,.5,1) both;animation-delay:var(--d,0ms)}
@keyframes anmPinIn{0%{scale:0;opacity:0;translate:0 -30px}60%{opacity:1}100%{scale:1;opacity:1;translate:0 0}}
.anm-world .tv-pin.anm-in.pending{animation:anmPinIn .6s cubic-bezier(.3,1.6,.5,1) both,tvPulse 1.7s 1s infinite;animation-delay:var(--d,0ms),calc(var(--d,0ms) + .7s)}
.anm-world .tv-pin:not([disabled]){transition:scale .18s,translate .18s,box-shadow .18s}
.anm-world .tv-pin:not([disabled]):hover{scale:1.18;translate:0 -4px;box-shadow:0 10px 18px #0007,0 0 0 6px #ffffff55}
.anm-world .tv-pin.anm-hop{animation:anmHop .5s ease}
@keyframes anmHop{30%{translate:0 -14px;scale:1.2}60%{translate:0 0;scale:.95}100%{scale:1}}
.anm-world .tv-pin.resolved::after{content:"";position:absolute;inset:-9px;border-radius:50%;border:2px dashed #7be08d;animation:anmSpin 9s linear infinite;pointer-events:none}
@keyframes anmSpin{to{rotate:360deg}}

/* nome do ponto ao passar o mouse */
.anm-tip{position:absolute;left:50%;bottom:calc(100% + 9px);translate:-50% 6px;padding:5px 9px;border-radius:9px;background:#10372c;color:#fff;font:800 12px/1.15 system-ui,sans-serif;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s,translate .15s;box-shadow:0 4px 10px #0005}
.anm-tip::after{content:"";position:absolute;left:50%;top:100%;margin-left:-6px;border:6px solid transparent;border-top-color:#10372c}
.anm-world .tv-pin:hover .anm-tip,.anm-world .tv-pin:focus-visible .anm-tip,.anm-world .tv-pin.anm-showtip .anm-tip{opacity:1;translate:-50% 0}

/* personagem do jogador andando no mapa */
.anm-player{position:absolute;z-index:3;width:5.2%;min-width:34px;max-width:64px;transform:translate(-50%,-92%);pointer-events:none;transition:none}
.anm-player img{display:block;width:100%;filter:drop-shadow(0 3px 2px #0006);animation:anmIdle 2.4s ease-in-out infinite;transform-origin:50% 100%}
.anm-player::after{content:"";position:absolute;left:18%;right:18%;bottom:-4px;height:9px;border-radius:50%;background:#0005;filter:blur(1px);z-index:-1}
.anm-player.anm-walk img{animation:anmWalk .32s ease-in-out infinite}
.anm-player.anm-flip img{scale:-1 1}
@keyframes anmIdle{50%{transform:translateY(-3px) scaleY(1.02)}}
@keyframes anmWalk{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-6px) rotate(3deg)}}
.anm-player .anm-bubble{position:absolute;left:50%;bottom:104%;translate:-50% 0;padding:4px 8px;border-radius:10px;background:#fff;color:#183d31;font:800 11px/1.1 system-ui,sans-serif;white-space:nowrap;box-shadow:0 3px 8px #0004;animation:anmBubble 2.6s ease forwards}
@keyframes anmBubble{0%{opacity:0;translate:-50% 8px}12%,80%{opacity:1;translate:-50% 0}100%{opacity:0}}

/* veículos, pessoas e natureza */
.anm-car{position:absolute;left:0;top:0;width:3.2%;min-width:22px;transform-origin:50% 50%;will-change:transform}
.anm-car svg{display:block;width:100%;height:auto;filter:drop-shadow(1px 3px 2px #0006)}
.anm-walker{position:absolute;left:0;top:0;width:1.15%;min-width:9px;will-change:transform}
.anm-walker svg{display:block;width:100%;animation:anmStep .5s ease-in-out infinite}
@keyframes anmStep{50%{transform:translateY(-12%)}}
.anm-cloud-shadow{position:absolute;top:var(--y);left:-40%;width:38%;height:30%;border-radius:50%;background:radial-gradient(closest-side,#0b2a2c 0,#0b2a2c00 100%);opacity:.22;animation:anmDrift var(--t) linear infinite;animation-delay:var(--d)}
.anm-cloud{position:absolute;top:var(--y);left:-20%;width:var(--w,14%);animation:anmDrift var(--t) linear infinite;animation-delay:var(--d);opacity:.92}
.anm-cloud svg{display:block;width:100%;height:auto}
@keyframes anmDrift{to{translate:var(--to,180%) 0}}
.anm-cloud-shadow{--to:400%}
.anm-birds{position:absolute;top:var(--y,6%);left:-10%;width:7%;animation:anmBirds var(--t,18s) linear infinite;animation-delay:var(--d,0s)}
.anm-birds svg{width:100%;overflow:visible}
.anm-birds path{fill:none;stroke:#203238;stroke-width:2.2;stroke-linecap:round;animation:anmFlap .5s ease-in-out infinite alternate;transform-origin:center;transform-box:fill-box}
.anm-birds path:nth-child(2){animation-delay:.15s}.anm-birds path:nth-child(3){animation-delay:.3s}
@keyframes anmFlap{to{transform:scaleY(.35)}}
@keyframes anmBirds{0%{translate:0 0}50%{translate:600% 30%}100%{translate:1300% -10%}}
.anm-spark{position:absolute;width:1.1%;aspect-ratio:1;background:radial-gradient(circle,#fff 0 18%,#ffffff00 60%);animation:anmTwinkle var(--t,2.4s) ease-in-out infinite;animation-delay:var(--d,0s)}
.anm-spark::before{content:"";position:absolute;inset:0;background:linear-gradient(#fff,#fff) center/12% 100% no-repeat,linear-gradient(#fff,#fff) center/100% 12% no-repeat;opacity:.9}
@keyframes anmTwinkle{0%,100%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1)}}
.anm-butterfly{position:absolute;width:1.8%;min-width:12px;animation:anmFly var(--t,9s) ease-in-out infinite;animation-delay:var(--d,0s)}
.anm-butterfly svg{width:100%;overflow:visible}
.anm-butterfly .w{transform-origin:50% 50%;transform-box:fill-box;animation:anmWing .18s ease-in-out infinite alternate}
@keyframes anmWing{to{transform:scaleX(.25)}}
@keyframes anmFly{0%,100%{translate:0 0}25%{translate:140% -90%}50%{translate:260% 10%}75%{translate:90% 80%}}
.anm-night{position:absolute;inset:0;pointer-events:none;z-index:2;transition:background 2s}
.anm-night.dusk{background:linear-gradient(#ff9a4a33,#7a3c6a33);mix-blend-mode:multiply}
.anm-night.night{background:#0b1d4bb0;mix-blend-mode:multiply}
.anm-lamp{position:absolute;width:7%;aspect-ratio:1;translate:-50% -50%;border-radius:50%;background:radial-gradient(circle,#ffe7a0cc 0,#ffd86a55 35%,#ffd86a00 70%);mix-blend-mode:screen;animation:anmFlicker 3s ease-in-out infinite;z-index:2;pointer-events:none}
@keyframes anmFlicker{50%{opacity:.75}}

/* controles de zoom */
.anm-zoom{position:absolute;right:10px;top:10px;z-index:8;display:flex;flex-direction:column;gap:6px}
.anm-zoom button{width:40px;height:40px;padding:0!important;border-radius:12px!important;border:2px solid #fff!important;background:#ffffffe6!important;color:#164536!important;font:900 20px/1 system-ui,sans-serif!important;box-shadow:0 4px 10px #0005;cursor:pointer}
.anm-zoom button:active{translate:0 2px}
.anm-maphint{position:absolute;left:10px;bottom:10px;z-index:8;padding:6px 10px;border-radius:10px;background:#0f3a2ee0;color:#fff;font:800 12px/1.2 system-ui,sans-serif;pointer-events:none;animation:anmHint 6s ease forwards}
@keyframes anmHint{0%,80%{opacity:1}100%{opacity:0}}

/* =====================================================================
   2) VIGILÂNCIA COMUNITÁRIA
   ===================================================================== */
.vc-scene-wrap[data-anm]{cursor:none;touch-action:pan-y}
@media (hover:none){.vc-scene-wrap[data-anm]{cursor:auto}}
.vc-scene-wrap[data-anm] .vc-scene{animation:anmKen 28s ease-in-out infinite alternate;transform-origin:60% 50%}
@keyframes anmKen{to{transform:scale(1.045) translate(-.6%,.4%)}}
.anm-critters{position:absolute;inset:0;pointer-events:none;z-index:1;overflow:hidden}
.vc-scene-wrap .vc-hotspot{z-index:4}
.vc-scene-wrap figcaption{z-index:5}
.anm-lens{position:absolute;inset:0;z-index:3;pointer-events:none;background:radial-gradient(circle var(--lr,105px) at var(--lx,50%) var(--ly,50%),#0000 0,#0000 72%,#04182080 100%);transition:opacity .4s}
.anm-loupe{position:absolute;left:0;top:0;z-index:5;width:calc(var(--lr,105px)*2);height:calc(var(--lr,105px)*2);margin:calc(var(--lr,105px)*-1) 0 0 calc(var(--lr,105px)*-1);pointer-events:none;will-change:transform}
.anm-loupe::before{content:"";position:absolute;inset:0;border-radius:50%;border:5px solid #fff;box-shadow:0 0 0 3px #1c5a43,inset 0 0 0 2px #ffffff88,0 6px 18px #0006,inset 0 0 30px #fff3}
.anm-loupe::after{content:"";position:absolute;width:16%;height:44%;right:-2%;bottom:-30%;border-radius:10px;background:linear-gradient(90deg,#8a5a2b,#c88a4a,#8a5a2b);rotate:-45deg;transform-origin:top;box-shadow:0 4px 8px #0005}
.anm-loupe .glint{position:absolute;left:18%;top:14%;width:24%;height:12%;border-radius:50%;background:#ffffff70;rotate:-30deg}
.vc-scene-wrap.anm-locked .anm-loupe::before{box-shadow:0 0 0 3px #e4b629,inset 0 0 0 2px #ffffff88,0 0 0 10px #f8dc6744,0 6px 18px #0006}
.vc-hotspot.anm-near{scale:1.12;box-shadow:0 3px 0 #8a6210,0 0 0 8px #f8dc6766,0 0 28px #fff!important}
.vc-hotspot{transition:scale .2s,box-shadow .2s}
.vc-hotspot.anm-in{animation:anmPop .55s cubic-bezier(.3,1.6,.5,1) both,vcPulse 1.8s .6s infinite;animation-delay:var(--d,0ms),calc(var(--d,0ms) + .6s)}
.vc-hotspot.done.anm-in{animation:anmPop .55s cubic-bezier(.3,1.6,.5,1) both;animation-delay:var(--d,0ms)}
@keyframes anmPop{0%{scale:0;opacity:0}100%{scale:1;opacity:1}}
.anm-mosq{position:absolute;width:2.8%;min-width:18px;animation:anmBuzz var(--t,3s) ease-in-out infinite;animation-delay:var(--d,0s)}
.anm-mosq svg{width:100%;display:block;animation:anmJitter .12s steps(2) infinite;filter:drop-shadow(0 2px 1px #0005)}
.anm-mosq .wing{animation:anmBuzzWing .06s linear infinite alternate;transform-box:fill-box;transform-origin:center bottom}
@keyframes anmBuzzWing{to{opacity:.35}}
@keyframes anmBuzz{0%,100%{translate:0 0}20%{translate:120% -80%}40%{translate:-60% -140%}60%{translate:-140% 20%}80%{translate:60% 90%}}
@keyframes anmJitter{50%{transform:translate(1px,-1px) rotate(6deg)}}
.anm-leaf{position:absolute;top:var(--y,6%);left:var(--x,50%);width:1.8%;min-width:10px;animation:anmLeaf var(--t,7s) linear infinite;animation-delay:var(--d,0s);opacity:0}
.anm-leaf svg{width:100%;display:block}
@keyframes anmLeaf{0%{opacity:0;translate:0 0;rotate:0}10%{opacity:1}35%{translate:60% 900%;rotate:120deg}60%{translate:-40% 1800%;rotate:220deg}90%{opacity:1}100%{opacity:0;translate:30% 2800%;rotate:340deg}}
.anm-rat{position:absolute;left:var(--x);top:var(--y);width:5%;min-width:26px;opacity:0;animation:anmRat 11s ease-in-out infinite;animation-delay:var(--d,2s)}
.anm-rat svg{width:100%;display:block}
@keyframes anmRat{0%,58%{opacity:0;translate:0 0}62%{opacity:1;translate:0 0}74%{opacity:1;translate:-160% 10%}78%{translate:-160% 10%}80%{scale:-1 1;translate:-160% 10%}92%{opacity:1;scale:-1 1;translate:0 0}96%,100%{opacity:0;scale:-1 1}}
.anm-ripples{position:absolute;left:var(--x);top:var(--y);width:9%;aspect-ratio:2.4/1;translate:-50% -50%}
.anm-ripples i{position:absolute;inset:0;border-radius:50%;border:2px solid #d9f3ffcc;animation:anmRip 2.7s ease-out infinite;opacity:0}
.anm-ripples i:nth-child(2){animation-delay:.9s}.anm-ripples i:nth-child(3){animation-delay:1.8s}
@keyframes anmRip{0%{transform:scale(.2);opacity:.9}100%{transform:scale(1);opacity:0}}
.anm-bug{position:absolute;left:var(--x);top:var(--y);width:2.6%;min-width:14px;animation:anmCrawl 16s linear infinite;animation-delay:var(--d,0s)}
.anm-bug img{width:100%;display:block;animation:anmJitter .25s steps(2) infinite}
@keyframes anmCrawl{0%{translate:0 0;rotate:-80deg;opacity:0}6%{opacity:1}45%{translate:-90% -260%;rotate:-100deg}50%{rotate:90deg}94%{opacity:1;translate:0 0;rotate:80deg}100%{opacity:0}}
.anm-rays{position:absolute;left:-10%;top:-30%;width:70%;height:120%;background:repeating-linear-gradient(110deg,#fff7c900 0 40px,#fff7c933 40px 70px,#fff7c900 70px 120px);filter:blur(6px);animation:anmRays 9s ease-in-out infinite alternate;mix-blend-mode:screen}
@keyframes anmRays{from{opacity:.25;translate:0 0}to{opacity:.6;translate:6% 0}}
.anm-stamp{position:absolute;left:var(--x);top:var(--y);z-index:7;translate:-50% -50%;padding:8px 14px;border:4px solid #1c8058;border-radius:12px;background:#ffffffee;color:#1c8058;font:900 20px/1 system-ui,sans-serif;letter-spacing:.04em;rotate:-12deg;pointer-events:none;animation:anmStamp 2.4s ease forwards;box-shadow:0 8px 20px #0005}
@keyframes anmStamp{0%{scale:2.6;opacity:0}14%{scale:.92;opacity:1}22%{scale:1}82%{opacity:1}100%{opacity:0;scale:1}}
.vc-card.anm-enter{animation:anmCard .45s cubic-bezier(.2,.9,.3,1.2)}
@keyframes anmCard{from{opacity:0;translate:24px 0}to{opacity:1;translate:0 0}}
.vc-question.anm-good>button[data-register]{animation:anmGlow 1.2s ease-in-out infinite}
@keyframes anmGlow{50%{box-shadow:0 0 0 6px #7be08d66,0 0 22px #7be08d}}
.vc-card .anm-ring{display:inline-grid;place-items:center;width:58px;height:58px;border-radius:50%;background:conic-gradient(#1c8058 calc(var(--p)*1%),#d6e9d0 0);flex:none}
.vc-card .anm-ring b{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#e1f1d7;font-size:16px!important}

/* =====================================================================
   3) MAPA DAS VILAS ONLINE
   ===================================================================== */
.anm-vcard{padding-bottom:12px!important}
.anm-vcard .co-growing-head,.anm-vcard .co-growing-viewport,.anm-vcard .co-atlas-hint,.anm-vcard .co-empty{display:none!important}
.anm-vhead{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0 10px}
.anm-vhead span{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:999px;background:#e6f2dc;color:#1d4e3a;font:800 12px/1.2 system-ui,sans-serif}
.anm-vview{position:relative;height:min(460px,62vh);border-radius:18px;overflow:auto;scrollbar-width:none;background:#7fc06a;box-shadow:inset 0 0 0 3px #ffffffaa,0 10px 24px #0004;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}
.anm-vview::-webkit-scrollbar{display:none}
.anm-vview.anm-dragging{cursor:grabbing}
.anm-vworld{position:relative;background:radial-gradient(circle at 30% 20%,#9dd27c 0,#7fbf62 40%,#6cae55 100%)}
.anm-vworld::before{content:"";position:absolute;inset:0;background-image:radial-gradient(#ffffff22 1.5px,transparent 2px),radial-gradient(#2d6b3022 2px,transparent 2.5px);background-size:38px 38px,57px 57px;background-position:0 0,19px 23px;pointer-events:none}
.anm-vsvg{position:absolute;inset:0;overflow:visible;pointer-events:none}
.anm-road{fill:none;stroke:#e7cf98;stroke-width:18;stroke-linecap:round}
.anm-road-edge{fill:none;stroke:#c8a86a;stroke-width:22;stroke-linecap:round}
.anm-road-dash{fill:none;stroke:#fff8e4;stroke-width:2.5;stroke-dasharray:9 12;stroke-linecap:round;animation:anmDash 1.6s linear infinite}
@keyframes anmDash{to{stroke-dashoffset:-42}}
.anm-river{fill:none;stroke:#4fb0d9;stroke-width:34;stroke-linecap:round;opacity:.95}
.anm-river-shine{fill:none;stroke:#bfeaff;stroke-width:3;stroke-dasharray:14 26;animation:anmDash 2.4s linear infinite;opacity:.8}
.anm-tree{position:absolute;width:34px;height:42px;translate:-50% -100%;pointer-events:none;transform-origin:50% 100%;animation:anmSway var(--t,4s) ease-in-out infinite alternate;animation-delay:var(--d,0s)}
@keyframes anmSway{from{rotate:-2deg}to{rotate:2deg}}
.anm-vhouse{position:absolute;translate:-50% -88%;width:96px;padding:0!important;border:0!important;background:none!important;box-shadow:none!important;cursor:pointer;color:inherit;transition:scale .18s,translate .18s;z-index:2}
.anm-vhouse:hover,.anm-vhouse:focus-visible{scale:1.1;translate:-50% -94%;z-index:5;outline:none}
.anm-vhouse svg{display:block;width:100%;overflow:visible;filter:drop-shadow(0 6px 4px #0004)}
.anm-vhouse .smoke{animation:anmSmoke 3.2s ease-out infinite;opacity:0;transform-box:fill-box;transform-origin:center}
.anm-vhouse .smoke:nth-of-type(2){animation-delay:1.1s}.anm-vhouse .smoke:nth-of-type(3){animation-delay:2.2s}
@keyframes anmSmoke{0%{opacity:0;transform:translate(0,0) scale(.4)}20%{opacity:.8}100%{opacity:0;transform:translate(10px,-34px) scale(1.5)}}
.anm-vhouse .flag{transform-box:fill-box;transform-origin:0 50%;animation:anmFlag 1.2s ease-in-out infinite alternate}
@keyframes anmFlag{to{transform:skewY(-8deg) scaleX(.9)}}
.anm-vhouse .win{transition:fill 1.2s}
.anm-vworld.night .anm-vhouse .win{fill:#ffd96b}
.anm-vlabel{display:block;margin:4px auto 0;max-width:130px;padding:4px 8px;border-radius:9px;background:#fffbea;color:#20402f;font:800 11px/1.15 system-ui,sans-serif;box-shadow:0 2px 0 #c9a54a,0 4px 10px #0003;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;translate:-17px 0;width:max-content}
.anm-vhouse.mine{width:124px}
.anm-vhouse.mine .anm-vlabel{background:#f1c54f;color:#3a2b00;font-size:12px}
.anm-vbadge{position:absolute;right:-2px;top:6px;min-width:22px;height:22px;padding:0 5px;border-radius:999px;background:#1c8058;color:#fff;font:900 11px/22px system-ui,sans-serif;border:2px solid #fff}
.anm-vpulse{position:absolute;left:50%;top:60%;width:150%;aspect-ratio:2.2/1;translate:-50% -50%;border-radius:50%;border:3px solid #fff;opacity:0;animation:anmVPulse 2.4s ease-out infinite;pointer-events:none;z-index:-1}
@keyframes anmVPulse{0%{transform:scale(.4);opacity:.8}100%{transform:scale(1.1);opacity:0}}
.anm-vhouse.anm-pop{animation:anmPop .55s cubic-bezier(.3,1.6,.5,1) both;animation-delay:var(--d,0ms)}
.anm-lot{position:absolute;translate:-50% -60%;width:92px;height:56px;border-radius:50%;border:3px dashed #ffffffb0;background:#ffffff1f;display:grid;place-items:center;pointer-events:none}
.anm-lot span{translate:0 -26px;padding:4px 8px;border-radius:8px;background:#5c3d1e;color:#ffe9b8;font:800 10px/1.15 system-ui,sans-serif;text-align:center;box-shadow:0 3px 0 #3b2510;animation:anmSign 2.8s ease-in-out infinite;animation-delay:var(--d,0s);max-width:110px}
@keyframes anmSign{50%{translate:0 -31px}}
.anm-vplayer{position:absolute;z-index:4;width:44px;translate:-50% -100%;pointer-events:none}
.anm-vplayer img{width:100%;display:block;filter:drop-shadow(0 3px 2px #0006);animation:anmIdle 2.4s ease-in-out infinite;transform-origin:50% 100%}
.anm-vplayer.anm-walk img{animation:anmWalk .32s ease-in-out infinite}
.anm-vplayer.anm-flip img{scale:-1 1}
.anm-vclouds{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:6}
.anm-vclouds .anm-cloud{--w:150px;opacity:.85;filter:drop-shadow(0 30px 14px #0002)}
.anm-vhint{margin:8px 2px 0;color:#41604f;font:700 12px/1.3 system-ui,sans-serif}
.anm-vworld.night{filter:brightness(.86) saturate(.95) hue-rotate(-8deg)}
.anm-walkdot{pointer-events:none}

/* visita: lupa sobre a praça */
.co-visit-scene[data-anm]{cursor:none;touch-action:pan-y}
@media (hover:none){.co-visit-scene[data-anm]{cursor:auto}}
.co-visit-scene .co-hotspot{z-index:4}

/* =====================================================================
   4) EXPEDIÇÃO PELO BRASIL
   ===================================================================== */
#mapaBrasil .uf{transform-box:fill-box;transform-origin:center;transition:transform .22s cubic-bezier(.3,1.5,.5,1),filter .2s}
#mapaBrasil .uf:not([data-travado="1"]):hover,#mapaBrasil .uf:not([data-travado="1"]):focus-visible{transform:translateY(-8px) scale(1.05);filter:brightness(1.15) drop-shadow(0 10px 6px #06213f88)}
#mapaBrasil .uf.anm-pick{animation:anmUfPick .6s ease}
@keyframes anmUfPick{30%{transform:translateY(-14px) scale(1.12)}100%{transform:translateY(-4px) scale(1.03)}}
#mapa.on #mapaBrasil .uf.anm-in{animation:anmUfIn .55s cubic-bezier(.3,1.5,.5,1) both;animation-delay:var(--d,0ms)}
@keyframes anmUfIn{0%{transform:translateY(-30px) scale(.6);opacity:0}100%{transform:none;opacity:1}}

/* ---------- reduzir animações ---------- */
body.reduce-motion .anm-amb,body.reduce-motion .anm-critters,body.reduce-motion .anm-vclouds,body.reduce-motion .anm-walkdot{display:none!important}
body.reduce-motion .anm-p,body.reduce-motion .anm-float{display:none}
@media (prefers-reduced-motion:reduce){
  .anm-amb,.anm-critters,.anm-vclouds,.anm-walkdot{display:none!important}
  .anm-world .tv-pin.anm-in,.vc-hotspot.anm-in,.anm-vhouse.anm-pop,#mapa.on #mapaBrasil .uf.anm-in{animation:none!important}
  .vc-scene-wrap[data-anm] .vc-scene{animation:none}
  .anm-road-dash,.anm-river-shine,.anm-tree{animation:none}
}

@media (max-width:760px){
  .anm-zoom button{width:36px;height:36px;font-size:18px!important}
  .anm-vhouse{width:82px}.anm-vhouse.mine{width:104px}
  .anm-vview{height:min(400px,58vh)}
  .anm-stamp{font-size:15px}
}


/* =====================================================================
   v64: avião da expedição
   ===================================================================== */
.anm-flight{pointer-events:none}
.anm-trail{fill:none;stroke:#ffffff;stroke-width:4;stroke-linecap:round;opacity:.9;filter:drop-shadow(0 0 4px #ffffffaa)}
.anm-trail-fade{transition:opacity .9s;opacity:0}
.anm-plane-shadow path{fill:#06213f;opacity:.28}
.anm-pin .anm-pin-body{animation:anmPinDrop .7s cubic-bezier(.3,1.5,.5,1) both;transform-box:fill-box;transform-origin:50% 100%}
.anm-pin .anm-pin-shadow{fill:#06213f55;animation:anmPinShadow .7s ease both;transform-box:fill-box;transform-origin:center}
@keyframes anmPinDrop{0%{transform:translateY(-70px) scale(.6);opacity:0}60%{transform:translateY(4px) scale(1.05,.9);opacity:1}100%{transform:none}}
@keyframes anmPinShadow{0%{transform:scale(.2);opacity:0}100%{transform:none;opacity:1}}
.anm-ring{fill:none;stroke:#fff;stroke-width:4;animation:anmRingSvg 1.2s ease-out forwards;transform-box:fill-box;transform-origin:center}
@keyframes anmRingSvg{from{transform:scale(.5);opacity:1}to{transform:scale(6);opacity:0}}
.anm-bclouds{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2}
.anm-bclouds .anm-cloud{opacity:.55}
#ufInfo{transition:transform .25s}
#ufInfo.anm-novo{animation:anmCard .4s cubic-bezier(.2,.9,.3,1.2)}

/* =====================================================================
   v64: praça viva
   ===================================================================== */
.anm-praca-amb{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:1}
.anm-praca-amb .anm-cloud-shadow{height:40%;opacity:.16}
.anm-praca-night{position:absolute;inset:0;transition:background 2s}
.anm-praca-night.dusk{background:linear-gradient(#ff9a4a30,#7a3c6a30);mix-blend-mode:multiply}
.anm-praca-night.night{background:#0b1d4b8c;mix-blend-mode:multiply}
.praca-guia{transition:left var(--anm-dur,.9s) ease-in-out}
.praca-guia.anm-flip img{scale:-1 1}
.praca-guia.anm-anda img{animation:anmWalk .34s ease-in-out infinite}
.praca-guia.anm-pula img{animation:anmPula .6s cubic-bezier(.3,1.5,.5,1)}
@keyframes anmPula{35%{translate:0 -38px;rotate:-6deg}70%{translate:0 0;scale:1.06 .94}100%{scale:1}}
.anm-guide-bubble{position:absolute;left:50%;bottom:100%;translate:-50% 0;padding:7px 12px;border-radius:14px;background:#fff;color:#173b30;font:800 14px/1.2 system-ui,sans-serif;white-space:nowrap;box-shadow:0 4px 12px #0004;animation:anmBubble 2.2s ease forwards;z-index:3}
.anm-guide-bubble::after{content:"";position:absolute;left:50%;top:100%;margin-left:-7px;border:7px solid transparent;border-top-color:#fff}
.anm-alvo{position:absolute;width:30px;height:12px;margin:-6px 0 0 -15px;border-radius:50%;border:3px solid #fff;pointer-events:none;z-index:2;animation:anmAlvo .7s ease-out forwards}
@keyframes anmAlvo{from{transform:scale(.3);opacity:1}to{transform:scale(2.2);opacity:0}}
.anm-pombo{position:absolute;z-index:4;width:44px;padding:0!important;border:0!important;background:none!important;box-shadow:none!important;cursor:pointer;transition:left 1.2s}
.anm-pombo svg{display:block;width:100%;overflow:visible}
.anm-pombo .corpo{transform-box:fill-box;transform-origin:30% 90%;animation:anmBica 2.6s ease-in-out infinite;animation-delay:var(--d,0s)}
@keyframes anmBica{0%,40%,100%{transform:rotate(0)}48%{transform:rotate(-24deg)}54%{transform:rotate(0)}62%{transform:rotate(-24deg)}70%{transform:rotate(0)}}
.anm-pombo.anm-flip svg{scale:-1 1}
.anm-pombo.anm-voa{animation:anmVoa 6s ease-in forwards;pointer-events:none}
@keyframes anmVoa{0%{translate:0 0;opacity:1}30%{translate:-120px -260px;opacity:1}32%,85%{opacity:0;translate:-140px -320px}100%{opacity:1;translate:0 0}}
.anm-chama{animation:anmChama .9s ease}
@keyframes anmChama{15%{rotate:-8deg;scale:1.12}30%{rotate:7deg}45%{rotate:-5deg}60%{rotate:3deg;scale:1.05}100%{rotate:0;scale:1}}
.opcao-madeira{transition:translate .15s,scale .15s}
.opcao-madeira:hover{translate:0 -6px;scale:1.04}

/* =====================================================================
   v64: efeitos em todo o jogo
   ===================================================================== */
.anm-coin{position:absolute;font-size:22px;translate:-50% -50%;animation:anmCoin 1.1s cubic-bezier(.5,0,.6,1) both;filter:drop-shadow(0 2px 2px #0005)}
@keyframes anmCoin{0%{transform:scale(.2);opacity:0}15%{transform:translate(0,-40px) scale(1.2);opacity:1}100%{transform:translate(var(--tx),var(--ty)) scale(.5);opacity:.9}}
.anm-ganhou{animation:anmGanhou .5s ease}
@keyframes anmGanhou{40%{scale:1.25}100%{scale:1}}
.anm-levelup{position:absolute;inset:0;display:grid;place-items:center;align-content:center;gap:10px;background:radial-gradient(circle,#0b3b2c99,#0b3b2ccc);animation:anmFadeOut 2.6s ease forwards}
.anm-levelup .raios{position:absolute;width:140vmax;height:140vmax;left:50%;top:50%;margin:-70vmax 0 0 -70vmax;background:repeating-conic-gradient(#ffe36e33 0 10deg,#0000 10deg 20deg);animation:anmSpin 8s linear infinite}
.anm-levelup .selo{position:relative;font-size:90px;animation:anmPop .6s cubic-bezier(.3,1.6,.5,1) both}
.anm-levelup b{position:relative;font:900 clamp(28px,7vw,52px)/1 system-ui,sans-serif;color:#ffe36e;text-shadow:0 4px 0 #8a5a00,0 8px 20px #0008;animation:anmPop .6s .15s cubic-bezier(.3,1.6,.5,1) both}
@keyframes anmFadeOut{0%,80%{opacity:1}100%{opacity:0}}
section.tela.anm-entra{animation:anmTela .5s cubic-bezier(.2,.8,.2,1)}
@keyframes anmTela{from{opacity:0;transform:scale(1.03)}to{opacity:1;transform:none}}
.modal-resposta.on>*{animation:anmPop .45s cubic-bezier(.3,1.5,.5,1) both}

body.reduce-motion .anm-praca-amb,body.reduce-motion .anm-pombo{display:none!important}
@media (prefers-reduced-motion:reduce){.anm-praca-amb,.anm-pombo{display:none!important}section.tela.anm-entra{animation:none}}
@media (max-width:760px){.anm-pombo{width:34px}}

/* =====================================================================
   v64: Caramelo na praça
   ===================================================================== */
#praca .companheiro-praca.anm-dog-anda .plaza-dog{animation:anmDogTrota .28s ease-in-out infinite!important}
#praca .companheiro-praca.anm-dog-flip .plaza-dog{scale:-1 1}
@keyframes anmDogTrota{0%,100%{translate:0 0;rotate:-3deg}50%{translate:0 -7px;rotate:3deg}}
#praca .companheiro-praca.anm-dog-pula .plaza-dog{animation:anmDogPula .6s cubic-bezier(.3,1.5,.5,1)!important}
@keyframes anmDogPula{35%{translate:0 -34px;rotate:-8deg}70%{translate:0 0;scale:1.08 .92}100%{scale:1}}
#praca .companheiro-praca.anm-dog-cheira .plaza-dog{animation:anmDogCheira 1.6s ease-in-out!important}
@keyframes anmDogCheira{20%,60%{rotate:12deg;translate:4px 6px}40%,80%{rotate:9deg;translate:6px 7px}100%{rotate:0;translate:0}}
.anm-dog-bubble{position:absolute;left:50%;bottom:92%;translate:-50% 0;padding:5px 10px;border-radius:12px;background:#fff8d6;color:#5b3d00;font:900 13px/1.1 system-ui,sans-serif;white-space:nowrap;border:2px solid #e8b52a;box-shadow:0 4px 10px #0004;animation:anmBubble 2s ease forwards;pointer-events:none;z-index:3}
.anm-dog-heart{position:absolute;bottom:70%;font-size:18px;pointer-events:none;animation:anmHeart 1.8s ease-out forwards;opacity:0}
@keyframes anmHeart{0%{opacity:0;translate:0 0;scale:.4}20%{opacity:1;scale:1.1}100%{opacity:0;translate:0 -70px;scale:1}}
.anm-pata{position:absolute;z-index:3;font-size:14px;opacity:.75;translate:-50% -50%;pointer-events:none;animation:anmPata 1.6s ease forwards;filter:grayscale(.3) brightness(.7)}
@keyframes anmPata{0%{opacity:0}15%{opacity:.75}100%{opacity:0}}
body.reduce-motion .anm-pata,body.reduce-motion .anm-dog-heart{display:none}
