/* Entrada compartida: solo opacidad para conservar geometría, scroll y foco. */
.portal-theme .ui-phase-transition:not([hidden]) {
    animation: portal-phase-enter var(--motion-phase-duration) var(--motion-phase-easing);
}
@keyframes portal-phase-enter {
    from {opacity: 0;}
    to {opacity: 1;}
}
@media (prefers-reduced-motion: reduce) {
    .portal-theme .ui-phase-transition:not([hidden]) {animation: none;}
}
