.goielts-speaking-partner{
  --gmv-navy:#012169;--gmv-navy-dark:#011545;--gmv-red:#C8102E;--gmv-red-dark:#8C0B20;
  --gmv-blue-soft:#F8FAFF;--gmv-blue-mid:#E6E9F0;--gmv-text:#4A5568;--gmv-muted:#7C869E;
  --gmv-border:#D7DDE7;--gmv-bg-alt:#F0F3F8;--gmv-white:#FFFFFF;--gmv-success:#4CAF50;
  --gmv-radius-sm:8px;--gmv-radius-md:14px;--gmv-radius-lg:20px;
  direction:rtl;font-family:inherit;color:var(--gmv-text);max-width:560px;margin:0 auto;
}
.goielts-speaking-partner *,.goielts-speaking-partner *::before,.goielts-speaking-partner *::after{box-sizing:border-box;}

.gsp-widget{position:relative;}

/* shared state-card shell */
.gsp-state{
  background:var(--gmv-white);border:1px solid var(--gmv-border);border-radius:var(--gmv-radius-lg);
  padding:44px 36px;text-align:center;box-shadow:0 4px 20px rgb(1 33 105 / .06);
}
.gsp-state[hidden]{display:none;}

.gsp-icon-circle{
  width:72px;height:72px;border-radius:50%;background:var(--gmv-blue-soft);
  display:flex;align-items:center;justify-content:center;font-size:30px;margin:0 auto 20px;
}
.gsp-h3{font-size:22px;font-weight:800;color:var(--gmv-navy);margin:0 0 10px;line-height:1.4;}
.gsp-p{font-size:15px;color:var(--gmv-muted);line-height:1.7;margin:0 0 24px;}

.gsp-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:14px 32px;border-radius:var(--gmv-radius-sm);font-size:15px;font-weight:700;
  text-decoration:none;cursor:pointer;border:2px solid transparent;transition:all .2s ease;
  font-family:inherit;
}
.gsp-btn--start{background:var(--gmv-red);color:#fff;box-shadow:0 4px 14px rgb(200 16 46 / .3);animation:gspPulse 3s infinite;}
.gsp-btn--start:hover{background:var(--gmv-red-dark);transform:translateY(-2px);}
.gsp-btn--end{background:transparent;color:var(--gmv-muted);border-color:var(--gmv-border);font-weight:600;}
.gsp-btn--end:hover{background:var(--gmv-bg-alt);color:var(--gmv-text);}
.gsp-btn--cta{background:var(--gmv-red);color:#fff;box-shadow:0 4px 14px rgb(200 16 46 / .3);animation:gspPulse 3s infinite;width:100%;}
.gsp-btn--cta:hover{background:var(--gmv-red-dark);}
.gsp-btn--retry{background:transparent;color:var(--gmv-navy);border-color:var(--gmv-border);font-size:14px;padding:10px 20px;}
.gsp-btn--retry:hover{background:var(--gmv-bg-alt);}

.gsp-mic-note{font-size:12.5px;color:var(--gmv-muted);margin-top:16px;}

/* Call interface */
.gsp-call-status{
  display:inline-flex;align-items:center;gap:8px;background:var(--gmv-blue-soft);
  color:var(--gmv-navy);font-size:13px;font-weight:700;padding:6px 16px;border-radius:100px;margin-bottom:20px;
}
.gsp-call-status__dot{width:8px;height:8px;border-radius:50%;background:var(--gmv-success);animation:gspBlink 1.4s infinite;}

.gsp-timer{
  font-family:'Courier New',monospace;font-size:44px;font-weight:800;color:var(--gmv-navy);
  letter-spacing:.02em;margin-bottom:8px;direction:ltr;
}
.gsp-timer--warning{color:var(--gmv-red);}

.gsp-warning-badge{
  display:inline-flex;align-items:center;gap:6px;background:#FFF4E5;color:#9A5B00;
  border:1px solid #FFE1B0;font-size:13px;font-weight:700;padding:6px 14px;
  border-radius:100px;margin-bottom:24px;
}
.gsp-warning-badge[hidden]{display:none;}

.gsp-widget-mount{
  margin:0 0 28px;min-height:120px;border:1px dashed var(--gmv-border);
  border-radius:var(--gmv-radius-md);display:flex;align-items:center;justify-content:center;
  background:var(--gmv-bg-alt);padding:16px;
}

/* CTA state */
.gsp-state--cta .gsp-icon-circle{background:#E8F8EE;color:var(--gmv-success);}
.gsp-cta-actions{display:flex;flex-direction:column;gap:12px;}

/* Error state */
.gsp-state--error .gsp-icon-circle{background:#FFF4E5;}

/* Limit state */
.gsp-state--limit .gsp-icon-circle{background:#FFF4E5;}

@keyframes gspPulse{0%{box-shadow:0 0 0 0 rgb(200 16 46 / .35);}70%{box-shadow:0 0 0 12px rgb(200 16 46 / 0);}100%{box-shadow:0 0 0 0 rgb(200 16 46 / 0);}}
@keyframes gspBlink{0%,100%{opacity:1;}50%{opacity:.3;}}

@media (max-width:600px){
  .gsp-state{padding:32px 20px;}
  .gsp-h3{font-size:19px;}
  .gsp-timer{font-size:36px;}
}

/* Agent Status UI (Replaces ElevenLabs Widget) */
.gsp-agent-status {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 16px; min-height: 120px;
}
.gsp-orb {
  width: 50px; height: 50px; border-radius: 50%;
  background: var(--gmv-muted);
  transition: all 0.3s ease;
}
.gsp-orb.is-connecting {
  background: var(--gmv-muted);
  animation: gspOrbPulse 2s infinite;
}
.gsp-orb.is-listening {
  background: var(--gmv-success);
  transform: scale(1.1);
  box-shadow: 0 0 15px rgba(76, 175, 80, 0.4);
}
.gsp-orb.is-speaking {
  background: var(--gmv-navy);
  transform: scale(1.2);
  animation: gspOrbSpeak 1.2s infinite alternate;
}
.gsp-orb.is-error {
  background: var(--gmv-red);
}

#gsp-agent-status-text {
  font-size: 14px; font-weight: 600; color: var(--gmv-text); margin: 0;
}

@keyframes gspOrbPulse {
  0% { box-shadow: 0 0 0 0 rgba(124, 134, 158, 0.4); }
  70% { box-shadow: 0 0 0 15px rgba(124, 134, 158, 0); }
  100% { box-shadow: 0 0 0 0 rgba(124, 134, 158, 0); }
}

@keyframes gspOrbSpeak {
  0% { box-shadow: 0 0 0 0 rgba(1, 33, 105, 0.5); transform: scale(1.1); }
  100% { box-shadow: 0 0 0 20px rgba(1, 33, 105, 0); transform: scale(1.25); }
}

@media (prefers-reduced-motion: reduce) {
  .gsp-orb, .gsp-btn--start, .gsp-btn--cta, .gsp-call-status__dot {
    animation: none !important;
    transition: none !important;
  }
}

