/***********/
/* General */
/***********/

body {
    background-color: var(--clr-neutral-75);
}

header.sticky {
    position: fixed;
    top: 0;
    z-index: 100;
    width: 100%;
    border-bottom: 1px solid var(--clr-primary-100);
}

main {
    display: grid;
    grid-template-columns: 0.3fr 0.7fr;
    gap: 2rem;

    max-width: 1440px;
    margin: auto 0 6rem;
    padding: 8.5rem 6rem 6rem 6rem;
}

.filter-section,
.job-list-section > article {
    border-radius: var(--br-medium);
    background-color: var(--clr-neutral-50);
    border: var(--border-neutral);
    padding: 2rem;
}

#btn-search,
.btn-view-details,
#btn-apply-now {
    display: flex;
    padding: 0.5rem 1rem;
    justify-content: center;
    align-items: center;
    gap: 0.25rem;

    width: fit-content;
    background-color: var(--clr-primary-600);
    border-radius: var(--br-small);
    font-family: var(--ff-satoshi-medium);
    color: var(--clr-neutral-50);
    transition: var(--timing-function) 0.2s;
}

#btn-search:hover,
.btn-view-details:hover,
#btn-apply-now:hover {
    background-color: var(--clr-primary-700);
}

.text-with-icon {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

/******************/
/* Filter Section */
/******************/

.filter-section {
    position: sticky;
    top: 8.5rem; /* Equal to padding-top of "header" element */
    display: flex;
    flex-direction: column;
    gap: 2rem;
    align-items: center;

    height: fit-content;
}

.filter-heading {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    font-family: var(--ff-satoshi-medium);
    font-size: var(--fs-md);
}

.filter-heading img {
    width: 24px;
    height: 24px;
}

.filter-form {
    display: grid;
    grid-template-columns: 1fr;
    justify-items: center;
    gap: 1rem;
    width: 100%;
}

.filter-form div {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
    width: 100%;
}

.filter-form input {
    display: flex;
    padding: 0.625rem 1rem;
    align-items: center;
    align-self: stretch;

    border: var(--border-neutral-dark);
    border-radius: var(--br-small);
}

.filter-form input:focus {
    border: var(--border-dark);
}

.filter-form input::placeholder {
    color: var(--clr-neutral-500);
}

.filter-form div:has(input#location) {
    position: relative;
}

.filter-form #btn-locate {
    position: absolute;
    right: 0;
    bottom: 0;

    display: grid;
    place-items: center;

    height: 2.68rem;
    padding: 0.375rem 0.75rem;
    background-color: var(--clr-primary-600);
    border-radius: var(--br-small);
}

.filter-form #btn-locate img {
    width: 24px;
    height: 24px;
}

.filter-form #btn-search {
    margin-top: 1rem;
}

.filter-form #btn-search img {
    width: 20px;
    height: 20px;
}

/********************/
/* Job List Section */
/********************/

.job-list-section {
    display: grid;
    grid-template-columns: 1fr 1fr;
    align-content: start;
    gap: 2rem;
}

.job-card {
    display: flex;
    padding: 2rem;
    flex-direction: column;
    justify-content: space-between;
    gap: 1.5rem;
}

.job-card img {
    width: 24px;
    height: 24px;
}

.job-card .title {
    font-family: var(--ff-satoshi-medium);
    font-size: var(--fs-md);
}

.job-card .details {
    display: flex;
    flex-wrap: wrap;
    gap: 1.5rem 2rem;
}

.job-card .salary .salary-heading {
    margin-bottom: 0.25rem;
}

.card-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 2rem;

    padding-top: 1rem;
    border-top: var(--border-neutral-dark);
}

.card-footer .btn-view-details img {
    width: 20px;
    height: 20px;
}

.pagination {
    grid-column: 1 / -1;
    display: flex;
    gap: 0.5rem;
    align-items: center;
    justify-content: center;
    font-family: var(--ff-satoshi-medium);
}

.pagination button {
    display: grid;
    place-items: center;
    padding: 0.5rem;
}

/**************************/
/* Job Description Dialog */
/**************************/

body:has(.dialog-job-info.active) {
    overflow: hidden;
}

.dialog-job-info {
    width: 45rem;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    border: 1px solid var(--clr-neutral-100);
    border-radius: var(--br-medium);
    padding: 3rem;
}

.dialog-job-info::backdrop {
    background-color: rgba(0, 0, 0, 0.25);
}

.dialog-job-info:focus {
    outline: none;
}

.dialog-job-info img {
    width: 24px;
    height: 24px;
}

.job-info-container {
    display: flex;
    flex-direction: column;
    gap: 2rem;
}

.job-info-container .title {
    font-family: var(--ff-satoshi-medium);
    font-size: var(--fs-lg);
}

.job-info-container .details {
    display: flex;
    flex-wrap: wrap;
    gap: 2rem;
}

.job-info-container .info-flex {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: 2rem;
    padding-bottom: 3rem;
    border-bottom: 1px solid var(--clr-neutral-200);
}

.job-info-container .salary .salary-heading {
    margin-bottom: 0.25rem;
}

.job-info-container h2 {
    padding-top: 0.75rem;
    font-family: var(--ff-satoshi-medium);
    font-size: var(--fs-md);
}

.dialog-job-info .btns-container {
    margin-top: 3rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 2rem;
}

.dialog-job-info .btns-container #btn-close-dialog {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.5rem;
}

.dialog-job-info .btns-container #btn-close-dialog img {
    width: 16px;
    height: 16px;
}

/**********/
/* Loader */
/**********/

@keyframes loading {
    50% {
        transform: rotate(67.5deg);
    }
    to {
        transform: rotate(22.5deg);
    }
}

.loader {
    grid-column: 1 / -1;
    justify-self: center;
    margin: 6rem auto;
    width: 12rem;

    display: flex;
    flex-direction: column;
    gap: 2rem;
    overflow: visible;
}

.loader img {
    transform: rotate(22.5deg);
}

.loader.active img {
    animation: loading 3s var(--timing-function) infinite;
}

.loader span {
    font-size: var(--fs-md);
    text-align: center;
}

/*****************/
/* Media Queries */
/*****************/

@media only screen and (max-width: 1200px) {
    main {
        padding-left: 3rem;
        padding-right: 3rem;
    }
}

@media only screen and (max-width: 1050px) {
    html {
        font-size: 85%;
    }

    main {
        grid-template-columns: 0.4fr auto;
        padding-top: 6.5rem;
    }

    .filter-section {
        top: 6.5rem;
    }

    .job-list-section {
        grid-template-columns: 1fr;
    }
}

@media only screen and (max-width: 620px) {
    main {
        gap: 1.5rem;
        padding-left: 1.5rem;
        padding-right: 1.5rem;
    }

    .filter-section {
        position: static;
        grid-column: 1 / -1;
    }

    .filter-form {
        grid-template-columns: 1fr 1fr;
        justify-items: start;
        align-items: end;
    }

    .job-list-section {
        grid-column: 1 / -1;
        gap: 1.5rem;
    }
}
