/* TASTE LAYER — Motion vocabulary (AiVizWiz-inherited) */
.rise { display: inline-block; overflow: hidden; vertical-align: bottom; line-height: 0.95; }
.rise > span {
  display: inline-block;
  transform: translateY(105%);
  transition: transform var(--dur-slow) var(--ease-out-expo);
}
.rise.in > span { transform: translateY(0); }

.reveal {
  opacity: 0; transform: translateY(20px);
  transition:
    opacity var(--dur-slow) var(--ease),
    transform var(--dur-slow) var(--ease);
  transition-delay: var(--rd, 0ms);
}
.reveal.in { opacity: 1; transform: translateY(0); }

.line-reveal { position: relative; }
.line-reveal::after {
  content: ""; position: absolute; left: 0; bottom: -8px;
  width: 100%; height: 1px; background: var(--line);
  transform: scaleX(0); transform-origin: left;
  transition: transform var(--dur-slow) var(--ease-out-expo);
}
.line-reveal.in::after { transform: scaleX(1); }

.stagger > * {
  opacity: 0; transform: translateY(14px);
  transition: opacity var(--dur) var(--ease), transform var(--dur) var(--ease);
}
.stagger.in > * { opacity: 1; transform: translateY(0); }
.stagger.in > *:nth-child(1) { transition-delay: 60ms; }
.stagger.in > *:nth-child(2) { transition-delay: 120ms; }
.stagger.in > *:nth-child(3) { transition-delay: 180ms; }
.stagger.in > *:nth-child(4) { transition-delay: 240ms; }
.stagger.in > *:nth-child(5) { transition-delay: 300ms; }
.stagger.in > *:nth-child(6) { transition-delay: 360ms; }
.stagger.in > *:nth-child(7) { transition-delay: 420ms; }
.stagger.in > *:nth-child(8) { transition-delay: 480ms; }

.lift {
  transition:
    transform var(--dur) var(--ease),
    box-shadow var(--dur) var(--ease),
    border-color var(--dur) var(--ease);
}
.lift:hover { transform: translateY(-3px); box-shadow: var(--shadow-soft); }
.press { transition: transform 120ms var(--ease); }
.press:active { transform: scale(0.97); }

@keyframes caret { 0%, 50% { opacity: 1; } 51%, 100% { opacity: 0; } }
.caret {
  display: inline-block;
  width: 0.06em; height: 1em;
  background: var(--terracotta);
  vertical-align: -0.08em;
  margin-left: 0.08em;
  animation: caret 1.05s ease-in-out infinite;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .rise > span, .reveal, .stagger > * { opacity: 1; transform: none; }
  .line-reveal::after { transform: scaleX(1); }
}
