/* Chat du site (T7.6, public/_chat.html.twig) : pilule champagne en bas à droite, planche brun nuit
   relevée à l'ouverture, plein écran sur mobile. Au-dessus de l'en-tête (50), sous le bandeau de
   consentement (100). */
.chat {
    position: fixed;
    inset-block-end: var(--space-4);
    inset-inline-end: var(--space-4);
    z-index: 60;
    font-family: var(--font-body);
}

.chat__launcher {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    min-height: var(--tap-size);
    padding: var(--space-2) var(--space-5) var(--space-2) var(--space-4);
    border: 0;
    border-radius: var(--radius-pill);
    background: var(--btn-bg);
    color: var(--btn-text);
    font: inherit;
    font-weight: var(--fw-bold);
    box-shadow: var(--shadow-plate);
    cursor: pointer;
    transition: background-color 0.2s var(--ease-out), transform 0.2s var(--ease-out);
}

.chat__launcher:hover {
    background: var(--btn-bg-hover);
}

.chat__launcher:active {
    transform: translateY(1px);
}

.chat__launcher[aria-expanded="true"] {
    display: none;
}

.chat__launcher-icon,
.chat__close span,
.chat__send span {
    display: block;
    inline-size: 1.375rem;
    block-size: 1.375rem;
    background: currentColor;
    mask: var(--icon) center / contain no-repeat;
}

.chat__launcher-icon {
    --icon: var(--icon-chatbot);
}

.chat__panel {
    display: flex;
    flex-direction: column;
    inline-size: min(24rem, calc(100vw - 2 * var(--space-4)));
    block-size: min(36rem, calc(100dvh - 2 * var(--space-4)));
    border: 1px solid var(--color-line-night-strong);
    border-radius: var(--radius-lg);
    background: var(--color-night-raised);
    color: var(--color-bone);
    box-shadow: var(--shadow-plate);
    overflow: hidden;
}

.chat__panel[hidden] {
    display: none;
}

.chat__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-3);
    padding: var(--space-4) var(--space-4) var(--space-3) var(--space-5);
    border-block-end: 1px solid var(--color-line-night);
}

.chat__title {
    margin: 0;
    font-family: var(--font-display);
    font-size: var(--text-base);
    font-weight: var(--fw-display);
    letter-spacing: var(--tracking-display);
}

.chat__subtitle {
    margin: 0;
    color: var(--color-dust);
    font-size: var(--text-xs);
    letter-spacing: var(--tracking-label);
    text-transform: uppercase;
}

.chat__close,
.chat__send {
    display: grid;
    place-items: center;
    flex: none;
    inline-size: var(--tap-size);
    block-size: var(--tap-size);
    border: 0;
    border-radius: var(--radius-pill);
    cursor: pointer;
}

.chat__close {
    background: transparent;
    color: var(--color-dust);
}

.chat__close:hover {
    background: var(--color-night-high);
    color: var(--color-bone);
}

.chat__close span {
    --icon: var(--icon-x);
}

.chat__log {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    flex: 1;
    margin: 0;
    padding: var(--space-4) var(--space-4) var(--space-4) var(--space-5);
    list-style: none;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.chat__message {
    max-inline-size: 88%;
    padding: var(--space-3) var(--space-4);
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    line-height: var(--leading-body);
    white-space: pre-line;
    overflow-wrap: anywhere;
}

.chat__message--assistant {
    align-self: flex-start;
    border-end-start-radius: var(--radius-sm);
    background: var(--color-night-high);
}

.chat__message--visitor {
    align-self: flex-end;
    border-end-end-radius: var(--radius-sm);
    background: var(--color-champagne);
    color: var(--color-night);
}

.chat__message--advisor {
    align-self: flex-start;
    border-end-start-radius: var(--radius-sm);
    background: var(--color-night-high);
    box-shadow: inset 2px 0 0 var(--color-champagne);
}

.chat__author {
    display: block;
    margin-block-end: var(--space-1);
    color: var(--color-champagne);
    font-size: var(--text-xs);
    font-weight: var(--fw-bold);
}

.chat__message--pending {
    color: var(--color-dust);
    font-style: italic;
}

.chat__message a {
    color: var(--text-link);
}

.chat__form {
    display: flex;
    align-items: flex-end;
    gap: var(--space-2);
    padding: var(--space-3) var(--space-3) var(--space-2) var(--space-4);
    border-block-start: 1px solid var(--color-line-night);
}

.chat__input {
    flex: 1;
    min-block-size: var(--tap-size);
    max-block-size: 8rem;
    padding: var(--space-2) var(--space-3);
    border: 1px solid var(--field-line);
    border-radius: var(--radius-md);
    background: var(--color-night);
    color: var(--color-bone);
    font: inherit;
    font-size: var(--text-base);
    resize: none;
}

.chat__input:focus-visible {
    outline: 2px solid var(--focus-ring);
    outline-offset: 1px;
}

.chat__send {
    background: var(--btn-bg);
    color: var(--btn-text);
}

.chat__send:hover {
    background: var(--btn-bg-hover);
}

.chat__send:disabled {
    cursor: progress;
    opacity: 0.6;
}

.chat__send span {
    --icon: var(--icon-send);
}

.chat__notice {
    margin: 0;
    padding: 0 var(--space-4) var(--space-2);
    color: var(--color-dust);
    font-size: var(--text-2xs);
    line-height: var(--leading-snug);
    text-align: center;
}

.chat__notice a {
    color: var(--text-link);
}

/* Mobile : la conversation prend l'écran, le clavier ne doit rien masquer. */
@media (max-width: 30rem) {
    .chat:has(.chat__panel:not([hidden])) {
        inset: 0;
    }

    .chat__panel {
        inline-size: 100vw;
        block-size: 100dvh;
        border: 0;
        border-radius: 0;
    }
}

@media (prefers-reduced-motion: reduce) {
    .chat__launcher {
        transition: none;
    }
}
