/* Unilearn shared motion — keep in sync with landing page feel */
:root{
  --ease-out:cubic-bezier(.16,1,.3,1);
  --ease-spring:cubic-bezier(.34,1.4,.64,1);
  --ease-soft:cubic-bezier(.22,1,.36,1);
  --motion-fast:.18s;
  --motion-med:.45s;
  --motion-slow:.7s;
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  .ul-reveal,.ul-reveal.rv-left,.ul-reveal.rv-right,.ul-reveal.rv-scale,.ul-reveal.rv-drop,
  .ul-stagger > *,.page-enter > *,.flow-item,.flow-swap{
    opacity:1!important;transform:none!important;transition:none!important;animation:none!important;
  }
}

/* Page shell entrance */
@keyframes ul-rise{
  from{opacity:0;transform:translateY(12px);}
  to{opacity:1;transform:none;}
}
@keyframes ul-fade-up{
  from{opacity:0;transform:translateY(18px);}
  to{opacity:1;transform:none;}
}
@keyframes ul-fade-left{
  from{opacity:0;transform:translateX(-28px);}
  to{opacity:1;transform:none;}
}
@keyframes ul-fade-right{
  from{opacity:0;transform:translateX(28px);}
  to{opacity:1;transform:none;}
}
@keyframes ul-scale-in{
  from{opacity:0;transform:scale(.92);}
  to{opacity:1;transform:none;}
}
@keyframes ul-pop{
  from{opacity:0;transform:scale(.72);}
  to{opacity:1;transform:scale(1);}
}
@keyframes ul-swap-out{
  to{opacity:0;transform:translateY(-10px) scale(.985);}
}
@keyframes ul-swap-in{
  from{opacity:0;transform:translateY(14px) scale(.985);}
  to{opacity:1;transform:none;}
}

.page-enter{
  animation:ul-rise .5s var(--ease-out) both;
}
.page-enter > *.flow-d1{animation-delay:.06s;}
.page-enter > *.flow-d2{animation-delay:.12s;}
.page-enter > *.flow-d3{animation-delay:.18s;}
.page-enter > *.flow-d4{animation-delay:.24s;}
.page-enter > *.flow-d5{animation-delay:.3s;}

/* Scroll / mount reveal — landing language */
.ul-reveal{
  opacity:0;
  transform:translateY(22px);
  transition:opacity .7s ease,transform .75s var(--ease-out);
  will-change:opacity,transform;
}
.ul-reveal.rv-left{transform:translateX(-36px);}
.ul-reveal.rv-right{transform:translateX(36px);}
.ul-reveal.rv-scale{transform:scale(.9);}
.ul-reveal.rv-drop{transform:translateY(-22px);}
.ul-reveal.in,
.ul-reveal.rv-left.in,
.ul-reveal.rv-right.in,
.ul-reveal.rv-scale.in,
.ul-reveal.rv-drop.in{
  opacity:1;
  transform:none;
}
.ul-reveal[data-d="1"]{transition-delay:.08s;}
.ul-reveal[data-d="2"]{transition-delay:.16s;}
.ul-reveal[data-d="3"]{transition-delay:.24s;}
.ul-reveal[data-d="4"]{transition-delay:.32s;}
.ul-reveal[data-d="5"]{transition-delay:.4s;}

/* Stagger children when parent gets .in */
.ul-stagger > *{
  opacity:0;
  transform:translateY(14px);
  transition:opacity .55s ease,transform .6s var(--ease-out);
}
.ul-stagger.in > *:nth-child(1){transition-delay:.02s;}
.ul-stagger.in > *:nth-child(2){transition-delay:.07s;}
.ul-stagger.in > *:nth-child(3){transition-delay:.12s;}
.ul-stagger.in > *:nth-child(4){transition-delay:.17s;}
.ul-stagger.in > *:nth-child(5){transition-delay:.22s;}
.ul-stagger.in > *:nth-child(6){transition-delay:.27s;}
.ul-stagger.in > *:nth-child(7){transition-delay:.32s;}
.ul-stagger.in > *:nth-child(8){transition-delay:.37s;}
.ul-stagger.in > *:nth-child(9){transition-delay:.42s;}
.ul-stagger.in > *:nth-child(10){transition-delay:.47s;}
.ul-stagger.in > *:nth-child(n+11){transition-delay:.5s;}
.ul-stagger.in > *{opacity:1;transform:none;}

