/* One restrained vocabulary: 180ms feedback, 280ms navigation, 520ms introduction. */
@keyframes arrive { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: translateY(0); } }
@keyframes ambient-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes message-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
@keyframes typing { 0%, 65%, 100% { opacity: .4; transform: translateY(0); } 30% { opacity: 1; transform: translateY(-3px); } }
.atmosphere { animation: ambient-in 900ms ease-out both; }
.site-header { animation: arrive 520ms 30ms both; }
.welcome-copy .eyebrow { animation: arrive 520ms 80ms both; }
.welcome-copy h1 { animation: arrive 520ms 130ms both; }
.welcome-description { animation: arrive 520ms 180ms both; }
.identity-grid { animation: arrive 520ms 230ms both; }
.perfume-card { animation: ambient-in 650ms 310ms both; }
.selection-reassurance, .site-footer { animation: arrive 520ms 430ms both; }
.identity-card { transition: transform 220ms ease, border-color 220ms, box-shadow 220ms; }
.identity-card::before { transition: opacity 240ms; }
.floating-object, .card-arrow { transition: transform 280ms ease; transform-origin: center; }
.identity-card:active, .identity-card.selecting { transform: scale(.985); }
.identity-card.selecting::before { opacity: 1; }
.chat-heading, .empty-state, .composer-wrap { animation: arrive 380ms both; }
.empty-state { animation-delay: 60ms; }
.suggestions button { animation: arrive 380ms both; transition: background-color 180ms, border-color 180ms; }
.suggestions button:nth-child(2) { animation-delay: 60ms; }
.suggestions button:nth-child(3) { animation-delay: 120ms; }
.message { animation: message-in 240ms ease-out both; }
.typing-dot { animation: typing 1250ms infinite; }
.typing-dot:nth-child(2) { animation-delay: 160ms; }
.typing-dot:nth-child(3) { animation-delay: 320ms; }
.composer { transition: border-color 180ms, box-shadow 180ms; }
.send-button, .icon-button, .switch-button { transition: background-color 180ms, opacity 180ms; }
.error-banner, .confirm-dialog[open] { animation: message-in 180ms both; }
::view-transition-old(content) { animation: ambient-in 160ms reverse both; }
::view-transition-new(content) { animation: arrive 280ms both; }
@media (hover: hover) and (pointer: fine) {
  .identity-card:not(:disabled):hover { transform: translateY(-5px); border-color: var(--card-accent); box-shadow: 0 22px 45px #00000035; }
  .identity-card:not(:disabled):hover::before { opacity: 1; }
  .identity-card:hover .floating-object { transform: translateY(-4px); }
  .identity-card:hover .card-arrow { transform: translateX(-3px); }
  .suggestions button:hover, .icon-button:hover, .switch-button:hover { background: var(--identity-glow); }
  .suggestions button:hover { border-color: var(--identity-accent); }
  .send-button:not(:disabled):hover { opacity: .8; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  .identity-card:hover, .identity-card:active, .identity-card.selecting, .identity-card:hover .floating-object, .identity-card:hover .card-arrow { transform: none !important; }
  ::view-transition-old(content), ::view-transition-new(content) { animation: none !important; }
}
