/* Performance Optimized CSS for TrustHR */
/* Critical font loading with font-display: swap for better performance */

@font-face {
    font-family: "Line Awesome Free";
    font-weight: 900;
    font-display: swap; /* Prevents font blocking */
    src: url("../fonts/la-solid-900.woff2") format("woff2"),
         url("../fonts/la-solid-900.woff") format("woff");
}

@font-face {
    font-family: "Line Awesome Brands";
    font-weight: 400;
    font-display: swap; /* Prevents font blocking */
    src: url("../fonts/la-brands-400.woff2") format("woff2"),
         url("../fonts/la-brands-400.woff") format("woff");
}

/* Base icon classes */
.la, .las {
    font-family: "Line Awesome Free", sans-serif;
    font-weight: 900;
    font-style: normal;
    font-variant: normal;
    text-rendering: auto;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.lab {
    font-family: "Line Awesome Brands", sans-serif;
    font-weight: 400;
}

/* Critical CSS for page loading performance */
.loading-placeholder {
    background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
    background-size: 200% 100%;
    animation: loading 1.5s infinite;
}

@keyframes loading {
    0% { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* Optimize layout shifts during loading */
.itemRow {
    min-height: 60px;
}

.table-responsive {
    contain: layout;
}

/* Optimize Select2 performance */
.select2-container {
    will-change: transform;
}

.select2-results {
    contain: layout;
}

/* Reduce paint operations */
.btn {
    will-change: transform;
    backface-visibility: hidden;
}

/* Optimize animations */
@media (prefers-reduced-motion: reduce) {
    *, ::before, ::after {
        animation-delay: -1ms !important;
        animation-duration: 1ms !important;
        animation-iteration-count: 1 !important;
        background-attachment: initial !important;
        scroll-behavior: auto !important;
        transition-duration: 0s !important;
        transition-delay: 0s !important;
    }
}

/* Critical styles for immediate rendering */
.page-wrapper {
    contain: layout;
}

.container-xxl {
    contain: layout;
}

/* Optimize table rendering */
.table {
    contain: layout;
    table-layout: fixed;
}

.table td, .table th {
    contain: layout;
}

/* Optimize form rendering */
.form-control {
    contain: layout;
}

/* Reduce reflow during dynamic content updates */
.subtotal {
    contain: layout;
    min-width: 100px;
}

#grandTotal {
    contain: layout;
    min-width: 150px;
}

/* Optimize CSS for better rendering performance */
* {
    box-sizing: border-box;
}

/* Optimize scrolling performance */
.table-responsive {
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
}

/* Optimize modal performance */
.modal {
    contain: layout;
}

/* Reduce paint area for hover effects */
.btn:hover {
    contain: layout;
}

/* Optimize dark mode transitions */
[data-bs-theme="dark"] {
    color-scheme: dark;
}

/* Critical path CSS for immediate rendering */
.btn-outline-info,
.btn-outline-warning,
.btn-outline-success,
.btn-outline-secondary {
    border-width: 1px;
    border-style: solid;
    padding: 0.375rem 0.75rem;
    font-size: 0.875rem;
    line-height: 1.5;
    border-radius: 0.25rem;
    transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

.btn-outline-info {
    color: #0dcaf0;
    border-color: #0dcaf0;
}

.btn-outline-warning {
    color: #ffc107;
    border-color: #ffc107;
}

.btn-outline-success {
    color: #198754;
    border-color: #198754;
}

.btn-outline-secondary {
    color: #6c757d;
    border-color: #6c757d;
}

/* Optimize loading states */
.loading-spinner {
    width: 20px;
    height: 20px;
    border: 2px solid #f3f3f3;
    border-top: 2px solid #3498db;
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* Optimize CSS Grid/Flexbox performance */
.row {
    contain: layout;
}

.col-lg-3, .col-lg-6, .col-12 {
    contain: layout;
}

/* Optimize form group rendering */
.compact-form-group {
    contain: layout;
    min-height: 35px;
}

/* Optimize label rendering */
.compact-label {
    contain: layout;
    font-size: 0.8rem;
    font-weight: 600;
    margin-bottom: 0;
    white-space: nowrap;
    color: #495057;
}

/* Optimize input rendering */
.compact-input {
    contain: layout;
    height: 28px;
    padding: 0.25rem 0.5rem;
    font-size: 0.875rem;
    line-height: 1.2;
    border-radius: 0.25rem;
}

/* Performance optimization for dynamic content */
.dynamic-content {
    contain: layout;
}

/* Optimize JavaScript-heavy elements */
.js-optimized {
    contain: layout style;
    will-change: contents;
}

/* Reduce layout thrashing */
.no-layout-thrash {
    contain: layout;
    overflow: hidden;
}

/* Optimize SweetAlert performance */
.swal2-popup {
    contain: layout;
}

/* Optimize Select2 dropdown performance */
.select2-dropdown {
    contain: layout;
    will-change: transform;
}

.select2-results__options {
    contain: layout;
}

/* Optimize tooltip performance */
.tooltip {
    contain: layout;
}

/* Critical CSS for faster initial render */
.page-content {
    contain: layout;
    min-height: 100vh;
}

/* Optimize table header */
.table thead th {
    contain: layout;
    position: sticky;
    top: 0;
    z-index: 10;
}

/* Optimize button group */
.d-flex.gap-2 {
    contain: layout;
}

/* Performance hint for complex elements */
.complex-element {
    contain: layout style;
    will-change: transform;
}

/* Optimize card rendering */
.card {
    contain: layout;
}

/* Optimize navigation elements */
.nav {
    contain: layout;
} 