/* Shared motion, kept separate from layout and reading logic. */
:root { --motion-ease:cubic-bezier(.22,.7,.2,1); }
.screen:not([hidden]) { animation:screen-arrive .38s var(--motion-ease) both; }
@keyframes screen-arrive { from { opacity:0; transform:translateY(9px); } to { opacity:1; transform:translateY(0); } }
button,.intent-step,.spread-option,.mode-card { transition:background-color .2s,color .2s,box-shadow .2s,transform .2s var(--motion-ease); }
button:not(:disabled):active { transform:scale(.97); }
@media(hover:hover) { .intent-step:hover,.spread-option:hover { transform:translateY(-2px); box-shadow:0 5px 16px #00000008; } }
.intent-step,.spread-option { animation:item-arrive .4s var(--motion-ease) both; }
.intent-step:nth-child(2),.spread-option:nth-child(2) { animation-delay:45ms; }
.intent-step:nth-child(3),.spread-option:nth-child(3) { animation-delay:90ms; }
.intent-step:nth-child(4),.spread-option:nth-child(4) { animation-delay:135ms; }
@keyframes item-arrive { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:translateY(0); } }
.tray-slot.capture-enter { animation:photo-land .35s var(--motion-ease) both; }
@keyframes photo-land { from { opacity:.3; transform:translateY(-12px) rotate(-4deg) scale(.93); } to { opacity:1; transform:translateY(-3px) rotate(0) scale(1); } }
.tray-slot.revealing { animation:film-develop .8s var(--motion-ease) both; animation-delay:var(--reveal-delay,0ms); }
@keyframes film-develop { 0% { filter:brightness(.2) grayscale(1) blur(5px); transform:translateY(-3px) scale(.94); } 60% { filter:brightness(1.15) grayscale(.5) blur(0); } 100% { filter:none; transform:translateY(-3px) scale(1); } }
.msg,.reading-article,.hero-card,.tv-quote-card,.tv-advice,.tv-moments>section,.tv-panel:not([hidden]) { animation:item-arrive .4s var(--motion-ease) both; }
.tv-advice:nth-child(2) { animation-delay:70ms; }
.tv-day[open] .tv-day-body,.tv-palace[open] .tv-palace-body,.tv-help[open]>:not(summary) { animation:item-arrive .25s var(--motion-ease) both; }
.tv-plus { transition:transform .22s var(--motion-ease); }
.tv-skeleton i { background:linear-gradient(90deg,#26252208,#26252218,#26252208); background-size:200% 100%; animation:loading-sheen 1.6s ease-in-out infinite; }
@keyframes loading-sheen { from { background-position:200% 0; } to { background-position:-200% 0; } }
.typing { animation:typing-breathe 1.4s ease-in-out infinite; }
@keyframes typing-breathe { 0%,100% { opacity:.5; } 50% { opacity:1; } }
.toast:not([hidden]) { animation:item-arrive .25s var(--motion-ease) both; }
@media(prefers-reduced-motion:reduce) {
  *,*::before,*::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; }
  .shutter-flash { display:none; }
  .justify-line span { opacity:1; transform:none; }
}
