/**
 * home.css
 * ------------------------------------------------------------
 * Homepage-specific styles.
 *
 * Contains:
 * - Hero section layout and search controls
 * - Module/category grid system
 * - Module card styling and interactions
 * - Responsive grid breakpoints
 * - Empty state ("Nothing Found") styling
 * - Decorative animations
 *
 * This file controls the layout and presentation of the
 * application's home page.
 * ------------------------------------------------------------
 */

/* Hero section container and background */
.hero {
    padding: 70px 0 40px;
    background: #f8f9fa;
}

/* Hero section description text */
.hero_description {
    font-size: 1.2rem;
}

/* Hero search input and controls */
.hero_search {
    height: 50px;
    font-size: 1.1rem;
}

/* Search input width within the hero section */
.search_input {
    width: 50%;
}

/* Responsive adjustments for hero section on tablets and mobile devices */
@media (max-width: 768px) {
    #searchTools {
        width: 100% !important;
    }

    .hero .container {
        padding-left: 20px;
        padding-right: 20px;
    }
}

/* Category section wrapper */
.category_block {
    margin: 32px 0;
}

/* Module category heading */
.module_category_title {
    margin-bottom: 12px;
}

/* Responsive module card grid layout */
.modules_grid {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 16px;
}

/* Large desktop grid layout */
@media (max-width: 1200px) {
    .modules_grid {
        grid-template-columns: repeat(5, 1fr);
    }
}

/* Medium desktop and tablet grid layout */
@media (max-width: 992px) {
    .modules_grid {
        grid-template-columns: repeat(4, 1fr);
    }
}

/* Tablet grid layout */
@media (max-width: 768px) {
    .modules_grid {
        grid-template-columns: repeat(3, 1fr);
    }
}

/* Mobile grid layout */
@media (max-width: 576px) {
    .modules_grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* Individual module card */
.module_card {
    height: 120px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background-color 0.3s ease;
    border-radius: 10px;
}

/* Module card hover effect */
.module_card:hover {
    background-color: var(--bs-gray-100);
}

/* Module card content alignment */
.module_card .card-body {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 10px;
}

/* Module icon styling */
.module_icon {
    font-size: 40px;
    color: var(--bs-primary);
}

/* Module title/label styling */
.module_card p {
    text-align: center;
    line-height: 1.2;
    margin: 0;
    font-size: 1rem;
}

/* Small-screen optimizations for module cards */
@media (max-width: 360px) {
    .module_card {
        height: 110px;
    }

    .module_card p {
        line-height: 1.35;
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }
}

/* Empty state illustration */
.nothing_found {
    width: 100%;
    max-width: 300px;
    height: auto;
    animation: floatUpDown 3s ease-in-out infinite;
}

/* Floating animation for the empty state illustration */
@keyframes floatUpDown {
    0% {
        transform: translateY(0px);
    }

    50% {
        transform: translateY(-12px);
    }

    100% {
        transform: translateY(0px);
    }
}