/* LL AI v64.5.3 — integrated dictation composer + flashcard empty-state cleanup */
.composebox{position:relative!important}
/* Dictation stays inside the ORIGINAL composer. No second black box is layered on top. */
.composebox.ll651Dictating{
  overflow:visible!important;
}
.composebox.ll651Dictating>#question{
  display:none!important;
}
.composebox.ll651Dictating>#attach{
  flex:0 0 auto!important;
}
.composebox.ll651Dictating>#attach .llIcon{
  transform:rotate(45deg) scale(1.02)!important;
}
.composebox.ll651Dictating>#attach{
  color:var(--theme-text)!important;
  background:rgba(255,255,255,.09)!important;
  border-color:rgba(255,255,255,.10)!important;
}
.ll651WaveWrap{
  display:none;
  flex:1 1 auto;
  min-width:80px;
  height:44px;
  align-items:center;
  justify-content:center;
  position:relative;
  overflow:hidden;
  padding:0 10px;
  opacity:0;
  transform:translateY(4px) scale(.985);
}
.composebox.ll651Dictating>.ll651WaveWrap{
  display:flex;
  opacity:1;
  transform:none;
  animation:ll651WaveEnter .22s cubic-bezier(.2,.8,.2,1) both;
}
.ll651Wave{
  width:min(100%,520px);
  height:34px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:3px;
  overflow:hidden;
}
.ll651Wave i{
  display:block;
  width:3px;
  height:8px;
  min-height:3px;
  flex:0 0 3px;
  border-radius:999px;
  background:color-mix(in srgb,var(--theme-text) 76%,transparent);
  opacity:.9;
  transform:scaleY(var(--ll651-wave,.5));
  transform-origin:center;
  transition:transform 65ms linear,opacity .12s ease;
}
.ll651WaveWrap.is-transcribing .ll651Wave i{
  animation:ll651Understand .78s ease-in-out infinite;
  opacity:.68;
}
.ll651WaveStatus{
  position:absolute;
  left:50%;
  bottom:1px;
  transform:translateX(-50%);
  color:var(--theme-muted);
  font-size:9px;
  line-height:1;
  white-space:nowrap;
  opacity:0;
  pointer-events:none;
}
.ll651WaveWrap.is-transcribing .ll651WaveStatus{opacity:.92}
/* The existing microphone button becomes the stop button in-place. */
#voice.ll651Stop{
  color:var(--theme-text)!important;
  background:color-mix(in srgb,var(--theme-surface-2) 90%,white 5%)!important;
  border:1px solid color-mix(in srgb,var(--theme-line) 88%,white 4%)!important;
  box-shadow:none!important;
}
#voice.ll651Stop .ll651StopGlyph{
  width:14px;height:14px;border-radius:3px;background:currentColor;display:block;
}
/* The existing right action becomes stop-and-send; same button, same position. */
#send.ll651VoiceSend{
  background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 92%,white 8%),var(--accent))!important;
  color:#fff!important;
  box-shadow:0 8px 22px rgba(var(--accent-rgb),.26)!important;
  opacity:1!important;
  pointer-events:auto!important;
}
#send.ll651VoiceSend .composerActionIcon{animation:ll651SendEnter .2s cubic-bezier(.2,.8,.2,1) both}
.composebox.ll651Transcribing>#voice{opacity:.45!important;pointer-events:none!important}
.composebox.ll651Transcribing>#send{opacity:.72!important;pointer-events:none!important}
@keyframes ll651WaveEnter{from{opacity:0;transform:translateY(5px) scale(.98)}to{opacity:1;transform:none}}
@keyframes ll651Understand{0%,100%{transform:scaleY(.42)}50%{transform:scaleY(1.55)}}
@keyframes ll651SendEnter{from{opacity:0;transform:translateY(3px) scale(.8)}to{opacity:1;transform:none}}
@media(max-width:700px){
  .ll651WaveWrap{padding-inline:4px}.ll651Wave{gap:2px}.ll651Wave i{width:2.5px;flex-basis:2.5px}
}
@media(prefers-reduced-motion:reduce){.ll651WaveWrap,.ll651Wave i,#send.ll651VoiceSend .composerActionIcon{animation:none!important;transition:none!important}}

/* Flashcards: remove the floating sparkle/cube that sits on top of the two sample cards. */
.flashEmptySpark{display:none!important}
.flashEmptyVisual{margin-bottom:22px!important}
