/* ─────────────── GEMINI VOICE ORB ─────────────── */
#gemini-voice-orb-wrap{
  position:fixed;
  right:0.3rem !important;
  bottom:0.3rem !important;
  z-index:500;
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:.75rem;
  font-family:"Kallisto",sans-serif;
  --amp:0;
}

#gemini-voice-caption{
  max-width:min(22rem,72vw);
  background:rgba(248,249,252,.98);
  backdrop-filter:blur(.6rem);
  border:1.5px solid rgba(255,255,255,.9);
  border-radius:1rem;
  padding:.85rem 1.1rem;
  font-size:1rem;
  font-weight:600;
  line-height:1.45;
  color:#111318;
  box-shadow:0 0 0 1px rgba(19,104,244,.28),0 .3rem .5rem rgba(0,0,0,.35),0 .8rem 2rem rgba(19,104,244,.3);
  opacity:0;
  transform:translateY(.5rem) scale(.96);
  transition:opacity .25s ease,transform .25s ease;
  pointer-events:none;
}
#gemini-voice-caption.visible{opacity:1;transform:translateY(0) scale(1);}
#gemini-voice-caption .role{
  display:block;
  font-size:.68rem;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
  margin-bottom:.25rem;
  background:linear-gradient(90deg,#1368F4,#F41E0A,#E2C81E,#0C9A32);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}

/* ── contact form: name/phone/email typed instead of spoken — voice
   recognition of spelled-out emails and phone numbers is unreliable ── */
#gemini-contact-form{
  position:relative;
  max-width:min(18rem,72vw);
  background:rgba(248,249,252,.98);
  backdrop-filter:blur(.6rem);
  border:1.5px solid rgba(255,255,255,.9);
  border-radius:1rem;
  padding:1rem 1.1rem;
  box-shadow:0 0 0 1px rgba(19,104,244,.28),0 .3rem .5rem rgba(0,0,0,.35),0 .8rem 2rem rgba(19,104,244,.3);
  display:none;
  flex-direction:column;
  gap:.55rem;
  opacity:0;
  transform:translateY(.5rem) scale(.96);
  transition:opacity .25s ease,transform .25s ease;
}
#gemini-contact-form.visible{display:flex;opacity:1;transform:translateY(0) scale(1);}
.gemini-contact-title{
  font-size:.78rem;
  font-weight:700;
  color:#111318;
  line-height:1.35;
  padding-right:1.2rem;
}
#gemini-contact-form input{
  font-family:inherit;
  font-size:.9rem;
  padding:.55rem .7rem;
  border-radius:.6rem;
  border:1.5px solid rgba(17,19,24,.15);
  background:#fff;
  color:#111318;
}
#gemini-contact-form input:focus{outline:none;border-color:#1368F4;}
#gemini-contact-form button[type="submit"]{
  font-family:inherit;
  font-size:.9rem;
  font-weight:700;
  color:#fff;
  /* the site's own red — matches the neon glow (#FF3C3C) and the solid
     accent red (rgb(220,30,30)) used elsewhere on the page */
  background:linear-gradient(90deg,rgb(220,30,30),#FF3C3C);
  border:none;
  border-radius:.6rem;
  padding:.6rem;
  cursor:pointer;
}
#gemini-contact-form button[type="submit"]:hover{
  background:linear-gradient(90deg,#FF3C3C,rgb(220,30,30));
}
.gemini-contact-dismiss{
  position:absolute;
  top:.5rem;
  right:.6rem;
  background:none;
  border:none;
  color:rgba(17,19,24,.4);
  font-size:.85rem;
  cursor:pointer;
  padding:.2rem;
  line-height:1;
}

/* button is just the click target — all visible paint happens in .blob layers
   that bleed outside its box, so the orb reads as a soft floating cloud */
#gemini-voice-orb{
  position:relative;
  width:3.75rem;
  height:3.75rem;
  border:none;
  background:transparent;
  padding:0;
  cursor:pointer;
  overflow:visible;
  transform-origin:center;
  animation:gemini-orb-breathe 2.6s ease-in-out infinite;
}
#gemini-voice-orb:hover{animation-play-state:paused;transform:scale(1.12);}
#gemini-voice-orb-wrap.connecting #gemini-voice-orb,
#gemini-voice-orb-wrap.active #gemini-voice-orb{
  animation:none;
  transform:none;
}
@keyframes gemini-orb-breathe{
  0%,100%{transform:scale(1);}
  50%{transform:scale(1.16);}
}

/* mic ON/OFF shown as a plain icon centered on the orb — no ring, no colored
   backdrop, just the icon shape changing (filled mic vs. slashed mic-off) */

.gemini-mic-badge{
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  color:#fff;
  filter:drop-shadow(0 .1rem .35rem rgba(0,0,0,.65));
  opacity:.92;
  z-index:3;
  pointer-events:none;
}
.gemini-mic-badge svg{width:1.15rem;height:1.15rem;display:block;}
.gemini-mic-badge .mic-on{display:none;}
.gemini-mic-badge .mic-off{display:block;}
#gemini-voice-orb-wrap.mic-active .gemini-mic-badge .mic-on{display:block;}
#gemini-voice-orb-wrap.mic-active .gemini-mic-badge .mic-off{display:none;}

