/* ==========================================
   CONTACT FORM 7 - STYLE PREMIUM BLEU
   Couleur principale : rgba(38, 97, 233, 0.85)
========================================== */

.reservation-form{
    max-width:900px;
    margin:50px auto;
    padding:45px;
    background:#fff;
    border:1px solid rgba(38,97,233,.15);
    border-radius:28px;
    box-shadow:
        0 20px 60px rgba(38,97,233,.10),
        0 8px 25px rgba(0,0,0,.05);
    position:relative;
    overflow:hidden;
}

/* Bande décorative */

.reservation-form::before{
    content:"";
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:6px;
    background:rgba(38,97,233,.85);
}

/* Fond discret */

.reservation-form::after{
    content:"";
    position:absolute;
    top:-120px;
    right:-120px;
    width:260px;
    height:260px;
    border-radius:50%;
    background:rgba(38,97,233,.05);
    pointer-events:none;
}

/* Box sizing */

.reservation-form *,
.reservation-form *::before,
.reservation-form *::after{
    box-sizing:border-box;
}

/* Titres */

.reservation-form h2{
    font-size:34px;
    text-align:center;
    margin-bottom:12px;
    color:#1f2937;
    font-weight:700;
}

.reservation-form h3{
    margin:40px 0 25px;
    padding-bottom:12px;
    border-bottom:1px solid #edf2f7;
    color:#1f2937;
    font-size:22px;
    font-weight:600;
}

.reservation-form p{
    text-align:center;
    color:#6b7280;
    margin-bottom:35px;
    line-height:1.8;
}

/* Lignes */

.reservation-form .row{
    display:flex;
    gap:24px;
    margin-bottom:22px;
}

.reservation-form .form-group{
    flex:1;
    display:flex;
    flex-direction:column;
}

/* Labels */

.reservation-form label{
    margin-bottom:10px;
    font-weight:600;
    color:#374151;
}

/* Champs */

.reservation-form input,
.reservation-form select,
.reservation-form textarea{

    width:100%;
    padding:16px 20px;

    background:#f8faff;

    border:1px solid #dbe4ff;

    border-radius:16px;

    font-size:15px;

    color:#374151;

    transition:.3s ease;

    outline:none;

    appearance:none;
    -webkit-appearance:none;

}

/* Placeholder */

.reservation-form ::placeholder{
    color:#9ca3af;
}

/* Focus */

.reservation-form input:focus,
.reservation-form textarea:focus,
.reservation-form select:focus{

    background:#fff;

    border-color:rgba(38,97,233,.85);

    box-shadow:0 0 0 5px rgba(38,97,233,.15);

    transform:translateY(-2px);

}

/* Textarea */

.reservation-form textarea{
    min-height:180px;
    resize:vertical;
}

/* Select */

.reservation-form select{
    cursor:pointer;
}

/* Bouton */

.reservation-form input[type="submit"],
.reservation-form button{

    width:100%;

    margin-top:30px;

    padding:18px;

    border:none;

    border-radius:50px;

    background:rgba(38,97,233,.85);

    color:#fff;

    font-size:16px;

    font-weight:700;

    letter-spacing:.5px;

    text-transform:uppercase;

    cursor:pointer;

    transition:.35s ease;

}

/* Hover bouton */

.reservation-form input[type="submit"]:hover,
.reservation-form button:hover{

    background:rgb(24,79,205);

    transform:translateY(-3px);

    box-shadow:0 15px 35px rgba(38,97,233,.35);

}

/* Active */

.reservation-form input[type="submit"]:active{
    transform:translateY(0);
}

/* Checkbox */

.reservation-form .wpcf7-acceptance{
    margin-top:20px;
}

.reservation-form .wpcf7-list-item{
    margin:0;
}

.reservation-form .wpcf7-list-item label{

    display:flex;

    align-items:flex-start;

    gap:10px;

    font-weight:400;

    line-height:1.7;

}

/* Liens */

.reservation-form a{

    color:rgba(38,97,233,.85);

    font-weight:600;

    text-decoration:none;

}

.reservation-form a:hover{

    text-decoration:underline;

}

/* Séparateur */

.reservation-form hr{

    border:none;

    height:1px;

    background:#edf2f7;

    margin:40px 0;

}

/* Messages Contact Form 7 */

.wpcf7 form .wpcf7-response-output{

    border-radius:15px;

    padding:16px;

    margin-top:25px;

    font-weight:500;

}

/* Succès */

.wpcf7 form.sent .wpcf7-response-output{

    background:#ecfdf5;

    border:1px solid #22c55e;

    color:#166534;

}

/* Erreur */

.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.failed .wpcf7-response-output{

    background:#fef2f2;

    border:1px solid #ef4444;

    color:#991b1b;

}

/* Champ invalide */

.wpcf7-not-valid{

    border-color:#ef4444!important;

}

.wpcf7-not-valid-tip{

    color:#ef4444;

    margin-top:6px;

    font-size:13px;

}

/* Spinner */

.wpcf7-spinner{
    vertical-align:middle;
}

/* Bouton pendant envoi */

.wpcf7 form.submitting input[type="submit"]{
    opacity:.7;
    cursor:not-allowed;
}

/* Animation */

.reservation-form{

    animation:fadeUp .6s ease;

}

@keyframes fadeUp{

    from{

        opacity:0;

        transform:translateY(25px);

    }

    to{

        opacity:1;

        transform:translateY(0);

    }

}

/* Responsive */

@media (max-width:768px){

    .reservation-form{

        margin:20px;

        padding:25px;

        border-radius:20px;

    }

    .reservation-form .row{

        flex-direction:column;

        gap:18px;

    }

    .reservation-form h2{

        font-size:28px;

    }

    .reservation-form input,
    .reservation-form textarea,
    .reservation-form select{

        padding:15px 18px;

    }

}