.portal-page a, .portal-page button, .portal-page input, .portal-page select, .portal-page textarea,
.portal-table tbody tr, .portal-photo-grid a, .portal-photo-grid img {
  transition-property: color, background-color, border-color, box-shadow, opacity, transform;
  transition-duration: .15s;
  transition-timing-function: ease-out;
}
.portal-user-dropdown.open { transform-origin: top right; animation: portal-dropdown-in .15s ease-out; }
.portal-user-dropdown.closing { display: block; pointer-events: none; transform-origin: top right; animation: portal-dropdown-out .15s ease-in forwards; }
.portal-row-menu[open] > div { transform-origin: top right; animation: portal-dropdown-in .15s ease-out; }
.portal-dialog.open { animation: portal-fade-in .15s ease-out; }
.portal-dialog.open .portal-dialog-card { animation: portal-dialog-in .2s ease-out; }
.portal-dialog.closing { display: flex; pointer-events: none; animation: portal-fade-out .2s ease-in forwards; }
.portal-dialog.closing .portal-dialog-card { animation: portal-dialog-out .2s ease-in forwards; }
.portal-expanded-filters.open, .portal-collapse.open { animation: portal-collapse-in .2s ease-out; transform-origin: top; }
.portal-collapse-button svg, [data-toggle-target] svg { transition: transform .2s ease-out; }
.portal-collapse-button.active svg, [data-toggle-target].active svg { transform: rotate(180deg); }
.portal-photo-grid a:hover img { opacity: .9; transform: scale(1.015); }
@media (max-width: 1023px) {
  .portal-sidebar-backdrop.open { animation: portal-fade-in .2s ease-out; }
  .portal-sidebar-backdrop.closing { display: block; position: fixed; inset: 0; z-index: 75; background: rgba(0,0,0,.5); pointer-events: none; animation: portal-fade-out .2s ease-in forwards; }
}
@keyframes portal-fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes portal-fade-out { from { opacity: 1; } to { opacity: 0; } }
@keyframes portal-dropdown-in { from { opacity: 0; transform: translateY(-8px) scale(.95); } to { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes portal-dropdown-out { from { opacity: 1; transform: translateY(0) scale(1); } to { opacity: 0; transform: translateY(-8px) scale(.95); } }
@keyframes portal-dialog-in { from { opacity: 0; transform: scale(.95); } to { opacity: 1; transform: scale(1); } }
@keyframes portal-dialog-out { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(.95); } }
@keyframes portal-collapse-in { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: translateY(0); } }
