/* ASTA 1.6 · motion system based on the approved web animation policy.
 * Motion never owns color. It only consumes the existing ASTA legacy palette. */
:root{
  --asta-ease-out:cubic-bezier(0.23,1,0.32,1);
  --asta-ease-in-out:cubic-bezier(0.77,0,0.175,1);
  --asta-ease-drawer:cubic-bezier(0.32,0.72,0,1);
  --asta-motion-press:140ms;
  --asta-motion-fast:160ms;
  --asta-motion-ui:200ms;
  --asta-motion-panel:250ms;
  --asta-motion-drawer:280ms;
  --asta-ease:var(--asta-ease-out);
  --aa-ease:var(--asta-ease-out);
}

/* Physical press feedback. Frequent, so intentionally tiny. */
.asta-button,
.asta-copy-button,
.asta-resource-action,
.asta-home-resume__action,
.asta-icon-button,
.asta-syllabus-toggle,
.asta-syllabus__close,
.asta-admin-primary,
.asta-admin-secondary,
.asta-admin-ghost,
.asta-admin-danger,
.asta-admin-command,
.asta-admin-search button,
.asta-admin-cover button,
.asta-builder-library-open,
.asta-builder-library-pagination button,
.asta-builder-library-filters button,
[data-copy-value]{
  transition:
    transform var(--asta-motion-press) var(--asta-ease-out),
    opacity var(--asta-motion-fast) var(--asta-ease-out),
    border-color var(--asta-motion-fast) ease,
    color var(--asta-motion-fast) ease,
    background-color var(--asta-motion-fast) ease;
}
.asta-button:active,
.asta-copy-button:active,
.asta-resource-action:active,
.asta-home-resume__action:active,
.asta-icon-button:active,
.asta-syllabus-toggle:active,
.asta-syllabus__close:active,
.asta-admin-primary:active,
.asta-admin-secondary:active,
.asta-admin-ghost:active,
.asta-admin-danger:active,
.asta-admin-command:active,
.asta-admin-search button:active,
.asta-admin-cover button:active,
.asta-builder-library-open:active,
.asta-builder-library-pagination button:active,
.asta-builder-library-filters button:active,
[data-copy-value]:active{
  transform:scale(.97)!important;
}

/* State indication after clipboard writes. No movement; the press already supplied feedback. */
[data-copy-value].is-copied{
  opacity:.82;
}

/* Card motion is disabled by default and enabled only for true hover pointers below. */
.asta-course-card,
.asta-quick-card,
.asta-resource-library-card,
.asta-license-card,
.asta-support-action,
.asta-admin-stats article,
.asta-admin-panel{
  transition:
    transform var(--asta-motion-ui) var(--asta-ease-out),
    border-color var(--asta-motion-ui) ease;
}
.asta-course-card:hover,
.asta-quick-card:hover,
.asta-resource-library-card:hover,
.asta-license-card:hover,
.asta-admin-stats article:hover,
.asta-admin-primary:hover,
.asta-admin-secondary:hover,
.asta-button:hover,
.asta-button--primary:hover,
.asta-button--ghost:hover,
.asta-resource-action:hover,
.asta-home-resume__action:hover{
  transform:none!important;
}
.asta-course-card__cover img{
  transition:transform 220ms var(--asta-ease-out),filter 220ms ease!important;
}
.asta-course-card:hover .asta-course-card__cover img{transform:none!important}
.asta-course-card:hover .asta-course-card__play{opacity:0!important;transform:scale(.95)!important}

@media (hover:hover) and (pointer:fine){
  .asta-course-card:hover,
  .asta-quick-card:hover,
  .asta-resource-library-card:hover,
  .asta-license-card:hover,
  .asta-support-action:hover,
  .asta-admin-stats article:hover{transform:translateY(-2px)!important}
  .asta-course-card:hover .asta-course-card__cover img{transform:scale(1.015)!important}
  .asta-course-card:hover .asta-course-card__play{opacity:1!important;transform:scale(1)!important}
  .asta-admin-primary:hover,
  .asta-admin-secondary:hover,
  .asta-button:hover,
  .asta-button--primary:hover,
  .asta-button--ghost:hover,
  .asta-resource-action:hover,
  .asta-home-resume__action:hover{transform:translateY(-1px)!important}
}

/* Tabs communicate state only. Peer navigation must not slide. */
.asta-email-tabs a,
.asta-admin-tabs button,
[data-admin-tabs] [data-tab],
.asta-builder-library-filters button{
  transform:none!important;
  transition:
    color var(--asta-motion-fast) ease,
    border-color var(--asta-motion-fast) ease,
    background-color var(--asta-motion-fast) ease,
    opacity var(--asta-motion-fast) var(--asta-ease-out)!important;
}

