/* ===== v41 EXPERIMENTAL enhanced motion =====Rollback baseline: v40. Remove body.enhanced-motion or deploy v40 to disable the experiment. */
:root{
  --motion-press:150ms;
  --motion-ui:220ms;
  --motion-page:260ms;
  --motion-modal:300ms;
  --motion-fast:var(--motion-press);
  --motion-normal:var(--motion-ui);
  --motion-slow:var(--motion-modal);
  --ease-standard:cubic-bezier(.2,.72,.2,1);
  --ease-soft:cubic-bezier(.16,1,.3,1);
  --ease-emphasized:var(--ease-soft);
}
.enhanced-motion #view.motion-view-enter{animation:viewEnter var(--motion-page) var(--ease-soft) both}
@keyframes viewEnter{from{opacity:.01;transform:translateY(12px) scale(.994)}to{opacity:1;transform:none}}
.event-row,.task-card,.money-card,.bank-tx,.release-card,.setlist-card,.archive-card,.song-accordion,.stats-card,.activity-row,.hub-list-item,.week-event,.check-row,.task-stage-row{
  transition:transform var(--motion-press) var(--ease-soft),opacity var(--motion-ui) var(--ease-standard),border-color var(--motion-ui) var(--ease-standard),background-color var(--motion-ui) var(--ease-standard),color var(--motion-ui) var(--ease-standard);
}
.enhanced-motion .motion-fresh{animation:freshCard 300ms var(--ease-soft) both}
@keyframes freshCard{from{opacity:.01;transform:translateY(14px) scale(.975)}65%{opacity:1;transform:translateY(-1px) scale(1.004)}to{opacity:1;transform:none}}
.enhanced-motion .motion-removing{pointer-events:none;animation:removeCard 190ms var(--ease-standard) both}
@keyframes removeCard{to{opacity:.01;transform:translateY(4px) scale(.955)}}
.enhanced-motion .song-inline-detail{transform-origin:top center;animation:accordionIn var(--motion-ui) var(--ease-soft) both}
@keyframes accordionIn{from{opacity:.01;transform:translateY(-9px) scaleY(.96)}to{opacity:1;transform:none}}
.task-check,.check-dot{
  transition:transform var(--motion-press) var(--ease-soft),background-color var(--motion-ui) var(--ease-standard),border-color var(--motion-ui) var(--ease-standard),color var(--motion-ui) var(--ease-standard),box-shadow var(--motion-ui) var(--ease-standard);
}
.enhanced-motion .task-check.done,.enhanced-motion .check-dot.done{transform:scale(1.14);box-shadow:0 0 0 5px rgba(65,220,160,.08)}
.task-card:has(.task-check.done) .task-title,.task-stage-row:has(.task-check.done)>strong,.check-row:has(.check-dot.done)>strong{transition:opacity var(--motion-ui) var(--ease-standard),transform var(--motion-ui) var(--ease-standard);opacity:.62}
.enhanced-motion .task-card:has(.task-check.done) .task-title,.enhanced-motion .task-stage-row:has(.task-check.done)>strong,.enhanced-motion .check-row:has(.check-dot.done)>strong{transform:translateX(2px)}
.progress span,.hub-mini-progress span{transition:width var(--motion-ui) var(--ease-soft)}
.stats-card strong,.bank-balance-large strong,.money-card strong,.stats-balance strong{transition:opacity var(--motion-ui) var(--ease-standard),transform var(--motion-ui) var(--ease-soft)}
.personal-filter button,.view-toggle button,.seg-btn,.stats-periods button,.analytics-tabs button,.activity-filters button{
  transition:background-color var(--motion-ui) var(--ease-standard),color var(--motion-ui) var(--ease-standard),border-color var(--motion-ui) var(--ease-standard),opacity var(--motion-ui) var(--ease-standard),transform var(--motion-press) var(--ease-soft);
}
.enhanced-motion .personal-filter,.enhanced-motion .view-toggle,.enhanced-motion .analytics-tabs{position:relative;isolation:isolate}
.enhanced-motion .personal-filter::before,.enhanced-motion .view-toggle::before,.enhanced-motion .analytics-tabs::before{
  content:"";position:absolute;z-index:0;top:var(--motion-indicator-top,3px);left:0;height:var(--motion-indicator-h,calc(100% - 6px));width:var(--motion-indicator-w,0px);
  transform:translateX(var(--motion-indicator-x,0px));border-radius:10px;background:linear-gradient(135deg,#76182d,#991f3b);
  box-shadow:0 7px 18px rgba(126,25,47,.25);opacity:var(--motion-indicator-visible,0);
  transition:transform var(--motion-ui) var(--ease-soft),width var(--motion-ui) var(--ease-soft),opacity var(--motion-fast) ease;pointer-events:none
}
.enhanced-motion .personal-filter button,.enhanced-motion .view-toggle button,.enhanced-motion .analytics-tabs button{position:relative;z-index:1}
.enhanced-motion .personal-filter button.active,.enhanced-motion .view-toggle button.active,.enhanced-motion .analytics-tabs button.active{background:transparent}
button,.archive-card,.money-card[data-open-collection],.bank-card[data-open-bank-page],.setlist-card-main,.song-line,.hub-next,.hub-mini-card,.hub-quick{-webkit-tap-highlight-color:transparent}
.enhanced-motion button:active,.enhanced-motion .archive-card:active,.enhanced-motion .money-card[data-open-collection]:active,.enhanced-motion .bank-card[data-open-bank-page]:active,.enhanced-motion .setlist-card-main:active,.enhanced-motion .song-line:active,.enhanced-motion .hub-next:active,.enhanced-motion .hub-mini-card:active,.enhanced-motion .hub-quick:active{transform:translateY(1px) scale(.965)}
.bottom-nav{scroll-behavior:smooth}
.bottom-nav .nav-item,.bottom-nav .nav-item span,.bottom-nav .nav-item small{transition:transform var(--motion-ui) var(--ease-soft),color var(--motion-ui) var(--ease-standard),opacity var(--motion-ui) var(--ease-standard),background-color var(--motion-ui) var(--ease-standard)}
@media(max-width:900px){
  .enhanced-motion .bottom-nav .nav-item{transform:scale(.965);opacity:.74}
  .enhanced-motion .bottom-nav .nav-item.nav-center{transform:translateY(-2px) scale(1.17);opacity:1}
  .enhanced-motion .bottom-nav .nav-item.nav-center span{transform:scale(1.1)}
  .enhanced-motion .bottom-nav .nav-item.active small{font-weight:900;color:#fff}
}
.modal-backdrop{opacity:1;transition:opacity var(--motion-ui) var(--ease-standard),background-color var(--motion-ui) var(--ease-standard)}
.enhanced-motion .modal-backdrop:not(.hidden):not(.closing){animation:backdropIn var(--motion-ui) var(--ease-standard) both}
.enhanced-motion .modal-backdrop:not(.hidden):not(.closing) .modal{animation:modalIn var(--motion-modal) var(--ease-soft) both}
.modal-backdrop.closing{opacity:0;pointer-events:none}
.enhanced-motion .modal-backdrop.closing .modal{animation:modalOut 220ms var(--ease-standard) both}
@keyframes backdropIn{from{opacity:0}to{opacity:1}}
@keyframes modalIn{from{opacity:.01;transform:translateY(26px) scale(.975)}70%{opacity:1;transform:translateY(-2px) scale(1.002)}to{opacity:1;transform:none}}
@keyframes modalOut{to{opacity:.01;transform:translateY(18px) scale(.98)}}
.empty-state,.filter-empty,.hub-empty,.archive-empty,.bank-empty,.stats-empty{animation:softFade var(--motion-ui) ease both}
@keyframes softFade{from{opacity:.01;transform:translateY(4px)}to{opacity:1;transform:none}}
.motion-toast-host{position:fixed;left:50%;bottom:calc(86px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:2200;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;width:min(92vw,420px)}
.enhanced-motion .motion-toast{background:rgba(24,15,17,.97);border:1px solid #553039;color:#fff;border-radius:999px;padding:10px 14px;box-shadow:0 14px 34px rgba(0,0,0,.35);font-size:13px;font-weight:800;opacity:0;transform:translateY(14px) scale(.94);animation:toastIn var(--motion-ui) var(--ease-soft) forwards}
.motion-toast.error{border-color:#8c3141;color:#ffd7de}.motion-toast.hide{animation:toastOut var(--motion-fast) ease forwards}
@keyframes toastIn{65%{opacity:1;transform:translateY(-1px) scale(1.015)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0;transform:translateY(7px) scale(.96)}}
.activity-row.motion-appended{animation:freshCard var(--motion-ui) var(--ease-soft) both}
@media(max-width:900px){
  .motion-toast-host{bottom:calc(88px + env(safe-area-inset-bottom))}
  .enhanced-motion .modal-backdrop:not(.hidden):not(.closing) .modal{animation:sheetIn var(--motion-modal) var(--ease-soft) both}
  .enhanced-motion .modal-backdrop.closing .modal{animation:sheetOut 220ms var(--ease-standard) both}
  @keyframes sheetIn{from{opacity:.01;transform:translateY(48px) scale(.985)}70%{opacity:1;transform:translateY(-2px)}to{opacity:1;transform:none}}
  @keyframes sheetOut{to{opacity:.01;transform:translateY(34px) scale(.985)}}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}
  #view.motion-view-enter,.motion-fresh,.song-inline-detail,.empty-state,.filter-empty,.hub-empty,.archive-empty,.bank-empty,.stats-empty{transform:none!important}
  .personal-filter::before,.view-toggle::before,.analytics-tabs::before{display:none!important}
}

/* v53 directional section transition: render is immediate; animation is transform/opacity only */
.enhanced-motion #view.motion-view-enter-left{animation:v53ViewFromLeft 210ms var(--ease-soft) both}
.enhanced-motion #view.motion-view-enter-right{animation:v53ViewFromRight 210ms var(--ease-soft) both}
@keyframes v53ViewFromLeft{from{opacity:.04;transform:translateX(-18vw)}to{opacity:1;transform:none}}
@keyframes v53ViewFromRight{from{opacity:.04;transform:translateX(18vw)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){#view.motion-view-enter-left,#view.motion-view-enter-right{animation:none!important;transform:none!important}}
