/* ==================================================
   PAGE CHAMBRES - NICLIB
================================================== */


/* ==================================================
   HERO
================================================== */

.chambres-hero {

    position: relative;

    min-height: 420px;

    background:
        linear-gradient(
            rgba(17, 17, 17, 0.55),
            rgba(17, 17, 17, 0.55)
        ),
        url("assets/images/hotel-rooms.jpg")
        center / cover no-repeat;

    display: flex;

    align-items: center;

    justify-content: center;

    text-align: center;

    padding: 80px 20px;

}


.chambres-hero-overlay {

    position: absolute;

    inset: 0;

    background:
        linear-gradient(
            135deg,
            rgba(17,17,17,.65),
            rgba(201,162,39,.15)
        );

}


.chambres-hero-content {

    position: relative;

    z-index: 2;

    max-width: 850px;

    color: var(--white);

}


.chambres-hero-content .hero-subtitle {

    display: inline-block;

    margin-bottom: 15px;

    color: var(--gold-light);

    font-family: var(--font-text);

    font-size: 14px;

    font-weight: 600;

    letter-spacing: 3px;

    text-transform: uppercase;

}


.chambres-hero-content h1 {

    margin: 0 0 20px;

    font-family: var(--font-title);

    font-size: clamp(42px, 6vw, 68px);

    font-weight: 600;

}


.chambres-hero-content p {

    max-width: 650px;

    margin: auto;

    font-family: var(--font-text);

    font-size: 17px;

    line-height: 1.8;

    color: rgba(255,255,255,.9);

}


/* ==================================================
   SECTION CHAMBRES
================================================== */

.chambres-section {

    max-width: 1200px;

    margin: 0 auto;

    padding: 90px 25px;

}


.chambres-section .section-header {

    max-width: 750px;

    margin: 0 auto 55px;

    text-align: center;

}


.chambres-section .section-badge {

    display: inline-block;

    margin-bottom: 12px;

    color: var(--gold-dark);

    font-size: 13px;

    font-weight: 600;

    letter-spacing: 2px;

    text-transform: uppercase;

}


.chambres-section .section-header h2 {

    margin: 0 0 18px;

    color: var(--black);

    font-family: var(--font-title);

    font-size: clamp(30px, 4vw, 44px);

    font-weight: 600;

}


.chambres-section .section-header p {

    margin: 0;

    color: var(--gray-700);

    font-family: var(--font-text);

    font-size: 15px;

    line-height: 1.8;

}


/* ==================================================
   GRID
================================================== */

.chambres-grid {

    display: grid;

    grid-template-columns:
        repeat(3, minmax(0, 1fr));

    gap: 30px;

}


/* ==================================================
   CARTE CHAMBRE
================================================== */

.chambre-card {

    overflow: hidden;

    background: var(--white);

    border: 1px solid var(--gray-200);

    box-shadow:
        0 10px 30px rgba(0,0,0,.07);

    transition:
        transform .3s ease,
        box-shadow .3s ease;

}


.chambre-card:hover {

    transform: translateY(-7px);

    box-shadow:
        0 18px 40px rgba(0,0,0,.12);

}


/* ==================================================
   IMAGE
================================================== */

.chambre-image {

    position: relative;

    height: 250px;

    overflow: hidden;

}


.chambre-image img {

    width: 100%;

    height: 100%;

    display: block;

    object-fit: cover;

    transition: transform .5s ease;

}


.chambre-card:hover .chambre-image img {

    transform: scale(1.05);

}


/* ==================================================
   STATUT
================================================== */

.chambre-status {

    position: absolute;

    top: 16px;

    right: 16px;

    padding: 7px 12px;

    border-radius: 30px;

    font-family: var(--font-text);

    font-size: 12px;

    font-weight: 600;

    box-shadow: 0 3px 10px rgba(0,0,0,.15);

}


.status-disponible {

    background: #e8f7ee;

    color: #198754;

}


.status-occupee {

    background: #fdeaea;

    color: #dc3545;

}


/* ==================================================
   CONTENU
================================================== */

.chambre-content {

    padding: 25px;

}


.chambre-type {

    display: block;

    margin-bottom: 7px;

    color: var(--gold-dark);

    font-family: var(--font-text);

    font-size: 12px;

    font-weight: 600;

    letter-spacing: 1.5px;

    text-transform: uppercase;

}


.chambre-content h3 {

    margin: 0 0 14px;

    color: var(--black);

    font-family: var(--font-title);

    font-size: 26px;

    font-weight: 600;

}


.chambre-description {

    min-height: 55px;

    margin: 0 0 20px;

    color: var(--gray-700);

    font-family: var(--font-text);

    font-size: 14px;

    line-height: 1.7;

}


/* ==================================================
   INFORMATIONS
================================================== */

.chambre-infos {

    display: flex;

    flex-wrap: wrap;

    gap: 18px;

    padding: 17px 0;

    border-top: 1px solid var(--gray-200);

    border-bottom: 1px solid var(--gray-200);

}


