/* Short transitions only. Polling messages and notifications do not replay page entry. */
html{scroll-behavior:smooth}
.btn,.quick-card,.project-card,.room-row,.nav-branch a,.nav-branch button{transition:background-color .16s ease,border-color .16s ease,box-shadow .18s ease,transform .18s ease}
.quick-card:hover,.project-card:hover{transform:translateY(-3px);box-shadow:0 12px 28px #5445680d}
.btn:active,.quick-card:active{transform:translateY(0) scale(.985)}
.tree-nav summary i{display:inline-block;transition:transform .2s ease}
.tree-nav details[open]>summary i{transform:rotate(180deg)}
.nav-branch button.current{transition:background-color .18s ease,color .18s ease}
.sub-tabs button{transition:color .16s ease,border-color .16s ease}
.project-cover img{transition:transform .3s ease}.project-card:hover .project-cover img{transform:scale(1.025)}
dialog[open]{animation:workspace-dialog-in .2s cubic-bezier(.2,.7,.2,1)}
dialog[open]::backdrop{animation:workspace-backdrop-in .18s ease-out}
#toast{animation:workspace-toast-in .2s ease-out}
@keyframes workspace-dialog-in{from{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes workspace-backdrop-in{from{opacity:0}to{opacity:1}}
@keyframes workspace-toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.quick-card:hover,.project-card:hover,.project-card:hover .project-cover img,.btn:active,.quick-card:active{transform:none!important}}
