/* Personal chat launcher and reference-inspired conversation modal. */
.chat-launcher { position:fixed; right:12px; bottom:60px; z-index:1030; display:flex; flex-direction:column; align-items:center; padding:0; border:0; background:none; cursor:pointer; color:#15201d; transform:scale(.75); transform-origin:bottom right; transition:transform .2s; }
.chat-launcher:hover { transform:translateY(-3px) scale(.75); }
.chat-launcher:focus-visible { outline:3px solid #20c997; outline-offset:5px; border-radius:16px; }
.chat-launcher__bubble { padding:8px 13px; background:#20c997; border:1px solid #b9f4df; border-radius:16px 16px 4px 16px; box-shadow:0 5px 20px #0003; font:600 12px Poppins,sans-serif; }
.chat-launcher__avatar { display:block; width:110px; height:116px; position:relative; }
.avatar-fallback { position:absolute; inset:0; background:url('../images/avatar.png') center / contain no-repeat; }
.avatar-ready > .avatar-fallback { display:none; }
.avatar-canvas { display:block; width:100%; height:100%; filter:drop-shadow(0 8px 9px #00000015); }
.chat-dialog { border:0; border-radius:28px; background:#fff; color:#111; width:min(760px,calc(100% - 32px)); max-height:calc(100dvh - 32px); padding:32px 48px 20px; overflow:auto; box-shadow:0 24px 100px #0004; text-align:center; }
.chat-dialog:not([open]) { display:none; }
.chat-dialog[open] { animation:chat-dialog-in .32s cubic-bezier(.2,.8,.2,1); }
.chat-dialog::backdrop { background:#11182799; backdrop-filter:blur(7px); }
.chat-dialog__close { position:absolute; right:18px; top:12px; width:42px; height:42px; border:0; border-radius:50%; background:#f4f5f7; color:#333; font-size:29px; cursor:pointer; }
.chat-dialog__greeting { margin:18px 0 3px; font-size:24px; font-weight:600; }
.chat-dialog h2 { margin:0; font-size:clamp(22px,3.5vw,38px); font-weight:800; letter-spacing:-1.5px; line-height:1.2; color:#080808; }
.chat-dialog__avatar { width:280px; height:240px; margin:4px auto; position:relative; }
.chat-dialog__messages:empty { display:none; }
.chat-dialog__messages { max-height:160px; overflow:auto; text-align:left; margin:0 0 14px; padding:4px; font-size:13px; }
.chat-message { width:fit-content; max-width:85%; padding:10px 14px; background:#f3f5f8; border-radius:14px 14px 3px 14px; margin:8px 0 8px auto; white-space:pre-wrap; overflow-wrap:anywhere; text-align:left; }
.chat-message--user { background:#eaf2ff; margin-left:0; margin-right:auto; border-radius:14px 14px 14px 3px; }
.chat-dialog__suggestions { display:flex; justify-content:center; gap:8px; margin:0 0 14px; }
.chat-dialog__suggestions button { border:1px solid #e6e7eb; border-radius:24px; background:white; padding:7px 14px; font:inherit; font-size:11px; cursor:pointer; color:#555; }
.chat-dialog__form { display:flex; align-items:center; gap:10px; padding:8px 9px 8px 22px; border:1px solid #e1e2e6; border-radius:50px; }
.chat-dialog__form:focus-within { border-color:#6199ee; box-shadow:0 0 0 3px #6199ee20; }
.chat-dialog__form input { width:100%; min-width:0; border:0; outline:0; background:transparent; color:#242424; font:inherit; font-size:16px; }
.chat-dialog__form button { flex-shrink:0; width:46px; height:46px; border:0; border-radius:50%; background:#6199ee; color:white; font-size:27px; cursor:pointer; }
.chat-dialog__note { margin:12px 0 0; font-size:10px; color:#888; }
.chat-dialog__note a { color:#506a91; }
.chat-dialog button:focus-visible { outline:3px solid #6199ee; outline-offset:3px; }
body.chat-open { overflow:hidden; }
@keyframes chat-dialog-in { from { opacity:0; transform:translateY(24px) scale(.96); } to { opacity:1; transform:none; } }
@media(max-width:575px) { .chat-launcher { right:8px; } .chat-launcher__avatar { width:90px; height:96px; } .chat-dialog { padding:25px 18px 18px; border-radius:22px; } .chat-dialog__greeting { font-size:20px; } .chat-dialog__avatar { width:230px; height:210px; } }
@media(prefers-reduced-motion:reduce) { .chat-launcher { transition:none; } .chat-dialog[open] { animation:none; } }
/* Keep the composer visible as the conversation grows. */
.chat-dialog:has(.chat-dialog__messages:not(:empty)) .chat-dialog__avatar { height:160px; width:210px; }
@media(max-height:650px) { .chat-dialog { padding-top:18px; } .chat-dialog__greeting { margin-top:8px; } .chat-dialog__avatar { height:150px; width:190px; } }
.avatar-status { position:absolute; left:50%; bottom:0; transform:translateX(-50%); color:#687387; background:#f4f6fa; border-radius:20px; padding:4px 12px; font-size:11px; white-space:nowrap; }
.avatar-status:empty { display:none; }
.chat-dialog button:disabled { opacity:.45; cursor:wait; }
/* Pastel rainbow light stays behind the modal content and follows the pointer. */
.chat-dialog {
  background-color:#fff;
  background-image:
    radial-gradient(ellipse 240px 210px at calc(var(--rainbow-x,50%) - 100px) calc(var(--rainbow-y,45%) - 65px),#ff99b552,transparent 80%),
    radial-gradient(ellipse 250px 220px at calc(var(--rainbow-x,50%) + 95px) calc(var(--rainbow-y,45%) - 60px),#c4a4ff5c,transparent 80%),
    radial-gradient(ellipse 250px 210px at calc(var(--rainbow-x,50%) + 115px) calc(var(--rainbow-y,45%) + 75px),#88dfff57,transparent 80%),
    radial-gradient(ellipse 235px 200px at calc(var(--rainbow-x,50%) - 10px) calc(var(--rainbow-y,45%) + 115px),#a6efca4d,transparent 80%),
    radial-gradient(ellipse 230px 200px at calc(var(--rainbow-x,50%) - 120px) calc(var(--rainbow-y,45%) + 65px),#ffe69e57,transparent 80%);
}
.chat-dialog__form { background:rgba(255,255,255,.78); }

.chat-verification { display: flex; justify-content: center; margin: 8px auto; }
.chat-message--links a { display: inline-block; margin-right: 10px; text-decoration: underline; }
