/* Motion is brief and attached to navigation, discovery and direct actions. */
.btn,.journey-cta,.theme-toggle,.module-switch button,.news-scenario-option{position:relative;isolation:isolate;overflow:hidden}
.tap-wave{position:absolute;pointer-events:none;background:currentColor;opacity:0;border-radius:50%;transform:scale(0);animation:tap-response 420ms ease-out;z-index:3}
@keyframes tap-response{0%{opacity:.16;transform:scale(0)}100%{opacity:0;transform:scale(1)}}
.motion-page>.heading,.motion-page>.journey-heading,.motion-page>.continue-card,.motion-page>.journal-heading{animation:page-arrive 240ms cubic-bezier(.2,.7,.2,1) both}
@keyframes page-arrive{from{opacity:.5;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.motion-wait{opacity:0;translate:0 10px}.motion-revealed{animation:card-reveal 280ms cubic-bezier(.2,.7,.2,1) var(--reveal-delay,0ms) backwards}
@keyframes card-reveal{from{opacity:0;translate:0 10px}to{opacity:1;translate:0 0}}
/* Keep focused controls visible even before the observer has fired. */
.motion-wait:focus-within{opacity:1;translate:none}
details[open]>.news-event-body,details[open]>.news-daily-body,details[open]>.check-help-body,details[open]>.practice-own p{animation:disclosure-arrive 200ms ease-out}
@keyframes disclosure-arrive{from{opacity:.4;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
.progress-line>span{transition:width 240ms ease-out}.nav a{transition:background 180ms ease,color 180ms ease,box-shadow 180ms ease}.nav a.active svg{animation:nav-settle 220ms ease-out}
@keyframes nav-settle{from{transform:scale(.85)}to{transform:scale(1)}}
@media(hover:hover) and (pointer:fine){.analysis-card:hover,.study-card:hover,.practice-tile:hover{transform:translateY(-4px)}.journal-trade:hover{transform:translateX(3px)}.news-day:hover:not(.selected){transform:translateY(-2px)}.continue-card .journey-cta:hover .cta-arrow{transform:translateX(2px)}.theme-toggle:hover{transform:translateY(-1px)}}
.journal-trade,.news-day{transition:transform 180ms ease,border-color 180ms ease,background 180ms ease}.btn:active,.theme-toggle:active{transform:scale(.98)}
@media(prefers-reduced-motion:reduce){.motion-wait{opacity:1;translate:none}.motion-revealed,.motion-page>* ,.nav a.active svg,.tap-wave,details[open]>*{animation:none!important}.progress-line>span,.nav a,.journal-trade,.news-day,.btn,.journey-cta,.theme-toggle{transition:none!important}.analysis-card:hover,.study-card:hover,.practice-tile:hover,.journal-trade:hover,.news-day:hover,.theme-toggle:hover,.btn:active,.theme-toggle:active{transform:none}}
