
/* === NovaBot styles v2 === */
#novabot {
  position: fixed;
  right: clamp(10px, 2vw, 18px);
  bottom: clamp(10px, 2vw, 18px);
  z-index: 9999;
  display: grid;
  grid-template-columns: auto;
  align-items: end;
  gap: 8px;
  pointer-events: none;
}

.novabot-avatar {
  width: clamp(80px, 12vw, 140px);
  aspect-ratio: 1/1;
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 6px 20px rgba(0,0,0,0.35);
  animation: nb-float 3.2s ease-in-out infinite;
  pointer-events: auto;
  background: transparent;
  position: relative;
}

.novabot-avatar img {
  width: 100%; height: 100%; display: block;
  image-rendering: auto;
  filter: drop-shadow(0 2px 6px rgba(0,0,0,.25));
}

@keyframes nb-float {
  0%,100% { transform: translateY(0) }
  50% { transform: translateY(-6px) }
}

.novabot-eyeGlow {
  position:absolute; inset:0; pointer-events:none;
  border-radius:18px;
  box-shadow: 0 0 0 rgba(255,255,255,0);
  animation: nb-eyes 2.8s ease-in-out infinite;
}
@keyframes nb-eyes {
  0%,100% { box-shadow: 0 0 0 rgba(255,255,255,0) }
  50% { box-shadow: 0 0 18px rgba(255,255,255,.28) }
}

/* speaking state */
.novabot-speaking .novabot-eyeGlow { animation: nb-eyes-speaking 1s ease-in-out infinite; }
@keyframes nb-eyes-speaking {
  0%,100% { box-shadow: 0 0 0 rgba(255,255,255,0) }
  50% { box-shadow: 0 0 26px rgba(255,255,255,.45) }
}
.novabot-speaking .novabot-avatar { animation-duration: 2.2s; transform: translateY(-2px); }

/* speech bubble */
.novabot-bubble {
  max-width: min(78vw, 420px);
  font-size: clamp(13px, 2.6vw, 16px);
  line-height: 1.35;
  color: #0a0a0a;
  background: #fff;
  border: 2px solid rgba(0,0,0,0.08);
  border-radius: 16px;
  padding: 10px 12px;
  box-shadow: 0 8px 24px rgba(0,0,0,0.18);
  position: relative;
  opacity: 0;
  transform: translateY(6px);
  transition: all .22s ease;
  pointer-events: auto;
}

.novabot-bubble.show {
  opacity: 1;
  transform: translateY(0);
}

.novabot-bubble::after {
  content: "";
  position: absolute;
  right: 14px;
  bottom: -8px;
  border: 8px solid transparent;
  border-top-color: #fff;
}

.novabot-close {
  position:absolute;
  top:6px; right:8px;
  font-size:14px;
  cursor:pointer;
  opacity:.55;
}
.novabot-close:hover { opacity: .9 }

.novabot-ctaPulse {
  outline: 3px solid rgba(212,175,55, .55);
  outline-offset: 2px;
  animation: nb-cta 1.1s ease-in-out 4;
  border-radius: 8px;
}
@keyframes nb-cta {
  0%, 100% { outline-color: rgba(212,175,55, .15) }
  50% { outline-color: rgba(212,175,55, .7) }
}

@media (max-width: 420px){
  .novabot-avatar { width: 92px; }
}
/* === NovaBot: beszéd vizuál + intro flight (append) === */

/* beszéd-hullám – kis pulzáló „hang” ikon az avatar sarkában */
.novabot-talkWave {
  position: absolute;
  right: 6px;
  bottom: 6px;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  box-shadow: 0 0 0 0 rgba(255,255,255,.65);
  opacity: 0;
}
.novabot-speaking .novabot-talkWave {
  animation: nb-talk 0.8s ease-out infinite;
  opacity: 1;
}
@keyframes nb-talk {
  0%   { box-shadow: 0 0 0 0 rgba(255,255,255,.55); }
  100% { box-shadow: 0 0 0 12px rgba(255,255,255,0); }
}

/* repülés közben: pointer-events tiltva, egyszerű trail-effekt */
#novabot.nb-inflight { pointer-events: none; }
.novabot-fxTrail {
  position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(closest-side, rgba(255,255,255,.35), rgba(255,255,255,0) 70%);
  filter: blur(8px);
  opacity: 0;
  animation: nb-trail .9s ease-out forwards;
  border-radius: 18px;
}
@keyframes nb-trail {
  0%   { transform: scale(.6); opacity: .0; }
  40%  { opacity: .6; }
  100% { transform: scale(1.15); opacity: 0; }
}