.chambre-infos span {

    display: flex;

    align-items: center;

    gap: 7px;

    color: var(--gray-700);

    font-family: var(--font-text);

    font-size: 13px;

}


.chambre-infos i {

    color: var(--gold-dark);

}


/* ==================================================
   FOOTER CARTE
================================================== */

.chambre-footer {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 15px;

    padding-top: 22px;

}


.chambre-prix {

    display: flex;

    flex-direction: column;

}


.chambre-prix strong {

    color: var(--black);

    font-family: var(--font-title);

    font-size: 22px;

}


.chambre-prix span {

    color: var(--gray-500);

    font-family: var(--font-text);

    font-size: 11px;

}


/* ==================================================
   BOUTON RESERVER
================================================== */

.btn-chambre {

    display: inline-flex;

    align-items: center;

    justify-content: center;

    gap: 9px;

    padding: 11px 17px;

    background: var(--gold);

    color: var(--white);

    text-decoration: none;

    font-family: var(--font-text);

    font-size: 12px;

    font-weight: 600;

    transition:
        background .3s ease,
        transform .3s ease;

}


.btn-chambre:hover {

    background: var(--gold-dark);

    color: var(--white);

    transform: translateY(-2px);

}


/* ==================================================
   INDISPONIBLE
================================================== */

.btn-indisponible {

    display: inline-flex;

    align-items: center;

    justify-content: center;

    padding: 11px 17px;

    background: var(--gray-200);

    color: var(--gray-500);

    font-family: var(--font-text);

    font-size: 12px;

    font-weight: 600;

}


/* ==================================================
   AUCUNE CHAMBRE
================================================== */

.empty-chambres {

    grid-column: 1 / -1;

    padding: 80px 20px;

    text-align: center;

}


.empty-chambres i {

    margin-bottom: 20px;

    color: var(--gold);

    font-size: 45px;

}


.empty-chambres h3 {

    margin: 0 0 10px;

    color: var(--black);

    font-family: var(--font-title);

    font-size: 28px;

}


.empty-chambres p {

    margin: 0;

    color: var(--gray-500);

    font-family: var(--font-text);

}


/* ==================================================
   RESPONSIVE
================================================== */

@media (max-width: 1000px) {

    .chambres-grid {

        grid-template-columns:
            repeat(2, minmax(0, 1fr));

    }

}


@media (max-width: 700px) {

    .chambres-hero {

        min-height: 360px;

        padding: 60px 20px;

    }


    .chambres-hero-content p {

        font-size: 14px;

    }


    .chambres-section {

        padding: 65px 18px;

    }


    .chambres-grid {

        grid-template-columns: 1fr;

        gap: 25px;

    }


    .chambre-image {

        height: 230px;

    }


    .chambre-content {

        padding: 22px;

    }


    .chambre-description {

        min-height: auto;

    }


    .chambre-footer {

        align-items: flex-start;

    }

}


@media (max-width: 430px) {

    .chambres-hero {

        min-height: 320px;

    }


    .chambres-hero-content h1 {

        font-size: 38px;

    }


    .chambre-image {

        height: 210px;

    }


    .chambre-infos {

        flex-direction: column;

        gap: 10px;

    }


    .chambre-footer {

        flex-direction: column;

    }


    .btn-chambre,
    .btn-indisponible {

        width: 100%;

    }

}

/* ==================================================
   MODAL RÉSERVATION
================================================== */

.reservation-modal {

    position: fixed;

    inset: 0;

    z-index: 9999;

    display: flex;

    align-items: center;

    justify-content: center;

    padding: 25px;

    visibility: hidden;

    opacity: 0;

    transition:
        opacity .3s ease,
        visibility .3s ease;

}


.reservation-modal.active {

    visibility: visible;

    opacity: 1;

}


/* OVERLAY */

.reservation-modal-overlay {

    position: absolute;

    inset: 0;

    background: rgba(17,17,17,.72);

    backdrop-filter: blur(5px);

}


/* CONTENU */

.reservation-modal-content {

    position: relative;

    z-index: 2;

    width: 100%;

    max-width: 850px;

    max-height: 90vh;

    overflow-y: auto;

    padding: 35px;

    background: var(--white);

    border-top: 4px solid var(--gold);

    box-shadow:
        0 25px 70px rgba(0,0,0,.30);

    transform: translateY(20px);

    transition: transform .3s ease;

}


.reservation-modal.active
.reservation-modal-content {

    transform: translateY(0);

}


/* HEADER */

.reservation-modal-header {

    display: flex;

    align-items: flex-start;

    justify-content: space-between;

    gap: 20px;

}


.reservation-modal-header h2 {

    margin: 5px 0 0;

    color: var(--black);

    font-family: var(--font-title);

    font-size: 32px;

    font-weight: 600;

}


.reservation-modal-description {

    margin: 12px 55px 25px 0;

    color: var(--gray-700);

    font-family: var(--font-text);

    font-size: 14px;

    line-height: 1.7;

}


