/* Baseline Fitness — fitness-only voice workout interface. */

/* Voice is not a sitewide banner function yet. */
#bl-voice-toggle,
#bl-voice-flyout{
  display:none!important;
}

/* Keep an accessible dialog label without repeating an obvious visible title. */
.voice-visually-hidden{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  padding:0!important;
  margin:-1px!important;
  overflow:hidden!important;
  clip:rect(0 0 0 0)!important;
  clip-path:inset(50%)!important;
  white-space:nowrap!important;
  border:0!important;
}

#voiceWorkoutModal .voice-workout-head{
  align-items:center;
}
#voiceWorkoutModal #voiceWorkoutTitle{
  margin:0!important;
}
#voiceWorkoutModal .voice-workout-exercise{
  padding:24px 28px!important;
}
#voiceWorkoutModal #voiceExerciseName{
  margin:0!important;
  font-size:clamp(1.8rem,4vw,2.7rem)!important;
  line-height:1.16!important;
}
#voiceWorkoutModal #voiceExerciseTarget{
  display:none!important;
}

/* Replace transcript filler text with a live input-level display. */
#voiceWorkoutModal .voice-mic-host{
  min-height:88px;
  display:flex!important;
  align-items:center;
  justify-content:center;
  padding:14px 18px!important;
}
.voice-mic-visual{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:16px;
  width:100%;
  min-height:58px;
}
.voice-mic-icon{
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  flex:0 0 42px;
  border-radius:999px;
  border:1px solid var(--border-2,var(--border));
  background:var(--filter-bg,rgba(255,255,255,.06));
}
.voice-mic-icon svg{
  width:23px;
  height:23px;
  fill:currentColor;
}
.voice-level-bars{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:5px;
  height:44px;
  min-width:150px;
}
.voice-level-bars i{
  width:6px;
  height:10px;
  display:block;
  border-radius:999px;
  background:currentColor;
  opacity:.55;
  transform-origin:center;
}
.voice-mic-status{
  min-width:132px;
  font-weight:850;
  color:var(--muted);
}

.voice-mic-visual[data-state="listening"] .voice-mic-icon,
.voice-mic-visual[data-state="hearing"] .voice-mic-icon{
  border-color:rgba(42,168,91,.62);
  background:rgba(18,74,39,.34);
}

/* Fallback motion is used only when Web Audio input metering is unavailable. */
.voice-mic-visual:not([data-meter="live"])[data-state="listening"] .voice-level-bars i{
  animation:baseline-mic-listening 1.1s ease-in-out infinite;
}
.voice-mic-visual:not([data-meter="live"])[data-state="hearing"] .voice-level-bars i{
  opacity:.95;
  animation:baseline-mic-hearing .48s ease-in-out infinite;
}
.voice-level-bars i:nth-child(2),
.voice-level-bars i:nth-child(8){animation-delay:-.14s!important}
.voice-level-bars i:nth-child(3),
.voice-level-bars i:nth-child(7){animation-delay:-.28s!important}
.voice-level-bars i:nth-child(4),
.voice-level-bars i:nth-child(6){animation-delay:-.42s!important}
.voice-level-bars i:nth-child(5){animation-delay:-.56s!important}

.voice-mic-visual:not([data-meter="live"])[data-state="speaking"] .voice-level-bars i{
  animation:baseline-mic-speaking .8s ease-in-out infinite;
}
.voice-mic-visual[data-meter="live"] .voice-level-bars i{
  animation:none!important;
  transition:height 45ms linear,opacity 45ms linear;
}
.voice-mic-visual[data-state="paused"] .voice-level-bars i,
.voice-mic-visual[data-state="error"] .voice-level-bars i{
  animation:none!important;
  height:6px;
  opacity:.3;
}
.voice-mic-visual[data-state="error"] .voice-mic-icon{
  border-color:rgba(194,46,63,.72);
  background:rgba(86,14,28,.32);
}

@keyframes baseline-mic-listening{
  0%,100%{height:9px;opacity:.45}
  50%{height:24px;opacity:.78}
}
@keyframes baseline-mic-hearing{
  0%,100%{height:8px}
  50%{height:40px}
}
@keyframes baseline-mic-speaking{
  0%,100%{height:10px;opacity:.42}
  50%{height:28px;opacity:.72}
}

