.page {
    min-height: calc(100vh - 58px);
}

.page-wrapper {
    animation: ap-page-in 120ms ease-out;
}

@keyframes ap-page-in {
    from {
        opacity: 0;
        transform: translateY(4px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

body.layout-blank .app-navbar {
    display: none !important;
}

body.layout-blank .app-view {
    min-height: 100vh;
}


/* ClinicalEscape integration */
.app-loader {
    position: fixed;
    inset: 0;
    z-index: 3000;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .75rem;
    background: rgba(0, 0, 0, .35);
    color: #fff;
}
.app-loader.d-none { display: none !important; }
.tp-loader-wrap, .tp-loader-global-wrap {
    position: absolute;
    inset: 0;
    z-index: 2500;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, .25);
}
.tp-loader-global-wrap { position: fixed; }
.tp-loader, .tp-loader-global {
    width: 2rem;
    height: 2rem;
    border: .25rem solid rgba(255,255,255,.45);
    border-top-color: #fff;
    border-radius: 50%;
    animation: ce-spin .75s linear infinite;
}
@keyframes ce-spin { to { transform: rotate(360deg); } }