/* BOUTON FERMER */

.reservation-close {

    display: flex;

    align-items: center;

    justify-content: center;

    width: 40px;

    height: 40px;

    flex-shrink: 0;

    border: 1px solid var(--gray-200);

    background: var(--white);

    color: var(--gray-700);

    cursor: pointer;

    font-size: 18px;

    transition:
        background .3s ease,
        color .3s ease;

}


.reservation-close:hover {

    background: var(--black);

    color: var(--white);

}


/* CHAMBRE SÉLECTIONNÉE */

.selected-room {

    display: flex;

    align-items: center;

    gap: 15px;

    margin-bottom: 25px;

    padding: 15px 18px;

    background: var(--off-white);

    border-left: 3px solid var(--gold);

}


.selected-room > i {

    color: var(--gold-dark);

    font-size: 22px;

}


.selected-room div {

    display: flex;

    flex-direction: column;

    gap: 3px;

}


.selected-room span {

    color: var(--gray-500);

    font-family: var(--font-text);

    font-size: 11px;

}


.selected-room strong {

    color: var(--black);

    font-family: var(--font-title);

    font-size: 18px;

}


/* FORMULAIRE */

.reservation-form-grid {

    display: grid;

    grid-template-columns:
        repeat(2, minmax(0, 1fr));

    gap: 20px;

}


.reservation-form-grid .form-group {

    display: flex;

    flex-direction: column;

    gap: 7px;

}


.reservation-form-grid label {

    color: var(--black);

    font-family: var(--font-text);

    font-size: 13px;

    font-weight: 600;

}


.reservation-form-grid input,
.reservation-form-grid textarea {

    width: 100%;

    box-sizing: border-box;

    padding: 12px 14px;

    border: 1px solid var(--gray-300);

    background: var(--white);

    color: var(--black);

    font-family: var(--font-text);

    font-size: 13px;

    outline: none;

    transition:
        border-color .3s ease,
        box-shadow .3s ease;

}


.reservation-form-grid input:focus,
.reservation-form-grid textarea:focus {

    border-color: var(--gold);

    box-shadow:
        0 0 0 3px rgba(201,162,39,.10);

}


.reservation-form-grid textarea {

    resize: vertical;

    min-height: 90px;

}


/* ACTIONS */

.reservation-form-actions {

    display: flex;

    align-items: center;

    justify-content: flex-end;

    gap: 12px;

    margin-top: 28px;

    padding-top: 22px;

    border-top: 1px solid var(--gray-200);

}


.btn-reservation-submit,
.btn-reservation-cancel {

    display: inline-flex;

    align-items: center;

    justify-content: center;

    gap: 9px;

    padding: 12px 20px;

    border: none;

    font-family: var(--font-text);

    font-size: 12px;

    font-weight: 600;

    cursor: pointer;

    transition:
        background .3s ease,
        transform .3s ease;

}


.btn-reservation-submit {

    background: var(--gold);

    color: var(--white);

}


.btn-reservation-submit:hover {

    background: var(--gold-dark);

    transform: translateY(-2px);

}


.btn-reservation-cancel {

    background: var(--gray-200);

    color: var(--gray-700);

}


.btn-reservation-cancel:hover {

    background: var(--gray-300);

}


/* EMPÊCHER LE SCROLL DE LA PAGE */

body.reservation-open {

    overflow: hidden;

}

/* ==================================================
   ALERTES RÉSERVATION
================================================== */

.reservation-alert {

    max-width: 900px;

    margin: 30px auto;

    padding: 16px 20px;

    display: flex;

    align-items: center;

    gap: 12px;

    border-radius: 6px;

    font-family: var(--font-text);

    font-size: 14px;

    line-height: 1.5;

}


.reservation-alert i {

    font-size: 20px;

    flex-shrink: 0;

}


.reservation-alert-success {

    background: #eaf7ef;

    color: #198754;

    border: 1px solid #b9e5c8;

}


.reservation-alert-error {

    background: #fceded;

    color: #dc3545;

    border: 1px solid #f1bcbc;

}


/* ==================================================
   RESPONSIVE MODAL
================================================== */

@media (max-width: 700px) {

    .reservation-modal {

        padding: 15px;

    }


    .reservation-modal-content {

        max-height: 94vh;

        padding: 25px 20px;

    }


    .reservation-modal-header h2 {

        font-size: 27px;

    }


    .reservation-modal-description {

        margin-right: 0;

    }


    .reservation-form-grid {

        grid-template-columns: 1fr;

        gap: 16px;

    }


    .reservation-form-actions {

        flex-direction: column;

    }


    .btn-reservation-submit,
    .btn-reservation-cancel {

        width: 100%;

    }

}


@media (max-width: 430px) {

    .reservation-modal-content {

        padding: 22px 16px;

    }


    .reservation-modal-header h2 {

        font-size: 24px;

    }


    .reservation-close {

        width: 36px;

        height: 36px;

    }

}