/* Turbo frame transitions */
turbo-frame {
    display: block;
}

turbo-frame[busy] {
    opacity: 0.6;
    transition: opacity 0.2s ease-in-out;
}

/* Page loader - ensure visibility */
.page-loader {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 3px;
    z-index: 9999;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.2s;
}

.page-loader-bar {
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, #206bc4, #4dabf7, #206bc4);
    background-size: 200% 100%;
    animation: page-loader-progress 1s ease-in-out infinite;
}

@keyframes page-loader-progress {
    0% { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

body.page-loading .page-loader {
    opacity: 1;
    visibility: visible;
}
