/* One motion language for Strike and Velocity. Palette comes from --lm-* only. */
html body.lumea-sport :is(.strike-button,.comp-primary,.games-primary,.inv-primary,.market-primary,.player-primary,[data-press=action],.tour-result-copy button,.primary-button,.primary-btn,[data-slot=button][data-variant=default]){
  position:relative;overflow:hidden;isolation:isolate;
  transition:translate .28s var(--lm-ease),background-color .18s,border-color .18s,color .18s;
}
html body.lumea-sport :is(.strike-button,.comp-primary,.games-primary,.inv-primary,.market-primary,.player-primary,[data-press=action],.tour-result-copy button,.primary-button,.primary-btn,[data-slot=button][data-variant=default])::after{
  content:'';position:absolute;inset:-50% auto -50% -60%;width:32%;background:currentColor;
  opacity:0;pointer-events:none;transform:skewX(-24deg);
}
html body.lumea-sport :is([data-press=action],.strike-button,.comp-primary,.games-primary,.inv-primary,.market-primary,.player-primary,.tour-result-copy button)>svg{
  transition:translate .28s var(--lm-ease),rotate .28s var(--lm-ease);
}
@media(hover:hover){
  html body.lumea-sport :is(button:not(:disabled),summary,.platform-nav a):hover{translate:0 0}
  html body.lumea-sport :is([data-press=action],.strike-button,.comp-primary,.games-primary,.inv-primary,.market-primary,.player-primary,.tour-result-copy button):hover:not(:disabled){translate:2px -4px}
  html body.lumea-sport .tour-demo-buttons button:hover{transform:none;border-color:var(--lm-accent-ink)}
  html body.lumea-sport :is([data-press=action],.strike-button,.comp-primary,.games-primary,.inv-primary,.market-primary,.player-primary,.tour-result-copy button):hover:not(:disabled)>svg{translate:4px -2px;rotate:-7deg}
  html body.lumea-sport :is(.strike-button,.comp-primary,.games-primary,.inv-primary,.market-primary,.player-primary,[data-press=action],.tour-result-copy button,.primary-button,.primary-btn,[data-slot=button][data-variant=default]):hover:not(:disabled)::after{animation:lumea-button-sweep .48s var(--lm-ease) both}
}
html body.lumea-sport :is(.strike-button,.comp-primary,.games-primary,.inv-primary,.market-primary,.player-primary,[data-press=action],.tour-result-copy button,.primary-button,.primary-btn,[data-slot=button][data-variant=default]):focus-visible::after{animation:lumea-button-sweep .48s var(--lm-ease) both}
html body.lumea-sport :is(button:not(:disabled),a[class*=primary],.strike-button):active{translate:0 2px}
@keyframes lumea-button-sweep{0%{opacity:0;transform:translateX(0) skewX(-24deg)}15%{opacity:.2}80%{opacity:.14}100%{opacity:0;transform:translateX(600%) skewX(-24deg)}}

/* Small impact at the edge of a pressed action. Never captures input. */
.lumea-click-impact{position:fixed;width:0;height:0;pointer-events:none;z-index:80;color:var(--lm-accent-ink)}
.lumea-click-impact i{position:absolute;left:0;top:0;width:4px;height:17px;background:currentColor;--angle:calc(-65deg + var(--i)*48deg);opacity:0;animation:lumea-click-shard .46s cubic-bezier(.12,.8,.2,1) both}
@keyframes lumea-click-shard{0%{opacity:0;transform:rotate(var(--angle)) translateY(-4px) scaleY(.5)}20%{opacity:1}100%{opacity:0;transform:rotate(var(--angle)) translateY(-49px) scaleY(.3)}}

/* Native navigation keeps links, history, focus and form submission immediate. */
::view-transition{background:var(--lm-bg)}
::view-transition-image-pair(root){overflow:clip}
::view-transition-old(root){animation:lumea-strike-page-out .24s cubic-bezier(.5,0,.8,.4) both}
::view-transition-new(root){animation:lumea-strike-page-in .48s cubic-bezier(.16,1,.3,1) both;mix-blend-mode:normal}
@keyframes lumea-strike-page-out{to{opacity:0;transform:translate(-5%,-18px) skewX(-3deg) scale(.98)}}
@keyframes lumea-strike-page-in{0%{opacity:0;transform:translate(10%,24px) skewX(-4deg) scale(.98)}40%{opacity:1}100%{opacity:1;transform:translate(0,0) skewX(0) scale(1)}}

