    #ifx-chat-btn {
        position: fixed;
        bottom: 28px;
        right: 28px;
        z-index: 9999;
        width: 60px;
        height: 60px;
        border-radius: 50%;
        background: linear-gradient(135deg, var(--brand) 0%, var(--brand-dk) 100%);
        box-shadow: 0 8px 32px rgba(var(--brand-rgb), .45), 0 2px 8px rgba(0,0,0,.18);
        display: flex;
        align-items: center;
        justify-content: center;
        cursor: pointer;
        border: none;
        transition: transform .2s, box-shadow .2s;
        animation: ifx-pop-in .5s cubic-bezier(.34,1.56,.64,1) both;
    }
    #ifx-chat-btn:hover { transform: scale(1.08); box-shadow: 0 12px 40px rgba(var(--brand-rgb), .55); }
    #ifx-chat-btn:active { transform: scale(.95); }

    @keyframes ifx-pop-in {
        from { transform: scale(0) translateY(20px); opacity: 0; }
        to   { transform: scale(1) translateY(0);    opacity: 1; }
    }

    #ifx-badge {
        position: absolute;
        top: -4px;
        right: -4px;
        width: 22px;
        height: 22px;
        background: #ef4444;
        color: #fff;
        font-size: 11px;
        font-weight: 800;
        border-radius: 50%;
        display: flex;
        align-items: center;
        justify-content: center;
        border: 2px solid #fff;
        animation: ifx-pulse 2s ease-in-out infinite;
    }
    @keyframes ifx-pulse {
        0%,100% { box-shadow: 0 0 0 0 rgba(239,68,68,.6); }
        50%      { box-shadow: 0 0 0 7px rgba(239,68,68,0); }
    }

    #ifx-chat-panel {
        position: fixed;
        bottom: 100px;
        right: 28px;
        z-index: 9998;
        width: 340px;
        max-width: calc(100vw - 40px);
        background: #f8fafc;
        border-radius: 20px;
        box-shadow: 0 20px 60px rgba(0,0,0,.15), 0 4px 16px rgba(0,0,0,.06);
        display: flex;
        flex-direction: column;
        overflow: hidden;
        transform-origin: bottom right;
        transition: transform .3s cubic-bezier(.34,1.56,.64,1), opacity .25s;
        border: 1px solid rgba(0,0,0,.06);
    }
    #ifx-chat-panel.ifx-hidden {
        transform: scale(.88) translateY(12px);
        opacity: 0;
        pointer-events: none;
    }

    /* ── En-tête ── */
    #ifx-chat-header {
        background: linear-gradient(135deg, var(--brand) 0%, var(--brand-dk) 100%);
        padding: 16px 18px;
        display: flex;
        align-items: center;
        gap: 10px;
    }
    .ifx-status-dot {
        width: 8px; height: 8px; background: #4ade80;
        border-radius: 50%; flex-shrink: 0;
        box-shadow: 0 0 0 2px rgba(74,222,128,.3);
        animation: ifx-status-pulse 2.5s ease-in-out infinite;
    }
    @keyframes ifx-status-pulse {
        0%,100% { box-shadow: 0 0 0 2px rgba(74,222,128,.3); }
        50%      { box-shadow: 0 0 0 5px rgba(74,222,128,0); }
    }
    #ifx-chat-header h3 {
        color: #fff; font-size: 14px; font-weight: 700;
        margin: 0; line-height: 1.2; letter-spacing: -.01em;
    }
    #ifx-chat-header p {
        color: rgba(255,255,255,.65); font-size: 11px; margin: 2px 0 0;
        letter-spacing: .01em;
    }
    #ifx-close-btn {
        margin-left: auto; background: rgba(255,255,255,.15); border: none; cursor: pointer;
        color: rgba(255,255,255,.85); font-size: 13px;
        width: 28px; height: 28px; border-radius: 50%;
        display: flex; align-items: center; justify-content: center;
        transition: background .15s, color .15s; flex-shrink: 0;
    }
    #ifx-close-btn:hover { background: rgba(255,255,255,.25); color: #fff; }

    /* ── Corps messages ── */
    #ifx-chat-body {
        padding: 14px 14px 8px;
        display: flex;
        flex-direction: column;
        gap: 8px;
        max-height: 300px;
        overflow-y: auto;
        scroll-behavior: smooth;
        background: #f8fafc;
    }
    #ifx-chat-body::-webkit-scrollbar { width: 4px; }
    #ifx-chat-body::-webkit-scrollbar-track { background: transparent; }
    #ifx-chat-body::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; }

    @keyframes ifx-slide-up {
        from { transform: translateY(8px); opacity: 0; }
        to   { transform: translateY(0);   opacity: 1; }
    }
    .ifx-msg {
        display: flex;
        align-items: flex-end;
        gap: 8px;
        animation: ifx-slide-up .2s ease both;
    }
    .ifx-msg-bot .ifx-bubble {
        background: #fff;
        color: #1e293b;
        border-radius: 16px 16px 16px 4px;
        padding: 11px 14px;
        font-size: 13px;
        line-height: 1.6;
        max-width: 100%;
        box-shadow: 0 1px 4px rgba(0,0,0,.07);
        border: 1px solid #e8eef4;
    }
    .ifx-msg-bot .ifx-bubble strong {
        color: #0f172a;
        font-weight: 700;
    }
    .ifx-msg-user {
        justify-content: flex-end;
    }
    .ifx-msg-user .ifx-bubble {
        background: linear-gradient(135deg, var(--brand) 0%, var(--brand-dk) 100%);
        color: #fff;
        border-radius: 16px 16px 4px 16px;
        padding: 9px 14px;
        font-size: 12.5px;
        font-weight: 600;
        line-height: 1.4;
        max-width: 85%;
        box-shadow: 0 2px 8px rgba(var(--brand-rgb), .3);
    }

    /* ── Zone de réponses ── */
    .ifx-replies {
        display: flex;
        flex-direction: column;
        gap: 6px;
        padding: 8px 14px 14px;
        background: #f8fafc;
        border-top: 1px solid #edf2f7;
        animation: ifx-slide-up .2s .08s ease both;
    }
    .ifx-reply-btn {
        background: #fff;
        border: 1.5px solid #e2e8f0;
        color: #374151;
        font-size: 13px;
        font-weight: 500;
        padding: 9px 14px;
        border-radius: 10px;
        cursor: pointer;
        transition: background .15s, border-color .15s, color .15s, box-shadow .15s, transform .1s;
        line-height: 1.3;
        text-align: left;
        width: 100%;
    }
    .ifx-reply-btn:hover {
        background: rgba(var(--brand-rgb), .05);
        border-color: rgba(var(--brand-rgb), .4);
        color: var(--brand);
        box-shadow: 0 2px 8px rgba(var(--brand-rgb), .1);
        transform: translateY(-1px);
    }
    .ifx-reply-btn:active { transform: translateY(0); box-shadow: none; }
    .ifx-reply-btn.ifx-primary {
        background: linear-gradient(135deg, var(--brand) 0%, var(--brand-dk) 100%);
        color: #fff;
        border-color: transparent;
        font-weight: 600;
        box-shadow: 0 3px 10px rgba(var(--brand-rgb), .3);
    }
    .ifx-reply-btn.ifx-primary:hover {
        opacity: .92;
        transform: translateY(-1px);
        box-shadow: 0 5px 16px rgba(var(--brand-rgb), .35);
    }

    /* ── Indicateur de frappe ── */
    .ifx-typing {
        display: inline-flex; align-items: center; gap: 4px;
        padding: 11px 16px;
        background: #fff;
        border-radius: 16px 16px 16px 4px;
        border: 1px solid #e8eef4;
        box-shadow: 0 1px 4px rgba(0,0,0,.07);
    }
    .ifx-typing span {
        width: 6px; height: 6px; background: #94a3b8; border-radius: 50%;
        animation: ifx-typing-dot 1.2s infinite ease-in-out;
    }
    .ifx-typing span:nth-child(2) { animation-delay: .2s; }
    .ifx-typing span:nth-child(3) { animation-delay: .4s; }
    @keyframes ifx-typing-dot {
        0%,60%,100% { transform: translateY(0); opacity: .6; }
        30%          { transform: translateY(-4px); opacity: 1; }
    }
