/* Common imports for all CSS modules */
/*
 * This source is generated by bin/gen/licon.py. Run licon.py after changing public/font/lichess.sfd
 *
 * Constant names and values are pulled from private use characters defined in the sfd file.
 *
 * Character names can be edited in fontforge's "glyph info" dialog, or by editing the StartChar: line that
 * begins each character chunk in lichess.sfd
 *
 * To make these characters visible in your editor, install the lichess.ttf font (which is also generated by
 * licon.py) and then add it to your editor's font list.
 */
/* Uniboard: keep the same page layout across pages */
.btn-rack__btn i,
.btn-rack form i {
  font-family: Roboto, sans-serif;
  font-weight: 300;
}

/* text printed directly on the page background deserves special treatment (transp theme) */
.btn-rack__btn,
.btn-rack form {
  box-shadow: inset 0 2px 3px -2px hsl(0, 0%, 45%), inset 0 -4px 6px -3px var(--m-body-gradient--lighten-3), 0 1px 3px 0 hsla(0, 0%, 0%, 0.2);
}
html.light .btn-rack__btn,
html.light .btn-rack form,
.btn-rack html.light form {
  box-shadow: inset 0 3px 3px -2px #fff, inset 0 -4px 6px -3px var(--m-body-gradient--lighten-5), 0 1px 3px 0 hsla(0, 0%, 0%, 0.18);
}
.btn-rack__btn,
.btn-rack form {
  background: linear-gradient(to bottom, var(--c-metal-top), var(--c-metal-bottom));
  text-shadow: 0.5px 0.5px 0 var(--m-dimmer--fade-20) !important;
}
.btn-rack__btn:hover:not(.disabled, :disabled, [disabled]),
.btn-rack form:hover:not(.disabled, :disabled, [disabled]) {
  box-shadow: inset 0 3px 3px -2px var(--c-border-light), inset 0 -5px 8px -3px var(--m-body-gradient--lighten-5), 0 2px 4px 0 hsla(0, 0%, 0%, 0.24);
}
html.light .btn-rack__btn:hover:not(.disabled, :disabled, [disabled]),
html.light .btn-rack form:hover:not(.disabled, :disabled, [disabled]),
.btn-rack html.light form:hover:not(.disabled, :disabled, [disabled]) {
  box-shadow: inset 0 4px 3px -2px #fff, inset 0 -5px 8px -3px var(--m-body-gradient--lighten-7), 0 2px 4px 0 hsla(0, 0%, 0%, 0.21);
}
.btn-rack__btn:hover:not(.disabled, :disabled, [disabled]),
.btn-rack form:hover:not(.disabled, :disabled, [disabled]) {
  background: linear-gradient(to bottom, var(--c-metal-top-hover), var(--c-metal-bottom-hover));
}

.voice-choices .active, .btn-rack__btn.active:not(.disabled):hover, .btn-rack__btn.active {
  box-shadow: 0 3px 4px hsla(0, 0%, 0%, 0.15) inset !important;
}

.btn-rack__btn.active {
  background: var(--c-accent);
  color: #fff;
  text-shadow: 0 1px 1px black !important;
}
.btn-rack__btn.active:not(.disabled):hover {
  background: var(--m-accent--lighten-5);
}

.voice-choices .active {
  background: var(--c-primary);
  color: #fff;
  text-shadow: 0 1px 1px black !important;
}

html.transp #voice-settings::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
  backdrop-filter: blur(6px);
}
#voice-settings {
  box-shadow: -1px 5px 6px rgba(0, 0, 0, 0.3);
}

.voice-setting select {
  overflow: hidden;
  text-overflow: ellipsis;
}

.voice-setting, #voice-status, #voice-status-row, .btn-rack__btn,
.btn-rack form {
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
}

.voice-choices {
  /* extends %flex-center */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
  justify-content: space-between;
}

#voice-settings {
  display: flex;
  flex-flow: column;
}

.btn-rack, #voice-status-row {
  border-radius: 7px;
}

/* helps with clipping background into border-radius */
.btn-rack__btn:first-child,
.btn-rack form:first-child {
  border-radius: 0;
  border-start-start-radius: 7px;
  border-end-start-radius: 7px;
}

.btn-rack__btn:last-child,
.btn-rack form:last-child {
  border-radius: 0;
  border-start-end-radius: 7px;
  border-end-end-radius: 7px;
}

