/* Smooth Settling Curve Transitions */
.transition-calm {
  transition: all 400ms cubic-bezier(0.22, 1, 0.36, 1);
}

.transition-fast {
  transition: all 200ms cubic-bezier(0.22, 1, 0.36, 1);
}

/* Choreographed Task Completion Strikethrough Draw */
.strike-line {
  position: relative;
  display: inline-block;
}

.strike-line::after {
  content: '';
  position: absolute;
  left: 0;
  top: 52%;
  width: 100%;
  height: 1.5px;
  background-color: var(--text-primary);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 400ms cubic-bezier(0.22, 1, 0.36, 1);
}

.strike-draw.strike-line::after,
.strike-draw .strike-line::after {
  transform: scaleX(1);
}

/* SVG Path Strikethrough Animation */
.svg-strike-path {
  stroke-dasharray: 400;
  stroke-dashoffset: 400;
  transition: stroke-dashoffset 400ms cubic-bezier(0.22, 1, 0.36, 1);
}

.strike-draw .svg-strike-path {
  stroke-dashoffset: 0;
}

/* Task Card Completion Warm Shimmer */
@keyframes sageShimmer {
  0% {
    background-color: var(--bg-card);
    transform: scale(1);
  }
  40% {
    background-color: var(--pastel-sage);
    transform: scale(0.992);
  }
  100% {
    background-color: var(--pastel-sage);
    transform: scale(1);
    opacity: 0.78;
  }
}

.card-completed-anim {
  animation: sageShimmer 450ms cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

/* "Not Today" Guilt-Free Dissolve */
@keyframes calmDissolve {
  0% {
    opacity: 1;
    transform: scale(1);
  }
  100% {
    opacity: 0;
    transform: scale(0.96) translateY(4px);
  }
}

.card-dissolve-anim {
  animation: calmDissolve 300ms cubic-bezier(0.22, 1, 0.36, 1) forwards;
  pointer-events: none;
}

/* Spring Bottom-Sheet Slide-Up */
@keyframes sheetSlideUp {
  0% {
    opacity: 0;
    transform: translateY(100%);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes sheetFadeBackdrop {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

.sheet-enter {
  animation: sheetSlideUp 400ms cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

.backdrop-enter {
  animation: sheetFadeBackdrop 300ms cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

/* Subtle 4px Orbital Shift for 65" TV OLED/LED Burn-In Protection */
@keyframes tvBurnInOrbit {
  0% {
    transform: translate(0px, 0px);
  }
  25% {
    transform: translate(4px, 2px);
  }
  50% {
    transform: translate(0px, 4px);
  }
  75% {
    transform: translate(-4px, 2px);
  }
  100% {
    transform: translate(0px, 0px);
  }
}

.tv-orbit-guard {
  animation: tvBurnInOrbit 600s ease-in-out infinite;
}

/* Slow Horizontal Marquee for Craig's Queue on 65" TV */
@keyframes craigTickerMarquee {
  0% {
    transform: translate3d(0%, 0, 0);
  }
  100% {
    transform: translate3d(-50%, 0, 0);
  }
}

.craig-marquee-track {
  display: flex;
  width: max-content;
  animation: craigTickerMarquee 42s linear infinite;
}

.craig-marquee-track:hover {
  animation-play-state: paused;
}

/* Calm Toast Entrance & Exit */
@keyframes toastFloatIn {
  0% {
    opacity: 0;
    transform: translateY(12px) scale(0.97);
  }
  100% {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

.toast-enter {
  animation: toastFloatIn 350ms cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

@media (prefers-reduced-motion: reduce) {
  .transition-calm,
  .transition-fast,
  .sheet-enter,
  .card-completed-anim,
  .card-dissolve-anim,
  .craig-marquee-track,
  .tv-orbit-guard {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}
