/* Base */
body {
    -webkit-font-smoothing: antialiased;
}

/* Animations */
.animate-in {
    animation: fadeInUp 0.5s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    opacity: 0;
}

@keyframes fadeInUp {
    from { opacity: 0; transform: translateY(20px) scale(0.98); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}

/* Print Overrides */
@media print {
    @page { size: auto; margin: 0; }
    body { margin: 0; padding: 0; background: white; }
    .no-print, #app { display: none !important; }
    #print-area { display: flex !important; }
}

/* --- FANCY LOADER CSS --- */
.mosaic-loader {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    width: 80px;
    height: 80px;
}

.mosaic-tile {
    width: 100%;
    height: 100%;
    background-color: #F00F40; /* Primary */
    opacity: 0;
    border-radius: 4px;
    animation: mosaicPulse 1.5s infinite ease-in-out;
}

/* Alternate colors for visual interest */
.mosaic-tile:nth-child(even) {
    background-color: #3D4A52; /* Secondary */
}

/* Stagger animations for wave effect */
.mosaic-tile:nth-child(1) { animation-delay: 0.0s; }
.mosaic-tile:nth-child(2) { animation-delay: 0.1s; }
.mosaic-tile:nth-child(3) { animation-delay: 0.2s; }
.mosaic-tile:nth-child(4) { animation-delay: 0.1s; }
.mosaic-tile:nth-child(5) { animation-delay: 0.2s; }
.mosaic-tile:nth-child(6) { animation-delay: 0.3s; }
.mosaic-tile:nth-child(7) { animation-delay: 0.2s; }
.mosaic-tile:nth-child(8) { animation-delay: 0.3s; }
.mosaic-tile:nth-child(9) { animation-delay: 0.4s; }

@keyframes mosaicPulse {
    0% { opacity: 0; transform: scale(0.8); }
    40% { opacity: 1; transform: scale(1); }
    80% { opacity: 0; transform: scale(0.8); }
    100% { opacity: 0; transform: scale(0.8); }
}

/* Fullscreen Loader Overlay */
#fullscreen-loader {
    position: fixed;
    inset: 0;
    z-index: 9999;
    background-color: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(10px);
    display: flex;
    flex-col-reverse: column;
    align-items: center;
    justify-content: center;
    transition: opacity 0.5s ease;
}

#fullscreen-loader.hidden {
    opacity: 0;
    pointer-events: none;
}
