/* ============================================================================
   RESPONSIVE UTILITIES & ANIMATIONS
   ============================================================================ */

/* ============================================================================
   ANIMATIONS
   ============================================================================ */

@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes slideInRight {
    from {
        opacity: 0;
        transform: translateX(-30px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes slideInLeft {
    from {
        opacity: 0;
        transform: translateX(30px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes pulse {
    0%, 100% {
        opacity: 1;
    }
    50% {
        opacity: 0.5;
    }
}

@keyframes bounce {
    0%, 100% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(-10px);
    }
}

/* Animation Classes */
.animate-fade-in {
    animation: fadeIn 0.5s ease-in-out;
}

.animate-slide-in-right {
    animation: slideInRight 0.5s ease-in-out;
}

.animate-slide-in-left {
    animation: slideInLeft 0.5s ease-in-out;
}

.animate-pulse {
    animation: pulse 2s infinite;
}

.animate-bounce {
    animation: bounce 1s infinite;
}

/* ============================================================================
   RESPONSIVE GRID
   ============================================================================ */

.grid-auto {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 2rem;
}

.grid-2 {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 2rem;
}

.grid-3 {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 2rem;
}

@media (max-width: 768px) {
    .grid-2, .grid-3 {
        grid-template-columns: 1fr;
    }
}

/* ============================================================================
   FLEXBOX UTILITIES
   ============================================================================ */

.flex-center {
    display: flex;
    justify-content: center;
    align-items: center;
}

.flex-between {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.flex-around {
    display: flex;
    justify-content: space-around;
    align-items: center;
}

.flex-column {
    display: flex;
    flex-direction: column;
}

.flex-wrap {
    display: flex;
    flex-wrap: wrap;
}

/* ============================================================================
   SPACING UTILITIES
   ============================================================================ */

.gap-1 { gap: 0.5rem; }
.gap-2 { gap: 1rem; }
.gap-3 { gap: 1.5rem; }
.gap-4 { gap: 2rem; }
.gap-5 { gap: 3rem; }

/* ============================================================================
   DISPLAY UTILITIES
   ============================================================================ */

.d-none { display: none; }
.d-block { display: block; }
.d-inline { display: inline; }
.d-inline-block { display: inline-block; }
.d-flex { display: flex; }
.d-grid { display: grid; }

/* ============================================================================
   VISIBILITY UTILITIES
   ============================================================================ */

.visible { visibility: visible; }
.invisible { visibility: hidden; }
.opacity-0 { opacity: 0; }
.opacity-25 { opacity: 0.25; }
.opacity-50 { opacity: 0.5; }
.opacity-75 { opacity: 0.75; }
.opacity-100 { opacity: 1; }

/* ============================================================================
   POSITION UTILITIES
   ============================================================================ */

.position-relative { position: relative; }
.position-absolute { position: absolute; }
.position-fixed { position: fixed; }
.position-sticky { position: sticky; }

/* ============================================================================
   OVERFLOW UTILITIES
   ============================================================================ */

.overflow-auto { overflow: auto; }
.overflow-hidden { overflow: hidden; }
.overflow-visible { overflow: visible; }
.overflow-scroll { overflow: scroll; }

.text-truncate {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.text-wrap {
    white-space: normal;
    word-wrap: break-word;
}

/* ============================================================================
   BORDER UTILITIES
   ============================================================================ */

.border-0 { border: none; }
.border-1 { border: 1px solid #e2e8f0; }
.border-2 { border: 2px solid #e2e8f0; }
.border-3 { border: 3px solid #e2e8f0; }

.border-top { border-top: 1px solid #e2e8f0; }
.border-bottom { border-bottom: 1px solid #e2e8f0; }
.border-start { border-right: 1px solid #e2e8f0; }
.border-end { border-left: 1px solid #e2e8f0; }

.border-primary { border-color: #1e3a8a; }
.border-secondary { border-color: #0f766e; }
.border-success { border-color: #16a34a; }
.border-danger { border-color: #dc2626; }

/* ============================================================================
   CURSOR UTILITIES
   ============================================================================ */

.cursor-pointer { cursor: pointer; }
.cursor-default { cursor: default; }
.cursor-text { cursor: text; }
.cursor-wait { cursor: wait; }
.cursor-not-allowed { cursor: not-allowed; }

/* ============================================================================
   MOBILE FIRST RESPONSIVE
   ============================================================================ */

@media (max-width: 576px) {
    .hide-mobile { display: none; }
    .show-mobile { display: block; }
    
    .grid-auto, .grid-2, .grid-3 {
        grid-template-columns: 1fr;
        gap: 1rem;
    }
    
    .p-md-4 { padding: 1rem; }
    .m-md-4 { margin: 1rem; }
}

@media (min-width: 577px) and (max-width: 768px) {
    .hide-tablet { display: none; }
    .show-tablet { display: block; }
}

@media (min-width: 769px) {
    .hide-desktop { display: none; }
    .show-desktop { display: block; }
}

/* ============================================================================
   PRINT STYLES\n   ============================================================================ */\n\n@media print {\n    .no-print { display: none; }\n    .print-only { display: block; }\n    \n    body {\n        background: white;\n        color: black;\n    }\n    \n    a {\n        text-decoration: underline;\n    }\n    \n    .navbar, footer {\n        display: none;\n    }\n}\n"
