/* Widget de chat de los agentes de IA (public/js/agent-chat.js). Todo cuelga de .rq-agent
   para no chocar con los estilos del portal; el color de marca llega por --rq-agent-color. */
.rq-agent {
    --rq-agent-color: #3b81f6;
    /* Texto sobre el color de marca: lo calcula agent-chat.js según el contraste. */
    --rq-agent-on-color: #ffffff;
    /* Color de marca como texto sobre la superficie: oscurecido para llegar a 4.5:1 también
       con colores de portal claros. */
    --rq-agent-link: color-mix(in oklab, var(--rq-agent-color) 55%, #000);
    --rq-agent-ink: #1b1d24;
    /* 4.8:1 sobre la superficie: legible también en textos chicos. */
    --rq-agent-muted: #5f6470;
    /* Neutros con un toque del color de marca, para que la ventana pertenezca al portal. */
    --rq-agent-line: color-mix(in oklab, var(--rq-agent-color) 8%, #e4e6eb);
    /* Borde de controles (pills): 3:1 sobre la superficie, a diferencia de los separadores. */
    --rq-agent-control-line: color-mix(in oklab, var(--rq-agent-color) 15%, #8a8f9a);
    /* Velo sobre el color de marca (hover, avatar): sigue al texto, claro u oscuro. */
    --rq-agent-on-color-veil: color-mix(in srgb, var(--rq-agent-on-color) 20%, transparent);
    --rq-agent-tooltip: #111827;
    --rq-agent-online: #34d399;
    --rq-agent-surface: #fdfdfd;
    --rq-agent-canvas: color-mix(in oklab, var(--rq-agent-color) 3%, #f7f8fa);
    --rq-agent-soft: color-mix(in oklab, var(--rq-agent-color) 7%, #f1f2f5);
    --rq-agent-success: #1d7a46;
    --rq-agent-danger: #b42318;
    --rq-agent-danger-soft: #fef2f2;
    --rq-agent-danger-line: #fecaca;
    --rq-agent-radius: 16px;
    --rq-agent-shadow: 0 12px 40px rgba(17, 24, 39, 0.18), 0 2px 8px rgba(17, 24, 39, 0.08);
    font-family: inherit;
    font-size: 15px;
    line-height: 1.5;
    color: var(--rq-agent-ink);
}

.rq-agent *,
.rq-agent *::before,
.rq-agent *::after {
    box-sizing: border-box;
}

.rq-agent button {
    font: inherit;
    cursor: pointer;
}

.rq-agent :focus-visible {
    outline: 2px solid var(--rq-agent-link);
    outline-offset: 2px;
}

/* Sobre la cabecera (fondo de marca) el anillo usa el color del texto de la cabecera. */
.rq-agent__header :focus-visible {
    outline-color: var(--rq-agent-on-color);
}

/* ---------- Burbuja ---------- */
.rq-agent__fab {
    position: fixed;
    right: 20px;
    bottom: calc(20px + var(--rq-agent-lift, 0px));
    z-index: 42424242;
    width: 56px;
    height: 56px;
    border: 0;
    border-radius: 50%;
    background: var(--rq-agent-color);
    color: var(--rq-agent-on-color);
    box-shadow: 0 6px 20px rgba(17, 24, 39, 0.25);
    display: grid;
    place-items: center;
    transition: transform 0.18s ease, box-shadow 0.18s ease;
}

.rq-agent__fab:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 24px rgba(17, 24, 39, 0.3);
}

.rq-agent__fab img {
    width: 30px;
    height: 30px;
    object-fit: contain;
}

.rq-agent__fab svg {
    width: 26px;
    height: 26px;
}

.rq-agent--open .rq-agent__fab {
    transform: scale(0.92);
}

.rq-agent__tooltip {
    position: fixed;
    right: 88px;
    bottom: calc(30px + var(--rq-agent-lift, 0px));
    z-index: 42424242;
    max-width: 240px;
    padding: 10px 34px 10px 14px;
    border-radius: 12px;
    background: var(--rq-agent-tooltip);
    color: var(--rq-agent-surface);
    font-size: 14px;
    box-shadow: 0 6px 18px rgba(17, 24, 39, 0.2);
    animation: rq-agent-pop 0.25s ease-out;
}

.rq-agent__tooltip-close {
    position: absolute;
    top: 4px;
    right: 4px;
    width: 26px;
    height: 26px;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: inherit;
    opacity: 0.75;
    line-height: 1;
}

/* ---------- Ventana ---------- */
.rq-agent__window {
    position: fixed;
    right: 20px;
    bottom: calc(88px + var(--rq-agent-lift, 0px));
    z-index: 42424243;
    width: 400px;
    height: min(640px, calc(100vh - 120px - var(--rq-agent-lift, 0px)));
    height: min(640px, calc(100dvh - 120px - var(--rq-agent-lift, 0px)));
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border-radius: var(--rq-agent-radius);
    background: var(--rq-agent-surface);
    box-shadow: var(--rq-agent-shadow);
    transform-origin: bottom right;
    animation: rq-agent-pop 0.2s ease-out;
}

.rq-agent__window[hidden] {
    display: none;
}

.rq-agent__header {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 12px 14px 16px;
    background: var(--rq-agent-color);
    color: var(--rq-agent-on-color);
}

.rq-agent__avatar {
    flex: none;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--rq-agent-on-color-veil);
    display: grid;
    place-items: center;
    overflow: hidden;
    font-weight: 700;
}

.rq-agent__avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    background: var(--rq-agent-surface);
}

.rq-agent__identity {
    flex: 1;
    min-width: 0;
}

.rq-agent__name {
    margin: 0;
    font-size: 16px;
    font-weight: 700;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.rq-agent__status {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    opacity: 0.9;
}

.rq-agent__status::before {
    content: '';
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--rq-agent-online);
    box-shadow: 0 0 0 2px var(--rq-agent-on-color-veil);
}

.rq-agent__icon-btn {
    flex: none;
    width: 36px;
    height: 36px;
    border: 0;
    border-radius: 10px;
    background: transparent;
    color: inherit;
    display: grid;
    place-items: center;
}

.rq-agent__icon-btn:hover {
    background: var(--rq-agent-on-color-veil);
}

.rq-agent__icon-btn svg {
    width: 20px;
    height: 20px;
}

/* ---------- Mensajes ---------- */
.rq-agent__body {
    position: relative;
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    background: var(--rq-agent-canvas);
}

.rq-agent__log {
    flex: 1;
    overflow-y: auto;
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    /* Al llegar al final, el scroll no arrastra la página de atrás. */
    overscroll-behavior: contain;
}

.rq-agent__msg {
    max-width: 88%;
    padding: 10px 14px;
    border-radius: 14px;
    overflow-wrap: anywhere;
    animation: rq-agent-in 0.18s ease-out;
}

.rq-agent__msg--assistant {
    align-self: flex-start;
    background: var(--rq-agent-surface);
    border: 1px solid var(--rq-agent-line);
    border-bottom-left-radius: 4px;
}

.rq-agent__msg--user {
    align-self: flex-end;
    background: var(--rq-agent-color);
    color: var(--rq-agent-on-color);
    border-bottom-right-radius: 4px;
    white-space: pre-wrap;
}

.rq-agent__msg--error {
    align-self: stretch;
    max-width: none;
    background: var(--rq-agent-danger-soft);
    border: 1px solid var(--rq-agent-danger-line);
    color: var(--rq-agent-danger);
    font-size: 14px;
}

.rq-agent__msg p {
    margin: 0 0 8px;
}

.rq-agent__msg p:last-child,
.rq-agent__msg ul:last-child,
.rq-agent__msg ol:last-child {
    margin-bottom: 0;
}

.rq-agent__msg ul,
.rq-agent__msg ol {
    margin: 0 0 8px;
    padding-left: 20px;
}

.rq-agent__msg li + li {
    margin-top: 4px;
}

/* !important: main.css quita el subrayado de todo enlace con !important, y aquí es lo que
   distingue un enlace sin depender del color. */
.rq-agent__msg a {
    color: var(--rq-agent-link);
    text-decoration: underline !important;
    text-underline-offset: 2px;
}

.rq-agent__msg--user a {
    color: inherit;
}

.rq-agent__msg code {
    padding: 1px 5px;
    border-radius: 4px;
    background: var(--rq-agent-soft);
    font-size: 0.92em;
    overflow-wrap: anywhere;
}

.rq-agent__status-line {
    margin-top: auto;
    align-self: flex-start;
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--rq-agent-muted);
    font-size: 13px;
}

.rq-agent__dots {
    display: inline-flex;
    gap: 4px;
}

.rq-agent__dots span {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: currentColor;
    animation: rq-agent-blink 1.2s infinite ease-in-out both;
}

.rq-agent__dots span:nth-child(2) {
    animation-delay: 0.15s;
}

.rq-agent__dots span:nth-child(3) {
    animation-delay: 0.3s;
}

/* Base de los botones redondeados: acciones, reintentar, sugerencias y propuestas. */
.rq-agent__pill {
    min-height: 36px;
    padding: 6px 14px;
    border: 1px solid var(--rq-agent-control-line);
    border-radius: 999px;
    background: var(--rq-agent-surface);
    color: var(--rq-agent-ink);
    font-size: 14px;
    font-weight: 600;
}

.rq-agent__action {
    margin-top: 10px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    border-color: var(--rq-agent-link);
    color: var(--rq-agent-link);
}

.rq-agent__action:hover {
    border-color: var(--rq-agent-color);
    background: var(--rq-agent-color);
    color: var(--rq-agent-on-color);
}

.rq-agent__action svg {
    width: 16px;
    height: 16px;
}

.rq-agent__retry {
    display: block;
    margin-top: 8px;
    border-color: currentColor;
    background: transparent;
    color: inherit;
    font-size: 13px;
}

/* ---------- Sugerencias iniciales ---------- */
/* Los mensajes parten arriba; las sugerencias y el estado ("Preparando la respuesta…")
   quedan abajo, junto al campo de texto. */
.rq-agent__suggestions {
    margin-top: auto;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    padding-left: 2px;
}

.rq-agent__suggestion {
    font-weight: 400;
    text-align: left;
    transition: border-color 0.15s ease, background 0.15s ease;
}

.rq-agent__suggestion:hover {
    border-color: var(--rq-agent-color);
    background: var(--rq-agent-soft);
}

/* ---------- Propuestas (cambios que la persona aplica o descarta) ---------- */
.rq-agent__proposal {
    margin-top: 12px;
    padding: 12px 14px;
    border: 1px solid var(--rq-agent-line);
    border-radius: 12px;
    background: var(--rq-agent-canvas);
}

.rq-agent__proposal-title {
    margin: 0 0 6px;
    font-weight: 700;
    font-size: 14px;
}

.rq-agent__proposal-lines {
    margin: 0 0 10px;
    padding-left: 18px;
    font-size: 14px;
    overflow-wrap: anywhere;
    /* Los textos propuestos van completos y con sus párrafos. */
    white-space: pre-line;
}

.rq-agent__proposal-lines li + li {
    margin-top: 2px;
}

.rq-agent__proposal-footer {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}

.rq-agent__proposal-apply {
    border-color: var(--rq-agent-color);
    background: var(--rq-agent-color);
    color: var(--rq-agent-on-color);
}

.rq-agent__proposal-apply:disabled,
.rq-agent__proposal-discard:disabled {
    opacity: 0.55;
    cursor: progress;
}

.rq-agent__proposal-status {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 0;
    font-size: 14px;
    color: var(--rq-agent-muted);
}

.rq-agent__proposal[data-state="applied"] .rq-agent__proposal-status {
    color: var(--rq-agent-success);
    font-weight: 600;
}

.rq-agent__proposal[data-state="failed"] .rq-agent__proposal-status,
.rq-agent__proposal-error {
    color: var(--rq-agent-danger);
}

.rq-agent__proposal-error {
    flex-basis: 100%;
    margin: 4px 0 0;
    font-size: 13px;
}

.rq-agent__proposal-status svg {
    width: 16px;
    height: 16px;
}

/* ---------- Tarjetas (candidatos de Match) ---------- */
.rq-agent__cards {
    display: grid;
    gap: 8px;
    margin: 12px 0 0;
    padding: 0;
    list-style: none;
}

.rq-agent__card {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 6px 12px;
    padding: 10px 12px;
    border: 1px solid var(--rq-agent-line);
    border-radius: 12px;
    background: var(--rq-agent-surface);
}

.rq-agent__card-name {
    margin: 0;
    font-weight: 700;
    font-size: 14px;
}

.rq-agent__card-actions {
    display: flex;
    gap: 4px 8px;
    font-size: 14px;
}

.rq-agent__card-actions button,
.rq-agent__card-actions a {
    display: inline-flex;
    align-items: center;
    min-height: 32px;
    padding: 4px;
    border: 0;
    background: none;
    color: var(--rq-agent-link);
    font-weight: 600;
    text-align: left;
    white-space: nowrap;
    text-decoration: underline !important;
    text-underline-offset: 2px;
}

/* ---------- Lista de conversaciones ---------- */
.rq-agent__history {
    position: absolute;
    inset: 0;
    z-index: 1;
    display: flex;
    flex-direction: column;
    background: var(--rq-agent-surface);
}

.rq-agent__history[hidden] {
    display: none;
}

.rq-agent__history-title {
    margin: 0;
    padding: 14px 16px 8px;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    color: var(--rq-agent-muted);
}

.rq-agent__history-list {
    flex: 1;
    overflow-y: auto;
    margin: 0;
    padding: 0 8px 12px;
    list-style: none;
}

.rq-agent__history-item {
    display: flex;
    align-items: center;
    border-radius: 10px;
}

.rq-agent__history-item:hover,
.rq-agent__history-item--current {
    background: var(--rq-agent-soft);
}

.rq-agent__history-open {
    flex: 1;
    min-width: 0;
    padding: 10px 12px;
    border: 0;
    background: transparent;
    text-align: left;
    color: inherit;
}

.rq-agent__history-name {
    display: block;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.rq-agent__history-date {
    display: block;
    font-size: 12px;
    color: var(--rq-agent-muted);
}

.rq-agent__history-archive {
    flex: none;
    width: 34px;
    height: 34px;
    margin-right: 4px;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: var(--rq-agent-muted);
    display: grid;
    place-items: center;
}

.rq-agent__history-archive:hover {
    background: var(--rq-agent-line);
    color: var(--rq-agent-ink);
}

.rq-agent__history-archive svg {
    width: 16px;
    height: 16px;
}

.rq-agent__history-empty {
    padding: 24px 16px;
    color: var(--rq-agent-muted);
    text-align: center;
}

/* ---------- Composer ---------- */
.rq-agent__composer {
    display: flex;
    align-items: flex-end;
    gap: 8px;
    padding: 10px 12px;
    border-top: 1px solid var(--rq-agent-line);
    background: var(--rq-agent-surface);
}

.rq-agent__input {
    flex: 1;
    max-height: 140px;
    min-height: 42px;
    padding: 10px 12px;
    border: 1px solid var(--rq-agent-line);
    border-radius: 12px;
    resize: none;
    font: inherit;
    color: inherit;
    background: var(--rq-agent-surface);
}

.rq-agent__input:focus {
    outline: 2px solid var(--rq-agent-link);
    outline-offset: 1px;
    border-color: var(--rq-agent-link);
}

.rq-agent__send {
    flex: none;
    width: 42px;
    height: 42px;
    border: 0;
    border-radius: 12px;
    background: var(--rq-agent-color);
    color: var(--rq-agent-on-color);
    display: grid;
    place-items: center;
}

.rq-agent__send:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

.rq-agent__send svg {
    width: 20px;
    height: 20px;
}

.rq-agent__footer {
    padding: 0 16px 10px;
    background: var(--rq-agent-surface);
    color: var(--rq-agent-muted);
    font-size: 12px;
    line-height: 1.35;
    text-align: center;
}

@keyframes rq-agent-pop {
    from {
        opacity: 0;
        transform: translateY(8px) scale(0.98);
    }
    to {
        opacity: 1;
        transform: none;
    }
}

@keyframes rq-agent-in {
    from {
        opacity: 0;
        transform: translateY(4px);
    }
    to {
        opacity: 1;
        transform: none;
    }
}

@keyframes rq-agent-blink {
    0%, 80%, 100% {
        opacity: 0.25;
    }
    40% {
        opacity: 1;
    }
}

/* Burbuja a la izquierda (posición configurable del Coach). */
.rq-agent--left .rq-agent__fab,
.rq-agent--left .rq-agent__window {
    right: auto;
    left: 20px;
}

.rq-agent--left .rq-agent__window {
    transform-origin: bottom left;
}

.rq-agent--left .rq-agent__tooltip {
    right: auto;
    left: 88px;
}

/* Variante elevada: 60px más arriba, sobre otros botones flotantes del portal. */
.rq-agent--elevated {
    --rq-agent-lift: 60px;
}

/* En pantallas bajas la elevación le quitaría demasiada altura a la ventana. */
@media (max-height: 520px) {
    .rq-agent--elevated {
        --rq-agent-lift: 0px;
    }
}

/* ---------- Incrustado (página completa o panel) ---------- */
.rq-agent--inline .rq-agent__window {
    position: relative;
    inset: auto;
    z-index: auto;
    width: 100%;
    height: var(--rq-agent-inline-height, min(720px, calc(100vh - 180px)));
    height: var(--rq-agent-inline-height, min(720px, calc(100dvh - 180px)));
    border: 1px solid var(--rq-agent-line);
    box-shadow: none;
    animation: none;
}

@media (max-width: 480px) {
    .rq-agent:not(.rq-agent--inline) .rq-agent__window {
        inset: 0;
        width: auto;
        height: auto;
        border-radius: 0;
    }

    /* Bajo 16 px, iOS acerca la página al enfocar el campo. */
    .rq-agent__input {
        font-size: 16px;
    }

    /* Ventana a pantalla completa: el composer no queda bajo la barra de inicio. */
    .rq-agent:not(.rq-agent--inline) .rq-agent__composer {
        padding-bottom: max(10px, env(safe-area-inset-bottom));
    }

    /* Áreas táctiles de 44 px en pantallas táctiles. */
    .rq-agent__icon-btn,
    .rq-agent__history-archive,
    .rq-agent__tooltip-close,
    .rq-agent__send {
        width: 44px;
        height: 44px;
    }

    .rq-agent__pill,
    .rq-agent__card-actions button,
    .rq-agent__card-actions a {
        min-height: 44px;
    }

    .rq-agent__tooltip {
        right: 84px;
        max-width: calc(100vw - 110px);
        padding-right: 48px;
    }

    .rq-agent--open .rq-agent__fab,
    .rq-agent--open .rq-agent__tooltip {
        display: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .rq-agent *,
    .rq-agent *::before,
    .rq-agent *::after {
        animation: none !important;
        transition: none !important;
        scroll-behavior: auto !important;
    }
}
