/* Rovix 1.2.1 — Motion polish. Purely presentational; no account data is touched. */
:root{--rv-motion-ease:cubic-bezier(.22,1,.36,1);--rv-motion-soft:cubic-bezier(.25,.8,.25,1);--rv-motion-fast:220ms;--rv-motion-normal:430ms;--rv-motion-slow:680ms}
@keyframes rvPolishArrive{0%{opacity:0;transform:translate3d(0,14px,0) scale(.99)}100%{opacity:1;transform:translate3d(0,0,0) scale(1)}}
@keyframes rvPolishFade{from{opacity:0;transform:translate3d(0,8px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes rvPolishBrand{from{opacity:0;transform:translate3d(0,14px,0) scale(.965)}to{opacity:1;transform:translate3d(0,0,0) scale(1)}}
@keyframes rvPolishGlow{0%,100%{opacity:.35;transform:translate3d(0,0,0)}50%{opacity:.6;transform:translate3d(0,-5px,0)}}
/* Smooth page openings: small stagger, no hidden states that can trap content. */
@media(prefers-reduced-motion:no-preference){
 .screen.active{animation:rvPolishFade 480ms var(--rv-motion-ease) both!important}
 .screen.active>.headerrow,.screen.active>.facultyhero,.screen.active>.rovix-home,.screen.active>.card,.screen.active>.fin-monthbar,.screen.active>.doc-hero{animation:rvPolishArrive 620ms var(--rv-motion-ease) both!important}
 .screen.active .fin-kpi,.screen.active .fin-visual,.screen.active .fin-panel,.screen.active .rovix-area,.screen.active .rovix-shortcut,.screen.active .rovix-monthcard,.screen.active .doc-stat,.screen.active .doc-item{animation:rvPolishArrive 660ms var(--rv-motion-ease) both!important}
 .screen.active .rovix-shortcut:nth-child(1),.screen.active .fin-kpi:nth-child(1),.screen.active .rovix-area:nth-child(1){animation-delay:25ms!important}
 .screen.active .rovix-shortcut:nth-child(2),.screen.active .fin-kpi:nth-child(2),.screen.active .rovix-area:nth-child(2){animation-delay:75ms!important}
 .screen.active .rovix-shortcut:nth-child(3),.screen.active .fin-kpi:nth-child(3),.screen.active .rovix-area:nth-child(3){animation-delay:130ms!important}
 .screen.active .rovix-shortcut:nth-child(4),.screen.active .fin-kpi:nth-child(4),.screen.active .rovix-area:nth-child(4){animation-delay:180ms!important}
 .rovix-splash-content{animation:rvPolishBrand 950ms var(--rv-motion-ease) both!important}
 #authGate:not([hidden]) .authCard{animation:rvPolishBrand 830ms var(--rv-motion-ease) both}
 #authGate:not([hidden]) .authBrand{animation:rvPolishFade 680ms var(--rv-motion-ease) 100ms both}
 #authGate:not([hidden]) #authForm{animation:rvPolishFade 680ms var(--rv-motion-ease) 190ms both}
 .rovix-hero-inner{animation:rvPolishBrand 900ms var(--rv-motion-ease) both}
 /* Motion on a faint highlight, never on the actual wave geometry. */
 .rovix-hero::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;background:radial-gradient(ellipse 42% 35% at 73% 46%,rgba(247,246,252,.20),transparent 80%);animation:rvPolishGlow 12s ease-in-out infinite}
 .modal,.doc-dialog-panel,.rovix-profilemenu{animation:rvPolishArrive 380ms var(--rv-motion-ease) both!important}
}
/* Buttons and controls: precise, tactile and gentle. */
.button,.iconbtn,.navbutton,.bottomnav button,.rovix-shortcut,.rovix-area,.rovix-monthcard,.fin-tiny,.doc-actions button,#authGate .authSubmit{
 transition-property:transform,box-shadow,background-color,border-color,color,opacity,filter!important;
 transition-duration:var(--rv-motion-normal),var(--rv-motion-normal),300ms,300ms,300ms,300ms,300ms!important;
 transition-timing-function:var(--rv-motion-ease)!important;
 -webkit-tap-highlight-color:transparent;
}
.card,.doc-item,.fin-kpi,.fin-panel,.fin-visual,.rovix-monthcard{transition:box-shadow 450ms var(--rv-motion-ease),border-color 300ms ease,background-color 300ms ease!important}
button:active:not(:disabled),.button:active:not(:disabled),.iconbtn:active:not(:disabled){transform:translate3d(0,1px,0) scale(.975)!important;transition-duration:120ms!important}
input,textarea,select{transition:box-shadow 280ms ease,border-color 280ms ease,background-color 280ms ease!important}
input:focus-visible,textarea:focus-visible,select:focus-visible{box-shadow:0 0 0 4px rgba(125,132,148,.13)}
.rovix-splash.is-done{transition:opacity 650ms ease,visibility 650ms ease!important}
.fin-progress>div,.fin-smallprogress>div{transition:width 950ms var(--rv-motion-ease)!important}
.fin-ringbox circle{transition:stroke-dasharray 950ms var(--rv-motion-ease),stroke-dashoffset 950ms var(--rv-motion-ease)!important}
@media(hover:hover) and (pointer:fine){
 .button:hover:not(:disabled),.iconbtn:hover:not(:disabled),.fin-tiny:hover:not(:disabled){transform:translate3d(0,-2px,0);box-shadow:0 8px 20px rgba(28,31,39,.10)}
 .rovix-shortcut:hover,.rovix-area:hover,.rovix-monthcard:hover{transform:translate3d(0,-4px,0)!important;box-shadow:0 16px 34px rgba(28,31,39,.11)!important}
 .card:not(.rovix-monthcard):hover{box-shadow:0 11px 30px rgba(28,31,39,.07)}
 .navbutton:hover:not(:disabled){transform:translate3d(2px,0,0)}
}
@media(max-width:760px){
 .screen.active .fin-panel,.screen.active .fin-visual,.screen.active .doc-item{animation-duration:500ms!important}
 .card,.rovix-area,.rovix-shortcut{transition-duration:300ms!important}
}
@media(prefers-reduced-motion:reduce){
 *,*::before,*::after{animation:none!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
 .rovix-hero::after{animation:none!important}
}
