:root{--motion-ease:cubic-bezier(.22,1,.36,1)}
/* Small distances and a quick ease-out keep actions immediate but gentle. */
nav a{transition:background-color 240ms ease,color 220ms ease,transform 300ms var(--motion-ease)}
nav a:active{transform:translateX(2px)}
.btn,.action-grid button,.quick-module-list button,.assistant-suggestions button,.history-tabs button,.tabs button,.ai-primary,.ai-secondary{transition:background-color 220ms ease,border-color 220ms ease,color 220ms ease,box-shadow 260ms ease,transform 280ms var(--motion-ease)}
.btn:active,.action-grid button:active,.ai-primary:active,.ai-secondary:active{transform:translateY(1px) scale(.985)}
.form-grid input,.form-grid select,.form-grid textarea,.profile-fields input,.profile-fields select,.profile-fields textarea,.quick-text input,.quick-text textarea,.quick-text select{transition:border-color 220ms ease,box-shadow 240ms ease,background-color 220ms ease}
.mood-pick label span{transition:background-color 240ms ease,border-color 240ms ease,box-shadow 260ms ease,transform 320ms var(--motion-ease)}
.mood-pick label input:checked+span{transform:translateY(-2px)}
#assistantPanel{transform:translateY(26px) scale(.975);transform-origin:bottom right;transition:transform 420ms var(--motion-ease),opacity 280ms ease}
#assistantPanel.open{transform:translateY(0) scale(1)}
#sidebar{transition:transform 400ms var(--motion-ease),box-shadow 300ms ease}
.assistant-message{animation:message-arrive 340ms var(--motion-ease) both}
.assistant-message.user{animation-name:message-send}
.progress i,.ai-meter i{transition:width 450ms var(--motion-ease)}
.entry-section>summary,.profile-editor>summary{transition:background-color 240ms ease}
.chevron{transition:transform 340ms var(--motion-ease)}
#careAmbient:not([hidden]){animation:ambient-arrive 480ms var(--motion-ease) both}
#toast{transition:opacity 240ms ease,transform 340ms var(--motion-ease);transform:translate(-50%,8px)}
#toast.show{transform:translate(-50%,0)}
@keyframes message-arrive{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes message-send{from{opacity:0;transform:translate(6px,8px)}to{opacity:1;transform:translate(0,0)}}
@keyframes ambient-arrive{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:620px){#assistantPanel{transform:translateY(38px);transform-origin:bottom center}#assistantPanel.open{transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.mood-pick label input:checked+span{transform:none}}
