/* =========================================================
   GTA VI — Estado de Leonida
   Widget flutuante do GNM Bot (IA) — usado em todas as páginas
   ========================================================= */

.gnm-fab{
    position:fixed; right:22px; bottom:22px; z-index:1400;
    width:60px; height:60px; border-radius:50%; border:none;
    display:flex; align-items:center; justify-content:center;
    background:radial-gradient(120% 120% at 30% 22%, #FF6FB2 0%, var(--magenta) 45%, var(--violet) 100%);
    box-shadow:0 8px 26px rgba(0,0,0,.55), 0 0 0 1px rgba(255,255,255,.08) inset, 0 0 26px rgba(255,46,136,.55);
    cursor:var(--pointer,pointer);
    color:#fff;
    transition:transform .3s cubic-bezier(.22,1,.3,1), box-shadow .3s ease;
}
.gnm-fab::before{
    content:''; position:absolute; inset:-6px; border-radius:50%;
    border:1.5px solid rgba(255,46,136,.55);
    animation:gnm-pulse 2.6s ease-out infinite;
}
@keyframes gnm-pulse{
    0%{ transform:scale(.86); opacity:.9; }
    75%{ transform:scale(1.35); opacity:0; }
    100%{ opacity:0; }
}
.gnm-fab:hover{ transform:translateY(-3px) scale(1.05); box-shadow:0 12px 32px rgba(0,0,0,.6), 0 0 34px rgba(255,46,136,.75); }
.gnm-fab svg{ width:26px; height:26px; position:relative; z-index:1; }
.gnm-fab .gnm-fab-close{ display:none; }
.gnm-fab.open .gnm-fab-chat{ display:none; }
.gnm-fab.open .gnm-fab-close{ display:block; }
.gnm-fab .gnm-dot{
    position:absolute; top:4px; right:4px; width:12px; height:12px; border-radius:50%;
    background:#2ED573; border:2px solid var(--night, #0A0518); z-index:2;
}
.gnm-fab.open .gnm-dot{ display:none; }

.gnm-badge{
    position:absolute; top:-4px; left:-4px; z-index:2;
    background:var(--gold); color:#160B32; font-family:var(--display);
    font-size:.62rem; letter-spacing:.06em; padding:2px 6px; border-radius:999px;
    box-shadow:0 2px 8px rgba(0,0,0,.5);
    transform:rotate(-8deg);
}

.gnm-panel{
    position:fixed; right:22px; bottom:94px; z-index:1450;
    width:min(376px, 92vw); height:min(560px, 74vh);
    display:flex; flex-direction:column; overflow:hidden;
    border-radius:22px;
    background:
        radial-gradient(120% 60% at 100% 0%, rgba(122,28,110,.5) 0%, transparent 55%),
        rgba(12,7,26,.97);
    border:1px solid rgba(255,46,136,.4);
    box-shadow:0 24px 70px rgba(0,0,0,.65), 0 0 40px rgba(255,46,136,.22);
    backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
    opacity:0; transform:translateY(18px) scale(.97); pointer-events:none;
    transition:opacity .28s ease, transform .32s cubic-bezier(.22,1,.3,1);
}
.gnm-panel.active{ opacity:1; transform:translateY(0) scale(1); pointer-events:auto; }

.gnm-panel-header{
    display:flex; align-items:center; gap:12px; padding:16px 18px;
    background:linear-gradient(135deg, rgba(255,46,136,.22), rgba(176,107,255,.14));
    border-bottom:1px solid rgba(255,255,255,.08);
    flex-shrink:0;
}
.gnm-avatar{
    width:40px; height:40px; border-radius:50%; flex-shrink:0;
    display:flex; align-items:center; justify-content:center;
    background:radial-gradient(120% 120% at 30% 22%, #FF6FB2 0%, var(--magenta) 45%, var(--violet) 100%);
    box-shadow:0 0 14px rgba(255,46,136,.5);
    font-family:var(--display); font-size:.85rem; color:#fff;
}
.gnm-panel-title{ flex:1; min-width:0; }
.gnm-panel-title strong{
    display:block; font-family:var(--display); letter-spacing:.04em;
    font-size:1rem; color:var(--sand);
}
.gnm-panel-title span{
    display:flex; align-items:center; gap:5px;
    font-size:.72rem; color:var(--haze);
}
.gnm-panel-title span::before{
    content:''; width:7px; height:7px; border-radius:50%; background:#2ED573;
    box-shadow:0 0 6px #2ED573;
}
.gnm-close{
    background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.12);
    color:var(--sand); width:30px; height:30px; border-radius:50%;
    display:flex; align-items:center; justify-content:center; flex-shrink:0;
    cursor:var(--pointer,pointer); font-size:1rem; transition:background .2s, transform .2s;
}
.gnm-close:hover{ background:rgba(255,46,136,.28); transform:rotate(90deg); }

.gnm-messages{
    flex:1; overflow-y:auto; padding:16px 16px 6px;
    display:flex; flex-direction:column; gap:12px;
    scrollbar-width:thin; scrollbar-color:rgba(255,46,136,.5) transparent;
}
.gnm-messages::-webkit-scrollbar{ width:6px; }
.gnm-messages::-webkit-scrollbar-thumb{ background:rgba(255,46,136,.45); border-radius:6px; }

.gnm-msg{
    max-width:86%; padding:10px 13px; border-radius:16px; font-size:.88rem; line-height:1.48;
    word-wrap:break-word; white-space:pre-wrap;
    animation:gnm-in .25s ease;
}
@keyframes gnm-in{ from{ opacity:0; transform:translateY(6px); } to{ opacity:1; transform:translateY(0); } }
.gnm-msg.bot{
    align-self:flex-start;
    background:rgba(255,255,255,.055);
    border:1px solid rgba(255,46,136,.3);
    border-bottom-left-radius:4px;
    color:var(--sand);
}
.gnm-msg.user{
    align-self:flex-end;
    background:linear-gradient(135deg, var(--aqua), #1AA6D6);
    border-bottom-right-radius:4px;
    color:#052027; font-weight:600;
}
.gnm-msg.error{
    align-self:flex-start; color:#FFD8D8;
    background:rgba(255,60,60,.14); border:1px solid rgba(255,90,90,.4);
}

.gnm-typing{
    align-self:flex-start; display:flex; gap:4px; padding:12px 14px;
    border-radius:16px; border-bottom-left-radius:4px;
    background:rgba(255,255,255,.055); border:1px solid rgba(255,46,136,.3);
}
.gnm-typing span{
    width:6px; height:6px; border-radius:50%; background:var(--haze);
    animation:gnm-bounce 1.1s ease-in-out infinite;
}
.gnm-typing span:nth-child(2){ animation-delay:.15s; }
.gnm-typing span:nth-child(3){ animation-delay:.3s; }
@keyframes gnm-bounce{ 0%,60%,100%{ transform:translateY(0); opacity:.5; } 30%{ transform:translateY(-5px); opacity:1; } }

.gnm-form{
    display:flex; align-items:flex-end; gap:8px; padding:12px 14px;
    border-top:1px solid rgba(255,255,255,.08); flex-shrink:0;
}
.gnm-input{
    flex:1; resize:none; max-height:88px; min-height:40px;
    background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.14);
    border-radius:14px; padding:10px 13px; color:var(--sand);
    font-family:var(--text); font-size:.88rem; line-height:1.35;
}
.gnm-input:focus{ outline:none; border-color:var(--magenta); box-shadow:0 0 0 3px rgba(255,46,136,.18); }
.gnm-input::placeholder{ color:var(--mute); }

.gnm-send{
    width:40px; height:40px; border-radius:50%; border:none; flex-shrink:0;
    background:linear-gradient(135deg, var(--magenta), var(--violet));
    color:#fff; display:flex; align-items:center; justify-content:center;
    cursor:var(--pointer,pointer); transition:transform .2s, opacity .2s;
    box-shadow:0 4px 14px rgba(255,46,136,.4);
}
.gnm-send:hover{ transform:scale(1.08); }
.gnm-send:disabled{ opacity:.45; cursor:not-allowed; transform:none; }
.gnm-send svg{ width:17px; height:17px; }

.gnm-foot-note{
    text-align:center; font-size:.62rem; color:var(--mute);
    padding:0 14px 10px; flex-shrink:0;
}

@media (max-width:480px){
    .gnm-panel{
        right:10px; left:10px; bottom:90px; width:auto; height:min(66vh, 520px);
    }
    .gnm-fab{ right:16px; bottom:16px; }
}
