/* Animacije dana (js/anim-dan.js): samo prikaz, ništa ne čeka. Sve važi samo uz html.an (JS ga stavlja kad je uključeno:
   IGRA.anim.dan.on, ?anim=0 gasi, prefers-reduced-motion gasi, bot gasi). Kod gostiju isti fajl; js/anim-dan.js nastavlja
   CSS animacije preko zamene ogledala (isti element = ista faza), pa se ništa ne pokreće ponovo na svako osvežavanje.
   Pravilo: krajnje stanje je uvek običan stil (animacija bez fill forwards), da „nastavi od kraja“ izgleda isto kao „gotovo“. */
@media (prefers-reduced-motion:no-preference){

/* ---- 1. prozori ---- */
html.an #modal.on{animation:an-zavesa .2s ease-out backwards}
html.an #modal.on>.kutija{animation:an-prozor .26s cubic-bezier(.2,.9,.3,1.1) backwards}
html.an #modal.on>.kutija.pk-trese{animation:an-prozor .26s cubic-bezier(.2,.9,.3,1.1) backwards,pk-trese .14s linear 4}
html.an #modal.on>.kutija.pk-zlatno{animation:an-prozor .26s cubic-bezier(.2,.9,.3,1.1) backwards,pk-zlato 1.3s ease}
@keyframes an-zavesa{from{background-color:rgba(4,5,5,0)}}
@keyframes an-prozor{from{opacity:0;transform:translateY(-10px) scale(.97)}}

/* karte građe: okret i ulazak jedna za drugom (animira se karta, ne dugme: klik uvek pogađa celu površinu) */
html.an .kt-d .kt-karta{animation:an-karta .45s cubic-bezier(.2,.9,.3,1.12) backwards}
html.an .kt-d .kt-karta.kt-r-retka{animation:an-karta .45s cubic-bezier(.2,.9,.3,1.12) backwards,kt-disi-p 2.8s ease-in-out infinite}
html.an .kt-d .kt-karta.kt-r-legendarna{animation:an-karta .45s cubic-bezier(.2,.9,.3,1.12) backwards,kt-disi 2.2s ease-in-out infinite}
html.an .kt-d:nth-child(2) .kt-karta{animation-delay:.09s}
html.an .kt-d:nth-child(3) .kt-karta{animation-delay:.18s}
html.an .kt-d:nth-child(4) .kt-karta{animation-delay:.27s}
@keyframes an-karta{0%{opacity:0;transform:perspective(1100px) translateY(-26px) rotateY(75deg) scale(.9)}55%{opacity:1}100%{opacity:1;transform:perspective(1100px) translateY(0) rotateY(0) scale(1)}}
/* retka i legendarna: jedan odsjaj preko karte kad se okrene */
html.an .kt-d .kt-karta.kt-r-retka,html.an .kt-d .kt-karta.kt-r-legendarna{position:relative;overflow:hidden}
html.an .kt-d .kt-karta.kt-r-retka::after,html.an .kt-d .kt-karta.kt-r-legendarna::after{content:"";position:absolute;inset:-2px;pointer-events:none;opacity:0;background:linear-gradient(105deg,transparent 35%,rgba(255,240,200,.42) 50%,transparent 65%);animation:an-sjaj .6s ease-out .45s backwards}
html.an .kt-d .kt-karta.kt-r-retka::after{background:linear-gradient(105deg,transparent 35%,rgba(200,228,255,.4) 50%,transparent 65%)}
html.an .kt-d:nth-child(2) .kt-karta::after{animation-delay:.54s}
html.an .kt-d:nth-child(3) .kt-karta::after{animation-delay:.63s}
html.an .kt-d:nth-child(4) .kt-karta::after{animation-delay:.72s}
@keyframes an-sjaj{0%{opacity:1;transform:translateX(-110%)}100%{opacity:1;transform:translateX(110%)}}
/* izabrana se podigne, ostale padnu (jedan igrač: potvrda treptanjem; društvo: kt-izabrana i zaključan red) */
html.an .kt-d.potvrda-pob .kt-karta,html.an .kt-d.kt-izabrana .kt-karta{transform:translateY(-12px) scale(1.03);animation:an-dize .28s cubic-bezier(.2,1.3,.4,1) backwards}
html.an .potvrda-tece>.kt-d.potvrda-gubi .kt-karta,html.an .kt-tri>.kt-d:disabled:not(.kt-izabrana) .kt-karta{transform:scale(.94) rotate(-2deg);animation:an-pada .35s ease-in backwards}
html.an .potvrda-tece>.kt-d.potvrda-gubi:nth-child(odd) .kt-karta,html.an .kt-tri>.kt-d:disabled:not(.kt-izabrana):nth-child(odd) .kt-karta{transform:scale(.94) rotate(2deg)}
@keyframes an-dize{from{transform:none}}
@keyframes an-pada{from{transform:none;opacity:1}}
/* ostali izbori 1 od 3 (poklon, nagrada, relikvija): isto, samo dugme */
html.an .potvrda-tece>.ak-nag-d:not(.kt-d).potvrda-pob{transform:translateY(-6px) scale(1.02)}
html.an .potvrda-tece>.ak-nag-d:not(.kt-d).potvrda-gubi{transform:scale(.96)}

/* ---- 2. dugmad ---- */
html.an .d{transition:transform .12s ease,background-color .12s ease,border-color .12s ease,color .12s ease,opacity .2s,filter .2s}
html.an .d:not(:disabled):not(.kt-d):not(.ak-nag-d):hover{transform:translateY(-1px)}
html.an .d:not(:disabled):not(.kt-d):active{transform:translateY(1px) scale(.97);transition-duration:.05s}
html.an .res,html.an .lik,html.an .clan,html.an .cvor,html.an .km-nazad{transition:transform .12s ease,background-color .12s ease,border-color .12s ease}
html.an .res:active,html.an .lik:active,html.an .clan:not(:disabled):active,html.an .cvor:not(:disabled):active,html.an .km-nazad:active{transform:scale(.95);transition-duration:.05s}
/* sloj za brojeve koji lete (+3, -2) i kupljenu stvar: lokalan, ne ide kroz ogledalo (id mp-) */
#mp-an-sloj{position:fixed;inset:0;pointer-events:none;z-index:60;overflow:hidden}
#mp-an-sloj .an-plovak{position:absolute;transform:translate(-50%,-100%);font:700 16px/1 var(--kucano);white-space:nowrap;text-shadow:0 1px 2px #000,0 0 6px #000}
#mp-an-sloj .an-plovak.plus{color:#a6e07c}
#mp-an-sloj .an-plovak.minus{color:#ff7a6e}
#mp-an-sloj .an-let{position:absolute;font:26px/1 "Noto Color Emoji",sans-serif;filter:drop-shadow(0 3px 6px rgba(0,0,0,.7))}

/* ---- 3. kocka: ishod skoči i legne; uspeh, krit, polovično i pad imaju svoj pokret (samo kad se ishod tek pokaže: bez .tiho) ---- */
html.an .pk-sto.pk-kraj:not(.tiho).pk-uspeh .pk-d20c{animation:an-d20-da .5s cubic-bezier(.3,1.4,.5,1)}
html.an .pk-sto.pk-kraj:not(.tiho).pk-krit .pk-d20c{animation:an-d20-krit .6s cubic-bezier(.3,1.3,.5,1)}
html.an .pk-sto.pk-kraj:not(.tiho).pk-pola .pk-d20c{animation:an-d20-pola .4s ease-out}
html.an .pk-sto.pk-kraj:not(.tiho).pk-fijasko .pk-d20c{animation:an-d20-ne .45s ease-out}
html.an .pk-sto.pk-kraj:not(.tiho) .pk-racun.sve .r4{display:inline-block;animation:an-broj .35s cubic-bezier(.2,1.6,.4,1)}
@keyframes an-d20-da{35%{transform:translateY(-16px) scale(1.14);filter:drop-shadow(0 0 14px rgba(134,220,92,.9))}65%{transform:scale(.95)}}
@keyframes an-d20-krit{40%{transform:translateY(-20px) scale(1.2) rotate(180deg);filter:drop-shadow(0 0 18px rgba(255,210,74,1))}70%{transform:scale(.94) rotate(360deg)}100%{transform:rotate(360deg)}}
@keyframes an-d20-pola{30%{transform:rotate(-6deg) scale(1.05)}60%{transform:rotate(4deg)}}
@keyframes an-d20-ne{20%{transform:rotate(-10deg) translateY(3px);filter:grayscale(.6) brightness(.8)}40%{transform:rotate(8deg) translateY(4px);filter:grayscale(.6) brightness(.8)}60%{transform:rotate(-5deg) translateY(4px)}80%{transform:rotate(2deg) translateY(2px)}}
@keyframes an-broj{0%{transform:scale(1.7);opacity:.3}100%{transform:none;opacity:1}}

/* ---- 4. mapa danju ---- */
/* novo na mestu: „?“, lek za palog (društvo), radio signal: marker blago diše prstenom */
html.an #mapa .mk.upitnik:not(.izabran) .ik{animation:an-mk-novo 2.4s ease-in-out infinite}
html.an #mapa .mk.signal:not(.izabran) .ik{animation:an-mk-signal 2.4s ease-in-out infinite}
html.an #mapa .mk.lek-cilj:not(.izabran) .ik{animation:an-mk-lek 2.4s ease-in-out infinite}
@keyframes an-mk-novo{0%,100%{box-shadow:0 3px 10px rgba(0,0,0,.65),0 0 0 0 rgba(255,210,74,0)}50%{box-shadow:0 3px 10px rgba(0,0,0,.65),0 0 0 9px rgba(255,210,74,.3)}}
@keyframes an-mk-signal{0%,100%{box-shadow:0 0 0 5px rgba(92,192,74,.5),0 0 18px rgba(92,192,74,.8)}50%{box-shadow:0 0 0 11px rgba(92,192,74,.28),0 0 26px rgba(92,192,74,.9)}}
@keyframes an-mk-lek{0%,100%{box-shadow:0 3px 10px rgba(0,0,0,.65),0 0 0 0 rgba(255,59,48,0)}50%{box-shadow:0 3px 10px rgba(0,0,0,.65),0 0 0 10px rgba(255,59,48,.35)}}
/* mesto je danas ponovo otvoreno (js/dan.js stavlja .puls): dva zlatna talasa */
html.an #mapa .mk.puls:not(.izabran):not(.upitnik):not(.signal):not(.lek-cilj) .ik{animation:an-mk-otvor 1.1s ease-out 2}
@keyframes an-mk-otvor{0%{box-shadow:0 3px 10px rgba(0,0,0,.65),0 0 0 0 rgba(255,210,74,.55)}100%{box-shadow:0 3px 10px rgba(0,0,0,.65),0 0 0 16px rgba(255,210,74,0)}}
/* horda drži mesto: mrtvo, bez reakcije na miš */
html.an #mapa .mk.blok{cursor:not-allowed}
html.an #mapa .mk.blok .ik{filter:grayscale(.85) brightness(.72)}
html.an #mapa .mk.blok:hover .ik{transform:none;background:#1c211e}
/* doba dana: sloj iznad ulica, ispod markera (boju i senku menja js/anim-dan.js po satima koji su ostali) */
#mapa>.an-doba{position:absolute;inset:0;pointer-events:none}
/* kartica mesta: slika i ime uđu kad se izabere drugo mesto */
html.an #kartica>.km-hero,html.an #kartica>h2{animation:an-ulaz-l .24s ease-out backwards}
@keyframes an-ulaz-l{from{opacity:0;transform:translateX(-12px)}}
/* potez u društvu: traka gore, lica tima „hodaju“ do mesta pre kocke */
html.an #pt-traka{animation:an-traka .3s cubic-bezier(.2,.9,.3,1.1) backwards}
html.an #pt-traka .pt-lice{animation:an-hod .55s ease-out backwards}
html.an #pt-traka .pt-lice:nth-child(2){animation-delay:.08s}
html.an #pt-traka .pt-lice:nth-child(3){animation-delay:.16s}
html.an #pt-traka .pt-str{display:inline-block;animation:an-strela .3s ease-out .3s backwards}
html.an #pt-traka .pt-str+b{display:inline-block;animation:an-pecat .35s cubic-bezier(.2,1.6,.4,1) .5s backwards}
@keyframes an-traka{from{opacity:0;transform:translateY(-16px)}}
@keyframes an-hod{0%{opacity:0;transform:translateX(-70px)}25%{opacity:1;transform:translateX(-52px) translateY(-6px)}50%{transform:translateX(-34px)}75%{transform:translateX(-14px) translateY(-5px)}100%{transform:none}}
@keyframes an-strela{from{opacity:0;transform:translateX(-10px)}}
@keyframes an-pecat{from{opacity:0;transform:scale(1.6)}}

/* ---- 6. radnja: stvari uđu po kartici (tabu), jedna za drugom ---- */
html.an .rd-mreza>*{animation:an-ulaz .26s ease-out backwards}
html.an .rd-mreza>:nth-child(2){animation-delay:.03s}html.an .rd-mreza>:nth-child(3){animation-delay:.06s}html.an .rd-mreza>:nth-child(4){animation-delay:.09s}
html.an .rd-mreza>:nth-child(5){animation-delay:.12s}html.an .rd-mreza>:nth-child(6){animation-delay:.15s}html.an .rd-mreza>:nth-child(7){animation-delay:.18s}
html.an .rd-mreza>:nth-child(8){animation-delay:.21s}html.an .rd-mreza>:nth-child(9){animation-delay:.24s}html.an .rd-mreza>:nth-child(n+10){animation-delay:.27s}
@keyframes an-ulaz{from{opacity:0;transform:translateY(-6px) scale(.97)}}

/* ---- 7. društvo: tabla posle noći, najava noći, traka čekanja, kraj, predvorje (5. okt uveče) ----
   Gost sve ovo dobija kao DOM kroz ogledalo; nastavi() u js/anim-dan.js drži fazu preko zamene, pa se ulaz ne ponavlja
   (ključ: sidro + potpis, npr. slika lica u redu table ili na pločici). Jednokratno: gotovo za 0,6 s. Beskrajno: samo transform. */
/* kapija za bleskove redova (js/anim-dan.js ekipa: EKIPA, red plana, red palog): JS pušta pokret samo dok je ovo 1 */
html.an{--an-red:1}
/* tabla posle noći (js/mp-tabla.js): redovi uđu jedan za drugim (svi vidljivi za 0,3 s), jedan zlatni odsjaj preko reda MVP-a, red sa krunom skoči */
html.an .tb-tabla tbody tr{animation:an-tb-red .16s ease-out backwards}
html.an .tb-tabla tbody tr:nth-child(2){animation-delay:.035s}
html.an .tb-tabla tbody tr:nth-child(3){animation-delay:.07s}
html.an .tb-tabla tbody tr:nth-child(4){animation-delay:.105s}
html.an .tb-tabla tbody tr:nth-child(n+5){animation-delay:.14s}
@keyframes an-tb-red{from{opacity:0;transform:translateX(14px)}}
html.an .tb-tabla tr.tb-mvp{position:relative}
html.an .tb-tabla tr.tb-mvp::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;background:linear-gradient(100deg,transparent 38%,rgba(255,220,110,.5) 50%,transparent 62%) no-repeat;background-size:250% 100%;animation:an-tb-sjaj .32s ease-out .26s backwards}
@keyframes an-tb-sjaj{0%{opacity:1;background-position:100% 0}100%{opacity:1;background-position:0 0}}
html.an .tb-tabla .tb-mvp-t{animation:an-kruna .26s cubic-bezier(.2,1.6,.4,1) .3s backwards}
@keyframes an-kruna{from{opacity:0;transform:scale(1.5)}}
/* najava noći (js/noc.js): „NOĆ N“ udari (ak-udar iz stil/akt.css), čipovi stanja iskoče jedan za drugim */
html.an .kn-intro .kn-noclabel{animation:ak-udar .4s cubic-bezier(.2,.9,.3,1.2) backwards}
html.an .kn-intro .kn-chips>.kn-chip{animation:an-cip .2s cubic-bezier(.2,1.5,.4,1) .16s backwards}
html.an .kn-intro .kn-chips>.kn-chip:nth-child(2){animation-delay:.21s}
html.an .kn-intro .kn-chips>.kn-chip:nth-child(3){animation-delay:.26s}
html.an .kn-intro .kn-chips>.kn-chip:nth-child(4){animation-delay:.31s}
html.an .kn-intro .kn-chips>.kn-chip:nth-child(n+5){animation-delay:.36s}
@keyframes an-cip{from{opacity:0;transform:scale(.6)}}
/* koga čekamo (js/mp-qol.js #mq-cekamo): lica onih koje čekamo se blago njišu; ispod 10 s sekunde pocrvene i kucaju jednom u sekundi (.an-hitno: js/anim-dan.js) */
html.an #mq-cekamo .mq-ck-l img{animation:an-cek-lice 2.6s ease-in-out infinite}
html.an #mq-cekamo .mq-ck-l:nth-child(odd) img{animation-delay:-1.3s}
@keyframes an-cek-lice{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
html.an #mq-cekamo .mq-ck-s.an-hitno{color:#ff5b4d;animation:an-hitno 1s ease-in-out infinite}
@keyframes an-hitno{0%,45%,100%{transform:scale(1)}18%{transform:scale(1.14)}}
/* karta kraja (js/kraj.js) legne kao pečat, pločice igrača (js/kraj-ekipa.js) uđu jedna za drugom; sve gotovo za 0,55 s (server posle 12 s ide u predvorje) */
html.an .kr-karta{animation:an-kr-pecat .34s cubic-bezier(.2,1.3,.4,1) backwards}
@keyframes an-kr-pecat{from{opacity:0;transform:scale(1.1) rotate(-1.5deg)}}
html.an .ke-ekipa>.ke-pl{animation:an-ke-pl .24s ease-out .12s backwards}
html.an .ke-ekipa>.ke-pl:nth-child(2){animation-delay:.18s}
html.an .ke-ekipa>.ke-pl:nth-child(3){animation-delay:.24s}
html.an .ke-ekipa>.ke-pl:nth-child(n+4){animation-delay:.3s}
@keyframes an-ke-pl{from{opacity:0;transform:translateY(10px)}}
/* predvorje (js/mp-server.js): pločica igrača iskoči kad uđe (ključ je slika lica, pa postojeće ne skaču na svako osvežavanje); slika iza vrlo sporo prilazi */
html.an #srv-sloj.lobi .srv-ig{animation:an-srv-ig .3s cubic-bezier(.2,1.5,.4,1) backwards}
@keyframes an-srv-ig{from{opacity:0;transform:scale(.7)}}
html.an #srv-sloj.lobi>img.art-poz.art-ok{animation:an-srv-poz 40s ease-in-out infinite alternate}
@keyframes an-srv-poz{from{transform:scale(1)}to{transform:scale(1.05)}}

/* ---- 8. mapa danju u društvu: živo platno (js/mapa-zivot.js) tada stoji i ne ide gostima. Domaćin stavlja #mapa[data-vreme] (vreme za noćas),
   sloj .an-vreme i .an-horda uz svako blokirano mesto (js/anim-dan.js mapaMP); ovde samo crtež: ispod markera, bez klika, samo transform. ---- */
html.an #mapa>.an-vreme{display:block;position:absolute;inset:0;overflow:hidden;pointer-events:none}
html.an #mapa[data-vreme=kisa]>.an-vreme::before,html.an #mapa[data-vreme=oluja]>.an-vreme::before,html.an #mapa[data-vreme=oluja]>.an-vreme::after{content:"";position:absolute;left:0;right:0;top:-140px;bottom:0;opacity:.55;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cpath d='M12 8l-3 11M58 40l-3 11M101 18l-3 11M33 77l-3 11M84 96l-3 11M126 64l-3 11M70 122l-3 11M8 116l-3 11' stroke='rgb(175,205,235)' stroke-width='1.2' stroke-linecap='round' stroke-opacity='.6'/%3E%3C/svg%3E");animation:an-kisa .75s linear infinite}
html.an #mapa[data-vreme=oluja]>.an-vreme::after{top:-100px;opacity:.45;background-size:100px 100px;background-position:37px 0;animation:an-kisa2 .5s linear infinite}
@keyframes an-kisa{from{transform:translateY(0)}to{transform:translateY(140px)}}
@keyframes an-kisa2{from{transform:translateY(0)}to{transform:translateY(100px)}}
html.an #mapa[data-vreme=magla]>.an-vreme::before,html.an #mapa[data-vreme=magla]>.an-vreme::after{content:"";position:absolute;left:-10%;top:0;width:75%;height:65%;border-radius:50%;background:radial-gradient(closest-side,rgba(205,210,205,.22),rgba(205,210,205,0));animation:an-magla 38s ease-in-out infinite alternate}
html.an #mapa[data-vreme=magla]>.an-vreme::after{left:35%;top:40%;animation-duration:47s;animation-direction:alternate-reverse}
@keyframes an-magla{from{transform:translateX(-8%)}to{transform:translateX(22%)}}
html.an #mapa[data-vreme=mrak]>.an-vreme{background:rgba(0,0,0,.18)}
/* horda: tri zombija se gegaju oko blokiranog mesta (ime mesta je tada skriveno; sloj je ispod svih markera, pa ne pokriva tuđe ime) */
html.an #mapa>.an-horda{display:block;position:absolute;width:0;height:0;pointer-events:none}
html.an #mapa>.an-horda>i{position:absolute;font:normal clamp(13px,calc(var(--mk,42px)*.3),22px)/1 "Noto Color Emoji",sans-serif;opacity:.9;animation:an-hz 3.3s ease-in-out infinite}
html.an #mapa>.an-horda>i:nth-child(1){left:calc(var(--mk,42px)*-.66);top:calc(var(--mk,42px)*-.12)}
html.an #mapa>.an-horda>i:nth-child(2){left:calc(var(--mk,42px)*.62);top:calc(var(--mk,42px)*.1);animation-name:an-hz2;animation-duration:4.1s}
html.an #mapa>.an-horda>i:nth-child(3){left:calc(var(--mk,42px)*.04);top:calc(var(--mk,42px)*.66);animation-duration:4.8s;animation-delay:-2s}
@keyframes an-hz{0%,100%{transform:translate(-50%,-50%) rotate(-7deg)}25%{transform:translate(-30%,-62%) rotate(5deg)}50%{transform:translate(-14%,-46%) rotate(-4deg)}75%{transform:translate(-36%,-38%) rotate(6deg)}}
@keyframes an-hz2{0%,100%{transform:translate(-50%,-50%) scaleX(-1) rotate(6deg)}30%{transform:translate(-70%,-60%) scaleX(-1) rotate(-5deg)}60%{transform:translate(-84%,-44%) scaleX(-1) rotate(4deg)}80%{transform:translate(-62%,-40%) scaleX(-1) rotate(-6deg)}}
}
/* bez html.an ili uz smanjeno kretanje: slojevi mape u društvu se ne vide (nisu informacija, samo atmosfera) */
#mapa>.an-vreme,#mapa>.an-horda{display:none}
/* gost u društvu: živu mapu crta njegovo platno (js/mapa-zivot.js stavlja html.mz-gost dok radi), pa zamena gore ne sme da dupla kišu i hordu */
html.an.mz-gost #mapa>.an-vreme,html.an.mz-gost #mapa>.an-horda{display:none}
/* gost: „Svanulo je“ broji js/anim-dan.js (zora) svake slike, pa XP traka bez prelaza (inače bi kretala od domaćinove vrednosti iz ogledala) */
body.mp-gost .kn-xp i{transition:none}