/* célkijelölő gyűrű a play gombnál */
.nb-pointer {
  position: fixed;
  width: 56px; height: 56px;
  border: 3px solid rgba(212,175,55,.9);
  border-radius: 50%;
  pointer-events: none;
  box-shadow: 0 0 20px rgba(212,175,55,.6);
  animation: nb-pointer 1.2s ease-out 2;
  z-index: 99999;
}
@keyframes nb-pointer {
  0%   { transform: scale(.6); opacity: .0; }
  40%  { opacity: 1; }
  100% { transform: scale(1.2); opacity: 0; }
}
/* === Dockolt állapot: mindig jobb-alsó sarok === */
#novabot.nb-docked {
  left: auto !important;
  top: auto !important;
  right: clamp(10px, 2vw, 18px) !important;
  bottom: clamp(10px, 2vw, 18px) !important;
  transition: none !important;
}
/* ==== SPEAKING EYE GLOW + TALK PULSE (POSITION FIX) ==== */

/* erősebb, jól látható szemfény beszéd közben */
.novabot-speaking .novabot-eyeGlow {
  animation: nb-eyes-speaking 0.9s ease-in-out infinite !important;
  box-shadow:
    0 0 28px rgba(255,255,255,.65),
    0 0 14px rgba(255,255,255,.45) inset;
}
@keyframes nb-eyes-speaking {
  0%   { box-shadow: 0 0 10px rgba(255,255,255,.35), 0 0 6px rgba(255,255,255,.25) inset; }
  50%  { box-shadow: 0 0 28px rgba(255,255,255,.75), 0 0 14px rgba(255,255,255,.45) inset; }
  100% { box-shadow: 0 0 10px rgba(255,255,255,.35), 0 0 6px rgba(255,255,255,.25) inset; }
}

/* a „talk” pulzus kerüljön az avatar alsó-közép tájához (száj-közelbe), ne a lábhoz */
.novabot-talkWave {
  right: auto !important;
  left: 50% !important;
  bottom: 10px !important;
  transform: translateX(-50%) !important;
  width: 12px !important;
  height: 12px !important;
}
/* === SPEAKING FIX: szemfény jól látható + talk pulzus a "száj" alatt === */
.novabot-avatar{ will-change: left, top, transform; }

.novabot-eyeGlow{
  position:absolute; inset:0; pointer-events:none;
  border-radius:18px;
}

.novabot-speaking .novabot-eyeGlow{
  animation: nb-eyes-speaking 0.9s ease-in-out infinite !important;
  box-shadow:
    0 0 28px rgba(255,255,255,.65),
    0 0 14px rgba(255,255,255,.45) inset;
}
@keyframes nb-eyes-speaking{
  0%   { box-shadow: 0 0 10px rgba(255,255,255,.35), 0 0 6px rgba(255,255,255,.25) inset; }
  50%  { box-shadow: 0 0 28px rgba(255,255,255,.78), 0 0 14px rgba(255,255,255,.5) inset; }
  100% { box-shadow: 0 0 10px rgba(255,255,255,.35), 0 0 6px rgba(255,255,255,.25) inset; }
}

/* talk pulzus helyzete: az avatar alsó-közép fölé, kb. száj tájék */
.novabot-talkWave{
  position:absolute !important;
  left:50% !important;
  transform:translateX(-50%) !important;
  bottom:22% !important;   /* 22% az avatar magasságából – így nem "lábnál" lesz */
  width:12px !important; height:12px !important;
  opacity:0;
}
.novabot-speaking .novabot-talkWave{ opacity:1; animation: nb-talk 0.8s ease-out infinite; }
@keyframes nb-talk{
  0%   { box-shadow: 0 0 0 0 rgba(255,255,255,.55); }
  100% { box-shadow: 0 0 0 14px rgba(255,255,255,0); }
}

/* dokkolt sarok fix (marad) */
#novabot.nb-docked{
  left:auto !important; top:auto !important;
  right:clamp(10px,2vw,18px) !important;
  bottom:clamp(10px,2vw,18px) !important;
  transition:none !important;
}
/* ==== FLIGHT LAYER (bal-felsőből → play → jobb-alsó) ==== */
#novabot.nb-flying{
  position: fixed;
  /* kikapcsoljuk a jobb/bal sarkot, és 0,0-hoz rögzítünk */
  left: 0 !important; top: 0 !important;
  right: auto !important; bottom: auto !important;
  /* mozgás mindig transzformmal (nem ütközik a right/bottom stílussal) */
  transform: translate3d(-160px, -160px, 0);
  transition: transform 800ms cubic-bezier(.2,.7,.2,1);
}
#novabot.nb-flying .novabot-avatar{ animation: none !important; }

