/* Inside App - animazioni (file separato: app\motion.css). Si spengono da Impostazioni > Animazioni o con "riduci animazioni" di Windows. */
:root{--ease:cubic-bezier(.2,.7,.2,1);--spring:cubic-bezier(.34,1.4,.4,1)}
@keyframes m-rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes m-fade{from{opacity:0}to{opacity:1}}
@keyframes m-pop{0%{transform:scale(.86);opacity:.4}60%{transform:scale(1.04)}100%{transform:none;opacity:1}}
@keyframes m-tick{0%{transform:scale(.4) rotate(-20deg)}70%{transform:scale(1.18)}100%{transform:none}}
@keyframes m-pulse{0%,100%{opacity:1}50%{opacity:.35}}
@keyframes m-glow{0%,100%{box-shadow:0 0 0 2px var(--gold),0 0 0 0 rgba(201,162,75,.0)}50%{box-shadow:0 0 0 2px var(--gold2),0 0 0 7px rgba(201,162,75,.28)}}
@keyframes m-dialog{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}
@keyframes m-backdrop{from{opacity:0}to{opacity:1}}
@keyframes m-toast{from{opacity:0;transform:translate(-50%,16px)}to{opacity:1;transform:translate(-50%,0)}}
@keyframes m-flip{0%{transform:translateY(-6px);opacity:0;filter:blur(2px)}100%{transform:none;opacity:1;filter:none}}
@keyframes m-shimmer{from{background-position:-200% 0}to{background-position:200% 0}}
@keyframes m-dot{0%{transform:scale(1)}50%{transform:scale(1.5)}100%{transform:scale(1)}}
/* cambio sezione */
.v-in{animation:m-rise .42s var(--ease) both}
.hero.v-in{animation:m-flip .4s var(--ease) both}
/* indicatore dei tab che scorre */
.tabs{position:relative}
.tab{border-bottom-color:transparent!important}
.tab-ind{position:absolute;bottom:-1px;height:3px;background:var(--gold);transition:left .38s var(--spring),width .38s var(--spring);pointer-events:none}
/* pulsanti */
.btn,.chip,.tg,.lnk,.chk,.tab,.prow,.ccard,.dc,.lfc{transition:transform .14s var(--ease),border-color .18s,background .18s,color .18s,box-shadow .18s}
.btn:active,.chip:active,.lnk:active,.tab:active{transform:scale(.96)}
.btn.gold:hover{box-shadow:0 6px 18px -8px rgba(201,162,75,.7)}
/* stato salvataggio */
.status .dot{transition:background .25s}
.status.saving .dot{animation:m-dot .9s var(--ease) infinite}
/* task */
.card.m-in{animation:m-rise .45s var(--ease) both;animation-delay:calc(var(--i,0)*40ms)}
.card{transition:border-color .18s,transform .18s var(--ease),opacity .3s}
.card:hover{transform:translateY(-2px)}
.card.done .chk::after{animation:m-tick .45s var(--spring) both}
.card.m-out{opacity:0;transform:scale(.96);transition:opacity .22s,transform .22s}
.thumbs img{transition:transform .18s var(--ease)}.thumbs img:hover{transform:scale(1.06)}
/* PED */
.ccard.m-in,.lfc.m-in{animation:m-rise .45s var(--ease) both;animation-delay:calc(var(--i,0)*35ms)}
.tile{transition:transform .22s var(--ease),outline-color .18s,filter .2s}
.tile.m-pop{animation:m-pop .5s var(--spring) both}
.tile.m-swap{animation:m-pop .4s var(--spring) both}
.tile:hover{transform:scale(1.025);z-index:2}
.tile.dragging{opacity:.5;transform:scale(.95)}
.tile.over{transform:scale(1.06);z-index:3}
.pt{transition:transform .18s var(--ease),outline-color .18s,opacity .25s}
.pt:hover{transform:translateY(-2px)}
.pt.sel{animation:m-glow 1.3s ease-in-out infinite}
.pt img,.tile img,.rp img,.rdp img{opacity:0;transition:opacity .35s var(--ease)}
.pt img.ld,.tile img.ld,.rp img.ld{opacity:1}
.tile.broken img{opacity:0!important}
.pt.m-in{animation:m-fade .4s var(--ease) both;animation-delay:calc(var(--i,0)*12ms)}
.ph-av{transition:transform .25s var(--spring)}.ph-av:hover{transform:scale(1.06)}
.phone{transition:transform .35s var(--ease)}
.feed.picking .tile.empty{animation:m-pulse 1.6s ease-in-out infinite}
.wn{animation:m-pop .4s var(--spring) both}
/* calendario */
.cal.m-month{animation:m-rise .38s var(--ease) both}
.day{transition:background .18s,outline-color .18s}
.day.sel{animation:m-fade .25s var(--ease)}
.ev{transition:transform .16s var(--ease),filter .16s}
.ev:hover{transform:translateX(2px)}
.day.over{transform:scale(1.02)}
/* appunti */
.nt{transition:background .18s,border-color .18s,transform .16s var(--ease)}
.nt:hover{transform:translateX(2px)}
.nfoot.m-saved{animation:m-flip .35s var(--ease) both;color:var(--green)}
/* programmati */
.prow .cb{transition:background .18s,border-color .18s,transform .18s var(--spring)}
.prow.m-pop .cb{animation:m-tick .45s var(--spring) both}
.prow.m-in{animation:m-rise .4s var(--ease) both;animation-delay:calc(var(--i,0)*30ms)}
/* finestre e avvisi */
dialog[open]{animation:m-dialog .32s var(--ease) both}
dialog[open]::backdrop{animation:m-backdrop .32s var(--ease) both}
.toast{animation:m-toast .35s var(--spring) both}
.big.m-flip{animation:m-flip .4s var(--ease) both}
.big{display:inline-block}
/* caricamento libreria */
.libhint.m-wait{background:linear-gradient(90deg,transparent 0,rgba(201,162,75,.12) 50%,transparent 100%);background-size:200% 100%;animation:m-shimmer 1.2s linear infinite}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
