/* App : défi ninja (kunai), repas, réflexe à cibles, logo de marque du quiz, carte animée */
.tq-ninja .tq-qy{animation:tqnThrow 2.4s ease-in-out infinite}
@keyframes tqnThrow{0%,100%{transform:translate(0,0) rotate(0)}22%{transform:translate(-6px,2px) rotate(-8deg)}32%{transform:translate(10px,-6px) rotate(9deg)}45%{transform:translate(4px,0) rotate(2deg)}}
.tqn-tg{position:absolute;right:16px;top:44px;width:64px;height:64px;border-radius:50%;background:radial-gradient(circle,#E8483B 0 16%,#fff 17% 33%,#E8483B 34% 50%,#fff 51% 67%,#E8483B 68% 84%,#fff 85%);box-shadow:0 0 0 3px #fff,0 10px 18px rgba(30,40,120,.25);animation:tqnTg 2.4s ease-in-out infinite;z-index:2}
.tqn-tg>i{position:absolute;left:50%;bottom:-30px;width:6px;height:30px;margin-left:-3px;border-radius:3px;background:#8E6A4A;z-index:-1}
@keyframes tqnTg{0%,44%,70%,100%{transform:rotate(0)}48%{transform:rotate(-7deg) translateX(3px)}54%{transform:rotate(5deg)}60%{transform:rotate(-2deg)}}
.tqn-k{position:absolute;left:74px;top:96px;width:64px;height:16px;z-index:3;opacity:0;filter:drop-shadow(0 4px 4px rgba(30,20,60,.3));animation:tqnK 2.4s cubic-bezier(.3,.6,.4,1) infinite}
@keyframes tqnK{0%,28%{opacity:0;transform:translate(0,0) rotate(-20deg)}31%{opacity:1;transform:translate(6px,-6px) rotate(-16deg)}38%{transform:translate(26px,-34px) rotate(-14deg)}45%{opacity:1;transform:translate(50px,-28px) rotate(-8deg)}48%{transform:translate(48px,-28px) rotate(-10deg)}84%{opacity:1;transform:translate(48px,-28px) rotate(-10deg)}92%,100%{opacity:0;transform:translate(48px,-20px) rotate(-10deg)}}
.tqn-pop{position:absolute;right:22px;top:16px;padding:4px 10px;border-radius:99px;background:linear-gradient(135deg,#FF6B2C,#FF2E93);color:#fff;font-size:13px;font-weight:900;opacity:0;z-index:4;animation:tqnPop 2.4s ease-out infinite}
@keyframes tqnPop{0%,46%{opacity:0;transform:translateY(8px) scale(.8)}52%{opacity:1;transform:translateY(0) scale(1.08)}58%{transform:scale(1)}80%{opacity:1}92%,100%{opacity:0;transform:translateY(-8px)}}

.tq-meal{position:absolute;left:50%;bottom:4px;width:186px;height:72px;translate:-50% 0;z-index:2;filter:drop-shadow(0 8px 10px rgba(80,30,60,.18))}
.tq-resto .tq-qy{bottom:46px;height:108px}

/* Réflexe : des cibles qui apparaissent */
.tg-ref .tgr-t{width:44px;height:44px;margin:-22px 0 0 -22px;background:radial-gradient(circle,#fff 0 14%,#F43F5E 15% 36%,#fff 37% 58%,#F43F5E 59% 80%,#FFE4E8 81%)!important;box-shadow:0 0 0 3px rgba(255,255,255,.9),0 8px 18px rgba(244,63,94,.45)}
.tg-ref .tgr-x{position:absolute;width:30px;height:30px;margin:-15px 0 0 -15px;border-radius:50%;background:radial-gradient(circle,#fff 0 18%,#A78BFA 19% 45%,#fff 46% 70%,#A78BFA 71%);opacity:0;transform:scale(0);transition:transform .2s cubic-bezier(.3,1.6,.5,1),opacity .2s}
.tg-ref .tgr-x.on{opacity:.9;transform:scale(1)}
.tg-ref .tgr-x.hit{opacity:0;transform:scale(1.6);transition:transform .25s,opacity .25s}
.tg-ref .tgr-sp{position:absolute;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:#FDE047;pointer-events:none;animation:tgrSp .5s ease-out forwards}
@keyframes tgrSp{to{transform:translate(var(--x),var(--y)) scale(.3);opacity:0}}
.tg-ref .tgr-cur{transition:left .14s ease-out,top .14s ease-out}

/* Quiz : logo de marque (marque fictive) */
.tgq-logo{position:absolute;left:14px;top:34px;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(140deg,#FF7A3D,#FF2E93);box-shadow:0 6px 12px -4px rgba(255,46,147,.5);z-index:2}
.tgq-logo svg{width:22px;height:22px}
.tg-quiz .tgq-q{left:56px!important}
.tg-quiz .tgq-q{top:36px!important}

/* Carte : animée */
.qy-media-map{position:relative;overflow:hidden}
.qy-media-map img{animation:qmKb 14s ease-in-out infinite alternate;transform-origin:50% 55%}
@keyframes qmKb{from{transform:scale(1)}to{transform:scale(1.06) translate(-1%,-1%)}}
.qm-fx{position:absolute;inset:0;pointer-events:none;animation:qmKb 14s ease-in-out infinite alternate;transform-origin:50% 55%}
.qm-r{position:absolute;width:15%;aspect-ratio:2/1;translate:-50% -50%;border-radius:50%;border:2px solid var(--c);opacity:0;animation:qmR 2.6s ease-out infinite;animation-delay:var(--d)}
@keyframes qmR{0%{opacity:.9;transform:scale(.4)}100%{opacity:0;transform:scale(1.9)}}
.qm-b{position:absolute;translate:-50% -100%;padding:.35em .7em;border-radius:99px;background:#fff;color:var(--c);font:800 clamp(10px,1.2vw,13px)/1 Inter,system-ui,sans-serif;white-space:nowrap;box-shadow:0 8px 16px -6px rgba(60,20,120,.35);opacity:0;animation:qmB 8s ease-out infinite;animation-delay:var(--d)}
@keyframes qmB{0%{opacity:0;transform:translateY(10px) scale(.8)}4%{opacity:1;transform:translateY(0) scale(1.05)}6%{transform:scale(1)}18%{opacity:1;transform:translateY(-6px)}24%,100%{opacity:0;transform:translateY(-14px)}}
.qm-q{position:absolute;width:12%;aspect-ratio:1;translate:-50% -50%;border-radius:50%;background:radial-gradient(closest-side,rgba(168,85,247,.35),transparent);animation:qmQ 2s ease-in-out infinite}
@keyframes qmQ{50%{transform:scale(1.35);opacity:.5}}
@media(prefers-reduced-motion:reduce){.qy-media-map img,.qm-fx,.qm-r,.qm-b,.qm-q,.tqn-k,.tqn-tg,.tqn-pop,.tq-ninja .tq-qy{animation:none!important}.tqn-k{opacity:1;transform:translate(48px,-28px) rotate(-10deg)}}