/* dokkolt állapot – fix jobb-alsó sarok (változatlan) */
#novabot.nb-docked{
  left:auto !important; top:auto !important;
  right:clamp(10px,2vw,18px) !important;
  bottom:clamp(10px,2vw,18px) !important;
  transform: none !important;
  transition: none !important;
}

/* === SPEAKING: szemfény + pulzus a "száj" közelébe === */
.novabot-eyeGlow{
  position:absolute; inset:0; pointer-events:none; border-radius:18px;
}
.novabot-speaking .novabot-eyeGlow{
  animation: nb-eyes-speaking 0.9s ease-in-out infinite !important;
  box-shadow:
    0 0 28px rgba(255,255,255,.65),
    0 0 14px rgba(255,255,255,.45) inset;
}
@keyframes nb-eyes-speaking{
  0%   { box-shadow: 0 0 10px rgba(255,255,255,.35), 0 0 6px rgba(255,255,255,.25) inset; }
  50%  { box-shadow: 0 0 28px rgba(255,255,255,.78), 0 0 14px rgba(255,255,255,.50) inset; }
  100% { box-shadow: 0 0 10px rgba(255,255,255,.35), 0 0 6px rgba(255,255,255,.25) inset; }
}

/* talk pulzus: az avatar ~száj vonalán (kb. 58% magasság) középen */
.novabot-talkWave{
  position:absolute !important;
  left:50% !important; transform:translateX(-50%) !important;
  top:58% !important;  /* ← ez hozza fel a lábak közül a "szájhoz" */
  width:12px !important; height:12px !important;
  opacity:0;
}
.novabot-speaking .novabot-talkWave{ opacity:1; animation: nb-talk 0.8s ease-out infinite; }
@keyframes nb-talk{
  0%   { box-shadow: 0 0 0 0 rgba(255,255,255,.55); }
  100% { box-shadow: 0 0 0 14px rgba(255,255,255,0); }
}
/* === TALK PULSE: pontosan a "száj" alá, könnyen állíthatóval === */
.novabot-avatar{
  position: relative;
  /* állítható paraméterek: ha kicsit lejjebb/feljebb szeretnéd, ezt módosítsd */
  --novabot-mouth-y: 40%;   /* 40% = a kép magasságának 40%-a (száj környéke) */
  --novabot-talk-size: 12px;
}

.novabot-talkWave{
  position: absolute !important;
  left: 50% !important;
  transform: translateX(-50%) !important;
  top: var(--novabot-mouth-y) !important;
  width: var(--novabot-talk-size) !important;
  height: var(--novabot-talk-size) !important;
  opacity: 0;
}

.novabot-speaking .novabot-talkWave{
  opacity: 1;
  animation: nb-talk 0.8s ease-out infinite;
}

@keyframes nb-talk{
  0%   { box-shadow: 0 0 0 0 rgba(255,255,255,.55); }
  100% { box-shadow: 0 0 0 14px rgba(255,255,255,0); }
}

/* szemfény beszéd közben (ha túl halvány volt) */
.novabot-eyeGlow{
  position: absolute; inset: 0; pointer-events: none; border-radius: 18px;
}
.novabot-speaking .novabot-eyeGlow{
  animation: nb-eyes-speaking 0.9s ease-in-out infinite;
  box-shadow:
    0 0 28px rgba(255,255,255,.65),
    0 0 14px rgba(255,255,255,.45) inset;
}
@keyframes nb-eyes-speaking{
  0%   { box-shadow: 0 0 10px rgba(255,255,255,.35), 0 0 6px rgba(255,255,255,.25) inset; }
  50%  { box-shadow: 0 0 28px rgba(255,255,255,.78), 0 0 14px rgba(255,255,255,.50) inset; }
  100% { box-shadow: 0 0 10px rgba(255,255,255,.35), 0 0 6px rgba(255,255,255,.25) inset; }
}
/* NovaBot talk pulse pozíció – szájhoz közelebb */
#novabot .novabot-avatar { --novabot-mouth-y: 26%; }
/* NovaBot – Hang engedélyezése gomb */
#novabot .novabot-sound-btn{
  position: absolute;
  left: 50%;
  bottom: calc(100% + 8px);
  transform: translateX(-50%);
  padding: 6px 10px;
  font: inherit;
  border-radius: 10px;
  border: 0;
  background: rgba(0,0,0,.65);
  color: #fff;
  box-shadow: 0 2px 8px rgba(0,0,0,.25);
  cursor: pointer;
  z-index: 2;
}
#novabot .novabot-sound-btn.hide{ display: none; }
#novabot.nb-docked .novabot-sound-btn{ /* hogy dokkolt állapotban szépen a fej fölött legyen */ }


/* Safety: sound button teljes elrejtése (ha valahová még bekerülne) */
.novabot-sound-btn{ display:none !important; }
