/* Hidden only after successful JS setup, while still below the viewport. */
.feature-card.motion-ready { transition: opacity .7s ease; }
.feature-card.motion-pending { opacity: 0; }
.calorie-ring.is-animated { position: relative; border: 0; transform: none; }
.calorie-ring.is-animated b, .calorie-ring.is-animated span { transform: none; }
.calorie-ring svg { position: absolute; inset: 0; width: 100%; height: 100%; transform: rotate(-90deg); pointer-events: none; }
.calorie-ring circle { fill: none; stroke: #e4e9dc; stroke-width: 8; }
.calorie-ring .calorie-fill { stroke: #278953; stroke-linecap: round; }
.macro-value, .calorie-ring b, .weight-change { font-variant-numeric: tabular-nums; }
.question.is-animated { display: grid; }
.question__reserve, .question__typed { grid-area: 1 / 1; }
.question__reserve { visibility: hidden; }
.question__typed.is-writing::after { content: ""; display: inline-block; height: .95em; border-right: 2px solid #278953; margin-left: 2px; vertical-align: -.1em; }
.typing.is-animated { display: flex; align-items: center; justify-content: center; gap: 4px; transition: opacity .25s; }
.typing.is-animated span { width: 5px; height: 5px; border-radius: 50%; background: #278953; animation: consultant-dot 1.2s ease-in-out infinite; animation-play-state: paused; }
.typing.is-animated span:nth-child(2) { animation-delay: .16s; }
.typing.is-animated span:nth-child(3) { animation-delay: .32s; }
.feature-card.is-in-view .typing.is-waiting span { animation-play-state: running; }
.typing.is-animated:not(.is-waiting) { opacity: .2; }
.coach-messages { display: grid; }
.coach-message-text { grid-area: 1 / 1; opacity: 0; visibility: hidden; transform: translateY(6px); transition: opacity .45s ease, transform .45s ease, visibility .45s; }
.coach-message-text.is-current { opacity: 1; visibility: visible; transform: none; }
.coach-message-text b, .coach-message-text span { display: block; }
@keyframes consultant-dot { 0%, 60%, 100% { transform: translateY(0); opacity: .4; } 30% { transform: translateY(-4px); opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .feature-card.motion-ready { transition: none; }
  .feature-card.motion-pending { opacity: 1; }
  .typing.is-animated span { animation: none; }
  .coach-message-text { transition: none; transform: none; }
}
