/* RISE — pacing & motion layer. Geometry intentionally untouched. */
.stage-state{animation:stageIn .75s cubic-bezier(.22,.8,.25,1) both}
.event-card{animation:cardIn 1.35s cubic-bezier(.22,.8,.25,1) both}
.event-card:nth-child(2){animation-delay:.22s}.event-card:nth-child(3){animation-delay:.44s}
.scene-visual{animation:sceneReveal 1.05s ease-out both}
.scene-placeholder{animation:scenePlaceholder 1.35s ease-out .12s both}
.scene-copy{animation:copyRise .95s cubic-bezier(.22,.8,.25,1) .18s both}
.decision-panel{animation:panelRise .8s cubic-bezier(.22,.8,.25,1) .24s both}
.risk-card{animation:riskIn .72s cubic-bezier(.22,.8,.25,1) both}
.risk-card:nth-child(2){animation-delay:.16s}.risk-card:nth-child(3){animation-delay:.32s}
.outcome-panel{animation:outcomeIn .9s cubic-bezier(.16,1,.3,1) both}
.outcome-score{animation:scoreReveal 1s cubic-bezier(.16,1,.3,1) .12s both}
.reward-row span{animation:rewardIn .7s ease-out both}.reward-row span:nth-child(2){animation-delay:.14s}.reward-row span:nth-child(3){animation-delay:.28s}
.continue{animation:buttonIn .65s ease-out .38s both}
.skill-card{animation:skillIn .72s cubic-bezier(.22,.8,.25,1) both}
.skills-grid .skill-card:nth-child(2){animation-delay:.14s}.skills-grid .skill-card:nth-child(3){animation-delay:.28s}
.result-card{animation:resultIn .95s cubic-bezier(.16,1,.3,1) both}
.result-card h1{animation:scoreReveal 1.05s cubic-bezier(.16,1,.3,1) .16s both}

/* Rarity atmosphere: quiet for Rare, stronger for Epic. */
.event-card.rare{position:relative;isolation:isolate;overflow:hidden}
.event-card.rare::before{content:"";position:absolute;inset:-18%;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 50% 105%,rgba(64,112,255,.22),transparent 46%),linear-gradient(90deg,transparent 0%,rgba(82,130,255,.10) 48%,transparent 100%);filter:blur(13px);opacity:.55;animation:rareBreath 4.8s ease-in-out infinite}
.event-card.rare::after{content:"";position:absolute;left:8%;right:8%;bottom:-10px;height:34px;z-index:-1;pointer-events:none;background:radial-gradient(ellipse,rgba(70,120,255,.34),transparent 68%);filter:blur(10px);opacity:.38;animation:rareFlame 3.6s ease-in-out infinite}
.event-card.epic{position:relative;isolation:isolate;overflow:hidden}
.event-card.epic::before{content:"";position:absolute;inset:-22%;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 50% 108%,rgba(191,86,255,.34),transparent 43%),radial-gradient(ellipse at 50% 45%,rgba(163,78,255,.15),transparent 58%);filter:blur(17px);opacity:.8;animation:epicBreath 3.8s ease-in-out infinite}
.event-card.epic::after{content:"";position:absolute;left:5%;right:5%;bottom:-16px;height:58px;z-index:-1;pointer-events:none;background:radial-gradient(ellipse,rgba(194,80,255,.52),transparent 68%);filter:blur(15px);opacity:.58;animation:epicFlame 2.7s ease-in-out infinite}
.event-card.rare:hover::before{opacity:.82}.event-card.rare:hover::after{opacity:.58}
.event-card.epic:hover::before{opacity:1}.event-card.epic:hover::after{opacity:.8}

button:not(:disabled){transition:transform .2s ease,filter .2s ease,box-shadow .2s ease}
button:not(:disabled):active{transform:translateY(1px) scale(.992);filter:brightness(.96)}
.continue:hover,.primary:hover{box-shadow:0 8px 26px rgba(238,240,244,.08);filter:brightness(1.03)}

@keyframes stageIn{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
@keyframes cardIn{from{opacity:0;transform:translateY(18px) scale(.985)}to{opacity:1;transform:none}}
@keyframes sceneReveal{from{opacity:0;transform:scale(1.018)}to{opacity:1;transform:scale(1)}}
@keyframes scenePlaceholder{from{opacity:0;transform:translate(-50%,-47%) scale(.97)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@keyframes copyRise{from{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%,0)}}
@keyframes panelRise{from{opacity:0;transform:translateY(13px)}to{opacity:1;transform:none}}
@keyframes riskIn{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
@keyframes outcomeIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
@keyframes scoreReveal{from{opacity:0;transform:translateY(11px) scale(.965)}to{opacity:1;transform:none}}
@keyframes rewardIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes buttonIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes skillIn{from{opacity:0;transform:translateY(11px)}to{opacity:1;transform:none}}
@keyframes resultIn{from{opacity:0;transform:translateY(16px) scale(.985)}to{opacity:1;transform:none}}
@keyframes rareBreath{0%,100%{transform:translateY(2px) scale(.98);opacity:.48}50%{transform:translateY(-3px) scale(1.015);opacity:.7}}
@keyframes rareFlame{0%,100%{transform:scaleX(.82) translateY(4px);opacity:.28}50%{transform:scaleX(1.05) translateY(-3px);opacity:.5}}
@keyframes epicBreath{0%,100%{transform:translateY(3px) scale(.97);opacity:.68}50%{transform:translateY(-5px) scale(1.025);opacity:.95}}
@keyframes epicFlame{0%,100%{transform:scaleX(.78) translateY(6px) skewX(-1deg);opacity:.4}35%{transform:scaleX(1.04) translateY(-5px) skewX(1deg);opacity:.72}70%{transform:scaleX(.9) translateY(-1px) skewX(-1deg);opacity:.55}}

@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