/*
 * Side planks belong to the same flat workout sequence as every other step.
 * The legacy wrapper is removed from layout so Left and Right occupy two
 * ordinary list rows rather than appearing as cards inside an exercise card.
 */
#currentWorkoutOut .current-step:has(> .side-plank-manual),
#currentWorkoutOut .side-plank-manual{
  display:contents!important;
}
#currentWorkoutOut .current-step:has(> .side-plank-manual) > .current-step-head{
  display:none!important;
}
#currentWorkoutOut .side-plank-side{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  grid-template-rows:auto auto!important;
  column-gap:12px!important;
  row-gap:3px!important;
  align-items:center!important;
  width:100%!important;
  min-height:0!important;
  margin:0!important;
  padding:14px 0!important;
  border:0!important;
  border-top:1px solid rgba(255,255,255,.12)!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
#currentWorkoutOut .side-plank-side:last-child{
  border-bottom:1px solid rgba(255,255,255,.12)!important;
}
#currentWorkoutOut .side-plank-side h4{
  grid-column:1!important;
  grid-row:1!important;
  margin:0!important;
  font-size:inherit!important;
  line-height:1.3!important;
  font-weight:850!important;
}
#currentWorkoutOut .side-plank-side h4 + div{
  grid-column:1!important;
  grid-row:2!important;
  margin:0!important;
  color:var(--muted)!important;
  font-size:.9rem!important;
  font-weight:700!important;
}
#currentWorkoutOut .side-plank-side .actions-inline{
  grid-column:2!important;
  grid-row:1 / span 2!important;
  align-self:center!important;
  justify-self:end!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  flex-wrap:wrap!important;
  gap:8px!important;
  margin:0!important;
}
#currentWorkoutOut .side-plank-side [data-side-success],
#currentWorkoutOut .side-plank-side [data-side-fail]{
  width:58px!important;
  min-width:58px!important;
  height:58px!important;
  min-height:58px!important;
  padding:0!important;
  display:grid!important;
  place-items:center!important;
  overflow:hidden!important;
  font-size:0!important;
}
#currentWorkoutOut .side-plank-side [data-side-success]::before{
  content:'✓';
  font-size:1.75rem;
  line-height:1;
}
#currentWorkoutOut .side-plank-side [data-side-fail]::before{
  content:'✕';
  font-size:1.65rem;
  line-height:1;
}
#currentWorkoutOut .side-plank-side .side-plank-result{
  grid-column:2!important;
  grid-row:1 / span 2!important;
  align-self:center!important;
  justify-self:end!important;
  margin:0!important;
  padding:6px 10px!important;
  border:1px solid rgba(255,255,255,.14)!important;
  border-radius:999px!important;
  background:rgba(255,255,255,.06)!important;
  font-size:.92rem!important;
  font-weight:800!important;
}
#currentWorkoutOut .side-plank-side [data-side-failure-entry]{
  grid-column:1 / -1!important;
  display:flex;
  align-items:center;
  gap:10px;
  margin-top:6px;
}
#currentWorkoutOut .side-plank-side [data-side-failure-entry][hidden]{
  display:none!important;
}
#currentWorkoutOut .side-plank-side [data-side-failure-entry] input{
  width:160px!important;
  max-width:100%!important;
  margin:0!important;
}
#currentWorkoutOut .side-plank-side.is-locked{
  opacity:.55!important;
}

@media (prefers-reduced-motion:reduce){
  .voice-mic-visual:not([data-meter="live"]) .voice-level-bars i{
    animation:none!important;
    height:16px!important;
  }
  .voice-mic-visual[data-meter="live"] .voice-level-bars i{
    transition:none;
  }
}
@media (max-width:620px){
  .voice-mic-visual{gap:10px}
  .voice-level-bars{min-width:112px;gap:4px}
  .voice-mic-status{min-width:0;font-size:.92rem}
  #currentWorkoutOut .side-plank-side{
    grid-template-columns:1fr!important;
    grid-template-rows:auto auto auto!important;
  }
  #currentWorkoutOut .side-plank-side .actions-inline,
  #currentWorkoutOut .side-plank-side .side-plank-result{
    grid-column:1!important;
    grid-row:3!important;
    justify-self:start!important;
  }
}