/* ── "¿Te ayudo?" hint bubble ── */
#gemini-voice-hint{
  position:absolute;
  right:calc(100% + .8rem);
  bottom:.5rem;
  white-space:nowrap;
  background:rgba(248,249,252,.98);
  border:1.5px solid rgba(255,255,255,.9);
  color:#111318;
  font-size:.95rem;
  font-weight:700;
  padding:.65rem 1.05rem;
  border-radius:1.3rem;
  cursor:pointer;
  box-shadow:0 0 0 1px rgba(244,30,10,.25),0 .3rem .5rem rgba(0,0,0,.35),0 .8rem 2rem rgba(19,104,244,.32);
  opacity:0;
  transform:translateX(.4rem) scale(.9);
  transition:opacity .3s ease,transform .3s ease;
  pointer-events:none;
}
#gemini-voice-hint.visible{
  opacity:1;
  transform:translateX(0) scale(1);
  pointer-events:auto;
  animation:gemini-hint-pulse 1.8s ease-in-out .3s infinite;
}
@keyframes gemini-hint-pulse{
  0%,100%{box-shadow:0 0 0 1px rgba(244,30,10,.25),0 .3rem .5rem rgba(0,0,0,.35),0 .8rem 2rem rgba(19,104,244,.32);}
  50%{box-shadow:0 0 0 1px rgba(244,30,10,.4),0 .3rem .5rem rgba(0,0,0,.35),0 .9rem 2.4rem rgba(19,104,244,.58);}
}
#gemini-voice-hint::after{
  content:"";
  position:absolute;
  right:-.4rem;
  bottom:.85rem;
  width:.7rem;
  height:.7rem;
  background:rgba(248,249,252,.98);
  border-right:1.5px solid rgba(255,255,255,.9);
  border-bottom:1.5px solid rgba(255,255,255,.9);
  transform:rotate(-45deg);
}

.gemini-blob{
  position:absolute;
  inset:-45%;
  border-radius:58% 42% 53% 47%/48% 57% 43% 52%;
  mix-blend-mode:screen;
  filter:blur(calc(.7rem + var(--amp,0) * .35rem));
  transition:filter .15s ease;
}
/* "Google Dark Theme" palette — darker/more saturated variants of the brand four:
   Bluest Blue #1368F4, Bright Red #F41E0A, Bold Yellow #E2C81E, Simple Green #0C9A32 */
.gemini-blob.b1{
  background:radial-gradient(circle at 30% 26%,
    rgba(255,255,255,.85) 0%,
    rgba(19,104,244,.95) 16%,
    rgba(19,104,244,0) 64%
  );
  animation:gemini-morph1 7s ease-in-out infinite,gemini-drift1 12s ease-in-out infinite;
}
.gemini-blob.b2{
  background:radial-gradient(circle at 72% 30%,
    rgba(244,30,10,.9) 0%,
    rgba(244,30,10,0) 62%
  );
  animation:gemini-morph2 8.5s ease-in-out infinite reverse,gemini-drift2 14s ease-in-out infinite;
}
.gemini-blob.b3{
  background:radial-gradient(circle at 70% 72%,
    rgba(226,200,30,.9) 0%,
    rgba(226,200,30,0) 62%
  );
  animation:gemini-morph3 9.5s ease-in-out infinite,gemini-drift3 10s ease-in-out infinite;
}
.gemini-blob.b4{
  background:radial-gradient(circle at 28% 74%,
    rgba(12,154,50,.9) 0%,
    rgba(12,154,50,0) 62%
  );
  animation:gemini-morph4 8s ease-in-out infinite reverse,gemini-drift4 11s ease-in-out infinite;
}

@keyframes gemini-morph1{
  0%,100%{border-radius:58% 42% 53% 47%/48% 57% 43% 52%;}
  50%{border-radius:44% 56% 40% 60%/57% 40% 60% 43%;}
}
@keyframes gemini-morph2{
  0%,100%{border-radius:50% 50% 45% 55%/55% 45% 55% 45%;}
  50%{border-radius:60% 40% 58% 42%/42% 58% 40% 60%;}
}
@keyframes gemini-morph3{
  0%,100%{border-radius:47% 53% 60% 40%/60% 40% 53% 47%;}
  50%{border-radius:56% 44% 46% 54%/45% 55% 44% 56%;}
}
@keyframes gemini-morph4{
  0%,100%{border-radius:52% 48% 44% 56%/44% 56% 52% 48%;}
  50%{border-radius:42% 58% 55% 45%/58% 42% 46% 54%;}
}
@keyframes gemini-drift1{
  0%,100%{transform:translate(0,0) scale(1);}
  50%{transform:translate(.2rem,-.15rem) scale(calc(1.05 + var(--amp,0) * .3));}
}
@keyframes gemini-drift2{
  0%,100%{transform:translate(-.18rem,.12rem) scale(1);}
  50%{transform:translate(.15rem,-.12rem) scale(calc(1.04 + var(--amp,0) * .28));}
}
@keyframes gemini-drift3{
  0%,100%{transform:translate(.1rem,.18rem) scale(1);}
  50%{transform:translate(-.15rem,-.1rem) scale(calc(1.06 + var(--amp,0) * .32));}
}
@keyframes gemini-drift4{
  0%,100%{transform:translate(0,0) scale(1);}
  50%{transform:translate(-.12rem,.16rem) scale(calc(1.05 + var(--amp,0) * .3));}
}

/* connecting — faster, tighter pulse while the session spins up */
#gemini-voice-orb-wrap.connecting .gemini-blob{
  animation-duration:1.6s,2.2s;
}

/* listening / speaking — brighten a touch so the cloud feels "awake" */
#gemini-voice-orb-wrap.active .gemini-blob{
  filter:blur(calc(.6rem + var(--amp,0) * .4rem)) saturate(1.25) brightness(1.08);
}

@media (max-width:640px){
  #gemini-voice-orb-wrap{right:1rem;bottom:1rem;}
  #gemini-voice-orb{width:3.25rem;height:3.25rem;}
}