/* A point-winning strike: approach, contact, score, then the result settles. */
html .tour-result-win{animation:lumea-win-contact .62s .24s var(--lm-ease) both;transform-origin:78% 55%}
html .tour-result-win .tour-result-copy{position:relative;z-index:1}
html .tour-result-win h2{animation:lumea-win-title .8s .2s var(--lm-ease) both}
html .tour-result-win .tour-result-score{animation:none;isolation:isolate}
html .tour-result-win .tour-result-score>span{animation:lumea-win-trophy .8s .36s var(--lm-ease) both}
html .tour-result-win .tour-result-score>strong{white-space:nowrap;animation:lumea-win-score .76s .28s var(--lm-ease) both}
html .tour-result-win .tour-score-digit{display:inline-block;animation:lumea-win-digit .68s .32s var(--lm-ease) both}
html .tour-result-win .tour-score-digit:last-child{animation-delay:.4s}
html .tour-result-win .tour-result-decoration i{left:80%;top:55%;width:5px;height:28px;animation:lumea-win-shards .95s .34s both}
.tour-win-fx{position:absolute;left:50%;top:55%;width:0;height:0;z-index:-1;pointer-events:none;color:var(--lm-on-accent)}
.tour-win-ball{position:absolute;width:30px;height:30px;left:-15px;top:-15px;border-radius:50%;background:var(--lm-on-accent);opacity:0;overflow:hidden;animation:lumea-win-ball .52s cubic-bezier(.35,0,.7,1) both}
.tour-win-ball:after{content:'';position:absolute;inset:-5px 9px;border:2px solid var(--lm-accent);border-radius:50%;transform:rotate(30deg)}
.tour-win-ring{position:absolute;left:-48px;top:-48px;width:96px;height:96px;border:3px solid currentColor;opacity:0;animation:lumea-win-ring .85s .32s ease-out both}
.tour-win-ring-second{animation-delay:.42s;rotate:45deg;border-width:2px}
.tour-win-streak{position:absolute;left:-70px;top:calc(-48px + var(--i)*33px);width:140px;height:6px;background:currentColor;opacity:0;animation:lumea-win-streak .62s calc(.16s + var(--i)*.035s) var(--lm-ease) both}
@keyframes lumea-win-contact{0%{transform:scale(.975) rotate(-.5deg)}28%{transform:scale(1.012) rotate(.2deg)}60%{transform:scale(.998)}100%{transform:none}}
@keyframes lumea-win-title{0%{opacity:0;transform:translateX(-64px) skewX(-12deg)}45%{opacity:1}70%{transform:translateX(5px) skewX(1deg)}100%{transform:none}}
@keyframes lumea-win-score{0%{opacity:0;transform:scale(1.65) rotate(-9deg)}35%{opacity:1;transform:scale(.92) rotate(2deg)}65%{transform:scale(1.06) rotate(-1deg)}100%{transform:none}}
@keyframes lumea-win-digit{0%{transform:translateY(26px)}65%{transform:translateY(-5px)}100%{transform:translateY(0)}}
@keyframes lumea-win-trophy{0%{opacity:0;transform:translateY(18px) rotate(-18deg)}55%{opacity:1;transform:translateY(-6px) rotate(8deg)}100%{transform:none}}
@keyframes lumea-win-ball{0%{opacity:0;transform:translate(-420px,95px) scale(.5) rotate(-280deg)}12%{opacity:1}65%{opacity:1;transform:translate(0,0) scale(1.2) rotate(0)}85%,100%{opacity:0;transform:translate(12px,-5px) scale(.3) rotate(50deg)}}
@keyframes lumea-win-ring{0%{opacity:0;transform:scale(.25) rotate(-18deg)}15%{opacity:.45}100%{opacity:0;transform:scale(2.6) rotate(12deg)}}
@keyframes lumea-win-shards{0%{opacity:0;transform:rotate(var(--angle)) translateY(25px) scaleY(.5)}12%{opacity:.55}100%{opacity:0;transform:rotate(var(--angle)) translateY(245px) scaleY(.4)}}
@keyframes lumea-win-streak{0%{opacity:0;transform:translateX(-220px) skewX(-20deg) scaleX(.3)}30%{opacity:.25}100%{opacity:0;transform:translateX(190px) skewX(-20deg) scaleX(1.3)}}
@media(max-width:500px){
  html .tour-result-win{transform-origin:75% 78%}
  html .tour-result-win .tour-result-decoration i{top:79%;left:73%}
  .tour-win-fx{left:70%}
}
/* Keep completed results readable with either motion preference switched off. */
html[data-lumea-motion=reduced] :is(.lumea-click-impact,.tour-win-fx,.tour-result-decoration),.tour-no-motion .tour-win-fx{display:none}
html[data-lumea-motion=reduced] body.lumea-sport :is(button,a,summary,button>svg,a>svg),.tour-no-motion :is(button,a,summary,button>svg,a>svg){translate:none!important;rotate:none!important}
@media(prefers-reduced-motion:reduce){
  :is(.lumea-click-impact,.tour-win-fx,.tour-result-decoration){display:none}
  html body.lumea-sport :is(button,a,summary,button>svg,a>svg){translate:none!important;rotate:none!important}
  ::view-transition-old(root),::view-transition-new(root){animation:none!important}
}

/* Routine selection stays still; only primary actions carry the strong gesture. */
html body.lumea-sport :is([data-press=quiet],[role=tab],.tour-view-switch button,.tour-round-tabs button):is(:hover,:active){translate:none}
html body.lumea-sport :is([data-press=quiet],[role=tab])::after{animation:none!important;opacity:0!important}
html body.lumea-sport :is([data-press=quiet],[role=tab])>svg{translate:none!important;rotate:none!important}
