/* ============ TOPBAR ============ */
.top-bar{
    background:var(--color-primary);
    color:#f7f4ed;
    font-size:12px;
    letter-spacing:.03em;
    transition: margin-top .3s ease;
}
.top-bar .container{
    display:flex;
    justify-content:space-between;
    align-items:center;
    height:38px;
}
.top-bar-left{
    font-weight:500;
}
.top-bar-right{
    display:flex;
    gap:26px;
}
.top-bar-right span{
    display:inline-flex;
    align-items:center;
    gap:6px;
    white-space:nowrap;
}
.top-bar-right i{
    color:var(--color-secondary);
    font-size:13px;
}
.top-bar.is-hidden{
    margin-top:-38px;
}

@media(max-width:768px){
    .top-bar-right{display:none}
}

/* ============ HEADER PRINCIPAL ============ */
.site-header{
    position:fixed;
    top:0;
    left:0;
    width:100%;
    z-index:50;
    background:rgba(248,245,239,.97);
    backdrop-filter:blur(14px);
    border-bottom:1px solid rgba(23,59,59,.08);
    transition: top .3s ease;
}
.site-header.has-topbar{
    top:38px;
}
.site-header.is-scrolled{
    top:0 !important;
}
@media(max-width:768px){
    .site-header.has-topbar{ top:0; }
}

.header-inner{
    height:96px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:30px;
}

.brand{
    display:flex;
    align-items:center;
    gap:14px;
}
.brand-mark{
    display:grid;
    place-items:center;
    width:44px;
    height:44px;
    border-radius:50%;
    background:var(--color-primary);
    color:#fff;
    font-family:var(--serif);
    font-size:24px;
    flex-shrink:0;
}
.brand-name{
    font-family:var(--serif);
    font-size:22px;
    font-weight:600;
    color:var(--ink);
    line-height:1.1;
    letter-spacing:0;
}
.brand-name em{
    font-style:italic;
    color:var(--color-secondary);
}
.brand-tagline{
    display:block;
    font-family:var(--sans);
    font-size:11px;
    font-weight:400;
    letter-spacing:.05em;
    color:#5c7a75;
    text-transform:none;
    margin-top:2px;
}

/* ============ HEADER CTA ============ */
.header-cta{
    /*display:inline-flex;*/
    display:none;
    align-items:center;
    gap:12px;
    background:var(--ink);
    color:#fff !important;
    font-family:var(--sans);
    font-size:13px;
    font-weight:600;
    letter-spacing:.02em;
    text-transform:none;
    padding:13px 10px 13px 24px;
    border-radius:50px;
    white-space:nowrap;
    transition:.25s;
    flex-shrink:0;
}
.header-cta .cta-icon{
    display:grid;
    place-items:center;
    width:32px;
    height:32px;
    border-radius:50%;
    background:var(--color-secondary);
    color:var(--ink);
    font-size:14px;
    transition:.25s;
}
.header-cta:hover{
    background:var(--color-primary);
}
.header-cta:hover .cta-icon{
    transform:rotate(45deg);
}
@media(max-width:992px){
    .header-cta span{display:none}
    .header-cta{padding:10px;gap:0}
}
@media(max-width:768px){
    .header-cta{display:none}
}

/* ============ APPOINTMENT OVERLAP ============ */
.appointment-overlap {
    position: relative;
    z-index: 5;
    margin-top: -110px; /* chevauchement sur le slider */
    padding: 0 20px;
}

.appointment-overlap-inner {
    max-width: 1130px;
    margin: 0 auto;
    display: flex;
    flex-wrap: wrap;
    gap: 30px;
}

.appointment-box {
    border-radius: 4px;
    box-shadow: 0 15px 40px rgba(0,0,0,.12);
}

/* --- Bloc gauche sombre --- */
.appointment-box-dark {
    flex: 1 1 320px;
    background: var(--color-primary);
    color: #fff;
    padding: 45px 40px;
}

.appointment-icon {
    width: 55px;
    height: 55px;
    background: var(--color-secondary);
    border-radius: 6px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    color: #fff;
    margin-bottom: 20px;
}

.appointment-box-dark h3 {
    font-family: Georgia, 'Times New Roman', serif;
    font-size: 26px;
    margin: 0 0 15px;
    color: #fff;
}

.appointment-box-dark p {
    font-size: 15px;
    line-height: 1.7;
    color: #c7d0dc;
    margin-bottom: 18px;
}

.appointment-link {
    color: var(--color-secondary);
    font-weight: 700;
    text-decoration: none;
}
.appointment-link:hover {
    text-decoration: underline;
}

/* --- Bloc droit formulaire --- */
.appointment-box-form {
    flex: 2 1 500px;
    background: #fff;
    padding: 40px;
    display: flex;
    align-items: center;
    border: 2px solid #d9a46b;
}

.appointment-form {
    width: 100%;
}

.form-row {
    display: flex;
    gap: 20px;
    margin-bottom: 20px;
}

.form-row:last-child {
    margin-bottom: 0;
}

.appointment-form input {
    flex: 1;
    padding: 14px 16px;
    border: 1px solid #e2e6eb;
    border-radius: 3px;
    font-size: 14px;
    color: #333;
    font-family: inherit;
}

.appointment-form input::placeholder {
    color: #9aa3ad;
}

.appointment-form input:focus {
    outline: none;
    border-color: var(--color-secondary);
}

.button-book {
    flex: 1;
    background: var(--color-secondary);
    color: #fff;
    border: none;
    border-radius: 3px;
    padding: 14px 16px;
    font-weight: 700;
    font-size: 14px;
    cursor: pointer;
    transition: background .25s ease, opacity .25s ease;
}

.button-book:hover {
    background: var(--color-secondary);
    opacity: .85;
}

/* --- Responsive --- */
@media (max-width: 900px) {
    .appointment-overlap {
        margin-top: -60px;
    }
    .appointment-box-dark,
    .appointment-box-form {
        flex: 1 1 100%;
    }
}

@media (max-width: 600px) {
    .appointment-overlap {
        margin-top: 20px;
    }
    .form-row {
        flex-direction: column;
        gap: 15px;
    }
}

/* Conteneur de champ en position relative pour ancrer l'erreur */
.form-row span.wpcf7-form-control-wrap {
    position: relative;
    display: flex;
    flex-direction: column;
}

/* Message d'erreur sous le champ, sans casser la mise en page */
.form-row .wpcf7-not-valid-tip {
    position: absolute;
    top: 100%;
    left: 0;
    margin-top: 4px;
    font-size: 12px;
    color: #c0392b;
    background: #fdf1f0;
    padding: 2px 8px;
    border-radius: 3px;
    white-space: nowrap;
    z-index: 5;
}

/* Bordure rouge sur le champ invalide */
.form-row .wpcf7-not-valid {
    border-color: #c0392b !important;
}

/* Message global de succès/erreur en haut du formulaire */
.wpcf7-response-output {
    margin: 16px 0 0 !important;
    padding: 12px 16px !important;
    border-radius: 4px;
    font-size: 14px;
}

.wpcf7-form.sent .wpcf7-response-output {
    border: 1px solid var(--color-primary, #1f5b56);
    background: #eaf5f3;
    color: var(--color-primary, #1f5b56);
}

.wpcf7-form.invalid .wpcf7-response-output,
.wpcf7-form.failed .wpcf7-response-output,
.wpcf7-form.aborted .wpcf7-response-output {
    border: 1px solid #c0392b;
    background: #fdf1f0;
    color: #c0392b;
}

/* Petit ajustement pour laisser respirer les erreurs sous les lignes du form */
.form-row {
    margin-bottom: 24px;
}