/* Native dialog: centered scale/fade, including a real exit before close(). */
.asta-admin-dialog,
.asta-admin-dialog[open]{
  opacity:0!important;
  transform:scale(.96)!important;
  transform-origin:center;
  transition:
    opacity var(--asta-motion-panel) var(--asta-ease-out),
    transform var(--asta-motion-panel) var(--asta-ease-out)!important;
}
.asta-admin-dialog[open].is-open{
  opacity:1!important;
  transform:scale(1)!important;
}
.asta-admin-dialog.is-closing{
  opacity:0!important;
  transform:scale(.96)!important;
}
.asta-admin-dialog::backdrop{
  background:rgba(0,0,0,0);
  transition:background-color var(--asta-motion-panel) var(--asta-ease-out);
}
.asta-admin-dialog.is-open::backdrop{background:rgba(0,0,0,.68)}
.asta-admin-dialog.is-closing::backdrop{background:rgba(0,0,0,0)}

/* Mobile navigation drawer + syllabus: spatial consistency. */
@media (max-width:980px){
  .asta-sidebar{
    transition:transform var(--asta-motion-drawer) var(--asta-ease-drawer)!important;
    will-change:transform;
  }
  .asta-backdrop:not([hidden]){
    display:block!important;
    opacity:0;
    pointer-events:none;
    transition:opacity var(--asta-motion-panel) var(--asta-ease-out);
  }
  .asta-app.is-menu-open .asta-backdrop:not([hidden]){opacity:1;pointer-events:auto}
}
@media (max-width:1100px){
  .asta-syllabus{
    transition:transform var(--asta-motion-drawer) var(--asta-ease-drawer)!important;
    will-change:transform;
  }
  .asta-syllabus-backdrop{
    display:block!important;
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transition:
      opacity var(--asta-motion-panel) var(--asta-ease-out),
      visibility 0ms linear var(--asta-motion-panel);
  }
  .asta-learning-layout.is-syllabus-open .asta-syllabus-backdrop{
    opacity:1;
    visibility:visible;
    pointer-events:auto;
    transition-delay:0ms;
  }
}

/* Course module accordion is animated with WAAPI; this class only contains paint. */
.asta-module.is-animating{overflow:hidden}
.asta-module__chevron{transition:transform var(--asta-motion-ui) var(--asta-ease-in-out)!important}

/* Builder drag feedback: state indication, not decorative movement. */
.asta-module-row,
.asta-lesson-row{
  transition:
    transform var(--asta-motion-fast) var(--asta-ease-out),
    opacity var(--asta-motion-fast) var(--asta-ease-out),
    border-color var(--asta-motion-fast) ease,
    box-shadow var(--asta-motion-fast) ease;
}
.asta-module-row.is-dragging,
.asta-lesson-row.is-dragging{transform:scale(.99);opacity:.72!important}
.asta-module-row.is-drop-target,
.asta-lesson-row.is-drop-target{box-shadow:inset 0 2px var(--aa-accent)}
[data-asta-sortable].is-drop-end{box-shadow:inset 0 -2px var(--aa-accent)}

/* Login: one subtle entrance on page load. */
.asta-auth-login-logo,
.asta-auth-card{
  opacity:1;
  transform:translateY(0);
  transition:
    opacity 220ms var(--asta-ease-out),
    transform 220ms var(--asta-ease-out);
}
@starting-style{
  .asta-auth-login-logo,
  .asta-auth-card{opacity:0;transform:translateY(6px)}
}

/* Rare one-time delight after a successful lesson completion. */
.asta-button--done{position:relative}
.asta-button--done.is-just-completed{animation:asta-complete-button 240ms var(--asta-ease-out) both}
.asta-button--done.is-just-completed::after{
  content:"";
  position:absolute;
  inset:-5px;
  border:1px solid currentColor;
  border-radius:inherit;
  pointer-events:none;
  animation:asta-complete-halo 280ms var(--asta-ease-out) both;
}
@keyframes asta-complete-button{
  from{transform:scale(.96)}
  to{transform:scale(1)}
}
@keyframes asta-complete-halo{
  from{opacity:.55;transform:scale(.94)}
  to{opacity:0;transform:scale(1.08)}
}