#voice-settings {
  border-radius: 0 0 7px 7px;
}

#voice-status-row {
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.08), 0 3px 1px -2px rgba(0, 0, 0, 0.18), 0 1px 5px 0 rgba(0, 0, 0, 0.1);
}

html.transp #voice-status-row {
  backdrop-filter: blur(6px);
}

.btn-rack {
  user-select: none;
  display: inline-flex;
  align-items: center;
  border: 1px solid var(--c-border);
  border-top: 0;
}
.btn-rack .btn-rack {
  /* embedded racks */
  border: none;
}
.btn-rack__btn,
.btn-rack form {
  justify-content: center;
  text-align: center;
  line-height: 2rem;
  cursor: pointer;
  border-inline-end: 1px solid var(--c-border);
  color: var(--c-font);
  white-space: nowrap;
}
.btn-rack__btn:hover,
.btn-rack form:hover {
  color: var(--c-font);
}
.btn-rack__btn:last-child,
.btn-rack form:last-child {
  border: 0;
}
.btn-rack__btn i,
.btn-rack form i {
  letter-spacing: -1px;
}
.btn-rack__btn {
  padding: 0 0.6em;
}
.btn-rack__btn.active {
  color: #fff;
}
.btn-rack__btn[disabled] {
  opacity: 0.7;
  cursor: not-allowed;
}

#voice-bar {
  user-select: none;
  position: relative;
  flex: 1 1 auto;
  grid-area: voice;
}

#voice-status-row {
  font-size: 1rem;
  align-items: stretch;
  background: var(--c-bg-box);
  padding-inline-end: 6px;
}
#voice-bar.puz #voice-status-row {
  background: var(--c-bg-zebra);
}
#voice-bar.coords #voice-status-row button#voice-help-button {
  display: none;
}
#voice-status-row > button {
  color: var(--c-font-dim);
  font-size: 16px;
  padding: 0 6px;
}
#voice-status-row > button::before {
  vertical-align: sub;
}
#voice-status-row > button:hover {
  color: var(--c-font);
}
#voice-status-row.flash {
  animation: flash 0.2s;
  animation-iteration-count: 1;
}
@keyframes flash {
  0% {
    background-color: var(--c-bg-zebra2);
  }
  50% {
    background-color: rgba(204, 51, 51, 0.5333333333);
  }
  100% {
    background-color: var(--c-bg-zebra2);
  }
}

#voice-status {
  flex: 1 1 auto;
}

button#microphone-button {
  margin: 4px;
  margin-inline-end: 8px;
  width: 42px;
  height: 30px;
  border: 1px solid transparent;
  border-radius: 4px;
  background-color: transparent;
}
html.light button#microphone-button:hover {
  background-color: var(--c-font-dimmer);
}
button#microphone-button.push-to-talk {
  border-color: var(--c-primary);
}
button#microphone-button.listening {
  animation: pulse-listening 2s;
  animation-iteration-count: infinite;
  color: var(--c-primary);
}
button#microphone-button.listening:hover {
  color: var(--c-link-hover);
}
button#microphone-button.busy {
  color: var(--c-bad);
}
@keyframes pulse-listening {
  0% {
    border-color: transparent;
  }
  50% {
    border-color: var(--c-primary);
  }
  100% {
    border-color: transparent;
  }
}

#voice-settings-button.active {
  color: white;
  background-color: var(--c-primary);
}

#voice-settings {
  position: absolute;
  border-top: 2px solid var(--c-primary);
  z-index: 4;
  width: 100%;
  background: var(--c-bg-high);
  gap: 1.5em;
  padding: 1.5em;
}
#voice-settings > hr {
  margin: 5px;
}

.voice-setting {
  white-space: nowrap;
}
.voice-setting input[type=range] {
  cursor: pointer;
  flex: 1 4 auto;
  padding: 0;
  height: 1.6em;
  width: 100%;
  margin: 0 1ch;
}
.voice-setting select {
  flex: 1 4 auto;
  min-width: 0;
  margin-inline-start: 1ch;
  padding: 4px;
}
.voice-setting .range_value {
  direction: ltr;
  flex: 0 0 15%;
  text-align: left;
}

.voice-choices {
  gap: 1em;
}
.voice-choices__device {
  flex-flow: row nowrap;
}
.voice-choices__device select {
  width: 0;
  flex: 1;
}

/*# sourceMappingURL=voice.css.map */