/* Dynamic list / card items */
.flow-item{
  animation:ul-fade-up .42s var(--ease-out) both;
}
.flow-item:nth-child(1){animation-delay:.02s;}
.flow-item:nth-child(2){animation-delay:.05s;}
.flow-item:nth-child(3){animation-delay:.08s;}
.flow-item:nth-child(4){animation-delay:.11s;}
.flow-item:nth-child(5){animation-delay:.14s;}
.flow-item:nth-child(6){animation-delay:.17s;}
.flow-item:nth-child(7){animation-delay:.2s;}
.flow-item:nth-child(8){animation-delay:.23s;}
.flow-item:nth-child(9){animation-delay:.26s;}
.flow-item:nth-child(10){animation-delay:.29s;}
.flow-item:nth-child(n+11){animation-delay:.32s;}

.flow-item.leaving{
  animation:ul-swap-out .2s ease forwards;
}

.flow-swap.anim-in{
  animation:ul-swap-in .38s var(--ease-out) both;
}

/* Soft interactive polish */
.flow-lift{
  transition:transform var(--motion-fast) var(--ease-soft),box-shadow .25s ease;
}
.flow-lift:hover{
  transform:translateY(-3px);
  box-shadow:0 10px 28px rgba(20,21,15,.08);
}
.flow-press{
  transition:transform .15s ease,background .15s ease,color .15s ease,box-shadow .15s ease,border-color .15s ease;
}
.flow-press:active{transform:scale(.97);}

/* Progress bars ease */
.flow-bar{
  transition:width .55s var(--ease-soft);
}

/* Nav / pill active state */
.flow-pill{
  transition:background .2s ease,color .2s ease,transform .2s var(--ease-soft),box-shadow .2s ease;
}
.flow-pill:hover{transform:translateY(-1px);}

/* Shared app chrome — same ease language everywhere */
.ul-motion .subj-nav a,
.ul-motion .sub-pills a,
.ul-motion .sub-pills button,
.ul-motion .study-filters button,
.ul-motion .filter button,
.ul-motion .hw-filters button,
.ul-motion .btn,
.ul-motion .ctl,
.ul-motion .rate button,
.ul-motion .para-sugg button,
.ul-motion .chip,
.ul-motion .toc a,
.ul-motion .nav-i,
.ul-motion .tier,
.ul-motion .cc2,
.ul-motion .xc,
.ul-motion .dc,
.ul-motion .hw-item,
.ul-motion .goal-row,
.ul-motion .rank-card,
.ul-motion .ex-item,
.ul-motion .panel,
.ul-motion .auth-card,
.ul-motion .daily-banner{
  transition:transform .22s var(--ease-soft),box-shadow .25s ease,background .2s ease,color .2s ease,border-color .2s ease,opacity .25s ease;
}
.ul-motion .subj-nav a:hover,
.ul-motion .sub-pills a:hover,
.ul-motion .sub-pills button:hover,
.ul-motion .study-filters button:hover,
.ul-motion .filter button:hover,
.ul-motion .toc a:hover{
  transform:translateY(-1px);
}
.ul-motion .btn:active,
.ul-motion .ctl:active,
.ul-motion .rate button:active{
  transform:scale(.97);
}
.ul-motion .cbar i,
.ul-motion .pbar i,
.ul-motion .goal-track i,
.ul-motion .progFill,
.ul-motion #progFill{
  transition:width .55s var(--ease-soft);
}
.ul-motion .main > .ul-reveal,
.ul-motion .main > .topbar,
.ul-motion .main > .para-desk,
.ul-motion .main > .rank-strip,
.ul-motion .main > .home-grid,
.ul-motion .main > .daily-banner,
.ul-motion .main > .subj-nav,
.ul-motion .main > .sub-pills,
.ul-motion .main > .reader{
  /* page children inherit reveal when tagged */
}

/* Message / chat soft entrance */
.ul-motion .msg{
  animation:ul-fade-up .35s var(--ease-out) both;
}
.ul-motion .cal-day,
.ul-motion .topic-row{
  transition:background .18s ease,transform .18s var(--ease-soft);
}