/* Reduced motion keeps state legible while removing spatial movement. */
@media (prefers-reduced-motion:reduce){
  .asta-button,
  .asta-copy-button,
  .asta-resource-action,
  .asta-home-resume__action,
  .asta-icon-button,
  .asta-syllabus-toggle,
  .asta-syllabus__close,
  .asta-admin-primary,
  .asta-admin-secondary,
  .asta-admin-ghost,
  .asta-admin-danger,
  [data-copy-value],
  .asta-email-tabs a,
  [data-admin-tabs] [data-tab]{
    transform:none!important;
    transition:
      opacity 160ms var(--asta-ease-out)!important,
      color 160ms ease!important,
      border-color 160ms ease!important,
      background-color 160ms ease!important;
  }
  .asta-course-card,
  .asta-quick-card,
  .asta-resource-library-card,
  .asta-license-card,
  .asta-support-action,
  .asta-admin-stats article,
  .asta-admin-panel,
  .asta-course-card__cover img,
  .asta-sidebar,
  .asta-syllabus,
  .asta-module-row,
  .asta-lesson-row,
  .asta-module__chevron{
    transform:none!important;
    animation:none!important;
    transition:opacity 160ms var(--asta-ease-out)!important,border-color 160ms ease!important;
  }
  .asta-admin-dialog,
  .asta-admin-dialog[open],
  .asta-admin-dialog[open].is-open,
  .asta-admin-dialog.is-closing{
    transform:none!important;
    transition:opacity 160ms var(--asta-ease-out)!important;
  }
  .asta-backdrop:not([hidden]),
  .asta-syllabus-backdrop{transition:opacity 160ms var(--asta-ease-out)!important}
  .asta-button--done.is-just-completed{animation:none!important}
  .asta-button--done.is-just-completed::after{animation:asta-complete-fade 160ms var(--asta-ease-out) both}
}
@keyframes asta-complete-fade{
  from{opacity:.45}
  to{opacity:0}
}

/* ASTA 1.7 · search result reveal is state feedback, not decorative motion. */
.asta-user-picker__results:not([hidden]){animation:asta-user-picker-in 160ms var(--asta-ease-out) both}
.asta-user-picker__selected:not([hidden]){animation:asta-user-picker-selected-in 180ms var(--asta-ease-out) both}
@keyframes asta-user-picker-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
@keyframes asta-user-picker-selected-in{from{opacity:0;transform:scale(.985)}to{opacity:1;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.asta-user-picker__results:not([hidden]),.asta-user-picker__selected:not([hidden]){animation:none}}


/* ASTA 1.10 · premium recovery spam hint */
.asta-recovery-hint--premium{
  position:relative;
  display:grid;
  grid-template-columns:36px minmax(0,1fr);
  align-items:center;
  gap:12px;
  margin:2px 0 0;
  padding:12px 14px;
  border:1px solid color-mix(in srgb,var(--asta-accent) 30%,transparent);
  border-radius:12px;
  background:linear-gradient(135deg,color-mix(in srgb,var(--asta-accent) 8%,transparent),rgba(255,255,255,.018));
  color:var(--asta-muted);
  animation:asta-spam-hint-in var(--asta-motion-ui) var(--asta-ease-out) both;
}
.asta-recovery-hint__icon{
  position:relative;
  width:36px;
  height:36px;
  border:1px solid color-mix(in srgb,var(--asta-accent) 38%,transparent);
  border-radius:10px;
  display:grid;
  place-items:center;
  color:var(--asta-accent-2);
  background:color-mix(in srgb,var(--asta-accent) 9%,transparent);
}
.asta-recovery-hint__icon svg{width:18px;height:18px;display:block}
.asta-recovery-hint__icon::after{
  content:"";
  position:absolute;
  inset:-5px;
  border:1px solid color-mix(in srgb,var(--asta-accent) 44%,transparent);
  border-radius:14px;
  opacity:0;
  transform:scale(.88);
  pointer-events:none;
  animation:asta-spam-hint-pulse 2.8s var(--asta-ease-out) infinite;
}
.asta-recovery-hint__copy{font-size:11px;line-height:1.65}
.asta-recovery-hint__copy strong{color:var(--asta-text);font-weight:800}
.asta-recovery-hint--premium.is-emphasized .asta-recovery-hint__icon::after{animation-duration:1.35s;animation-iteration-count:3}
@keyframes asta-spam-hint-in{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}
@keyframes asta-spam-hint-pulse{
  0%,58%,100%{opacity:0;transform:scale(.88)}
  68%{opacity:.72;transform:scale(1)}
  82%{opacity:0;transform:scale(1.16)}
}
@media (hover:hover) and (pointer:fine){
  .asta-recovery-hint--premium:hover{border-color:color-mix(in srgb,var(--asta-accent) 42%,transparent);background:linear-gradient(135deg,color-mix(in srgb,var(--asta-accent) 11%,transparent),rgba(255,255,255,.022))}
}
@media (prefers-reduced-motion:reduce){
  .asta-recovery-hint--premium,.asta-recovery-hint__icon::after{animation:none!important}
}
