:root {
  --piano-frame-color: #171717;
  --piano-frame-shadow: rgba(0, 0, 0, 0.18);
  --piano-focus-color: #f2b705;
  --piano-white-key-color: #fff;
  --piano-white-key-hover-color: #f1f1f1;
  --piano-white-key-text-color: #222;
  --piano-white-key-border-color: #d2d2d2;
  --piano-black-key-color: #080808;
  --piano-black-key-gradient-start: #303030;
  --piano-black-key-gradient-end: #242424;
  --piano-black-key-hover-color: #24282c;
  --piano-black-key-border-color: #000;
  --piano-black-key-shadow: rgba(0, 0, 0, 0.45);
  --piano-user-active-color: #4cc9f0;
  --piano-user-left-hand-active-color: #249ec5;
  --piano-user-active-black-color: #168aad;
  --piano-system-active-color: #f2b705;
  --piano-system-left-hand-active-color: #d39200;
  --piano-system-active-black-color: #c98200;
  --piano-active-shadow: rgba(0, 0, 0, 0.2);
  --piano-label-color: #555;
}

.piano-keyboard {
  width: 100%;
  max-width: 100%;
  user-select: none;
  touch-action: none;
}

.piano-keyboard__keys {
  position: relative;
  width: 100%;
  min-height: 96px;
  aspect-ratio: 7.2 / 1;
  overflow: hidden;
  background: var(--piano-frame-color);
  border: 1px solid var(--piano-frame-color);
  border-radius: 8px;
  box-shadow: 0 5px 16px var(--piano-frame-shadow);
}

.piano-keyboard__key {
  position: absolute;
  top: 0;
  margin: 0;
  padding: 0;
  border-radius: 0 0 4px 4px;
  cursor: pointer;
  transition: none;
  -webkit-tap-highlight-color: transparent;
}

.piano-keyboard__key:focus-visible {
  z-index: 4;
  outline: 3px solid var(--piano-focus-color);
  outline-offset: -3px;
}

.piano-keyboard__key--white {
  left: calc(var(--white-index) * 100% / var(--piano-white-key-count));
  z-index: 1;
  width: calc(100% / var(--piano-white-key-count));
  height: 100%;
  color: var(--piano-white-key-text-color);
  background: var(--piano-white-key-color);
  border: 0;
  border-right: 1px solid var(--piano-white-key-border-color);
  box-shadow: none;
  transition: background-color 0.12s ease;
}

.piano-keyboard__key--white:first-child {
  border-left: 0;
}

.piano-keyboard__key--black {
  left: calc(
    var(--white-before) * 100% / var(--piano-white-key-count) -
    (100% / var(--piano-white-key-count) * 0.31)
  );
  z-index: 2;
  width: calc(100% / var(--piano-white-key-count) * 0.62);
  height: 62%;
  background-color: var(--piano-black-key-color);
  background-image: linear-gradient(
    to bottom,
    var(--piano-black-key-gradient-start) 0%,
    var(--piano-black-key-color) 76%,
    var(--piano-black-key-gradient-end) 100%
  );
  border: 1px solid var(--piano-black-key-border-color);
  box-shadow: 0 3px 4px var(--piano-black-key-shadow);
  transition: none;
}

.piano-keyboard__key--white:hover {
  background-color: var(--piano-white-key-hover-color);
}

.piano-keyboard__key--black:hover {
  background-color: var(--piano-black-key-hover-color);
  background-image: none;
}

.piano-keyboard__key.is-active-system {
  background: var(--piano-system-active-color);
  box-shadow: inset 0 0 0 2px var(--piano-active-shadow);
}

.piano-keyboard__key--white.is-active-system,
.piano-keyboard__key--white.is-active-system:hover {
  background: var(--piano-system-active-color);
  box-shadow: none;
}

.piano-keyboard__key--black.is-active-system,
.piano-keyboard__key--black.is-active-system:hover {
  background-color: var(--piano-system-active-black-color);
  background-image: none;
}

.piano-keyboard__key--white.is-active-system-left-hand,
.piano-keyboard__key--white.is-active-system-left-hand:hover {
  background: var(--piano-system-left-hand-active-color);
  box-shadow: none;
}

.piano-keyboard__key--black.is-active-system-left-hand,
.piano-keyboard__key--black.is-active-system-left-hand:hover {
  background-color: var(--piano-system-left-hand-active-color);
  background-image: none;
}

.piano-keyboard__degree-marker {
  position: absolute;
  right: 50%;
  bottom: 21px;
  z-index: 3;
  display: none;
  align-items: center;
  justify-content: center;
  width: 21px;
  height: 21px;
  color: #fff;
  font: 700 8px/1 Roboto, Arial, sans-serif;
  letter-spacing: -0.04em;
  border-radius: 999px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.28);
  pointer-events: none;
  transform: translateX(50%);
}

.piano-keyboard__key--black .piano-keyboard__degree-marker {
  bottom: 10px;
  width: 19px;
  height: 19px;
  font-size: 7px;
}

.piano-keyboard.piano-keyboard--show-note-markers .piano-keyboard__key.is-active-system-degree-root .piano-keyboard__degree-marker {
  display: flex;
  background-color: var(--chord-degree-root-color, #014f86);
}

.piano-keyboard.piano-keyboard--show-note-markers .piano-keyboard__key.is-active-system-degree-third-fourth .piano-keyboard__degree-marker {
  display: flex;
  background-color: var(--chord-degree-third-fourth-color, #c62828);
}

.piano-keyboard.piano-keyboard--show-note-markers .piano-keyboard__key.is-active-system-degree-fifth .piano-keyboard__degree-marker {
  display: flex;
  background-color: var(--chord-degree-fifth-color, #7d9f00);
}

.piano-keyboard.piano-keyboard--show-note-markers .piano-keyboard__key.is-active-system-degree-seventh .piano-keyboard__degree-marker {
  display: flex;
  background-color: var(--chord-degree-seventh-color, #f57c00);
}

.piano-keyboard.piano-keyboard--show-note-markers .piano-keyboard__key.is-active-system-degree-other .piano-keyboard__degree-marker {
  display: flex;
  background-color: var(--chord-degree-other-color, #222);
}

.piano-keyboard__key.is-active-user {
  background: var(--piano-user-active-color);
  box-shadow: inset 0 0 0 2px var(--piano-active-shadow);
}

.piano-keyboard__key--white.is-active-user,
.piano-keyboard__key--white.is-active-user:hover {
  background: var(--piano-user-active-color);
  box-shadow: none;
}

.piano-keyboard__key--black.is-active-user,
.piano-keyboard__key--black.is-active-user:hover {
  background-color: var(--piano-user-active-black-color);
  background-image: none;
}

.piano-keyboard__label {
  position: absolute;
  right: 0;
  bottom: 5px;
  left: 0;
  overflow: hidden;
  color: var(--piano-label-color);
  font: 500 clamp(7px, 0.65vw, 11px)/1 Roboto, Arial, sans-serif;
  text-align: center;
  pointer-events: none;
}

.piano-keyboard__mobile-nav {
  display: none;
}

@media (max-width: 700px) {
  .piano-keyboard {
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-gutter: stable;
    scrollbar-width: none;
  }

  .piano-keyboard::-webkit-scrollbar {
    display: none;
  }

  .piano-keyboard__keys {
    width: 960px;
    max-width: none;
    min-height: 82px;
  }

  .piano-keyboard__label {
    display: none;
  }

  .piano-keyboard__mobile-nav {
    position: sticky;
    left: 0;
    display: flex;
    justify-content: center;
    width: 100vw;
    max-width: 100%;
    margin-top: 8px;
    padding: 0 8px;
    box-sizing: border-box;
  }

  /* Suwak pozycji klawiatury w stylu paska postępu odtwarzacza (#player-progress-bar) */
  .piano-keyboard__mobile-nav input[type="range"] {
    -webkit-appearance: none;
    appearance: none;
    width: min(320px, 100%);
    height: 38px;
    min-height: 38px;
    margin: 0;
    padding: 0;
    background: transparent;
    border: 0;
    box-shadow: none;
    cursor: pointer;
    touch-action: pan-x;
  }

  .piano-keyboard__mobile-nav input[type="range"]:focus {
    outline: none;
  }

  .piano-keyboard__mobile-nav input[type="range"]::-webkit-slider-runnable-track {
    height: 10px;
    background: var(--color-primary, #014f86);
    border-radius: 3px;
    opacity: 0.7;
  }

  .piano-keyboard__mobile-nav input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 26px;
    height: 26px;
    margin-top: -8px;
    background: var(--color-primary, #014f86);
    border: 3px solid #fff;
    border-radius: 50%;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
  }

  .piano-keyboard__mobile-nav input[type="range"]::-moz-range-track {
    height: 10px;
    background: var(--color-primary, #014f86);
    border: 0;
    border-radius: 3px;
    opacity: 0.7;
  }

  .piano-keyboard__mobile-nav input[type="range"]::-moz-range-thumb {
    box-sizing: border-box;
    width: 26px;
    height: 26px;
    background: var(--color-primary, #014f86);
    border: 3px solid #fff;
    border-radius: 50%;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
  }

  .piano-keyboard__mobile-nav input[type="range"]:focus-visible::-webkit-slider-thumb {
    outline: 2px solid var(--color-primary, #014f86);
    outline-offset: 2px;
  }

  .piano-keyboard__mobile-nav input[type="range"]:focus-visible::-moz-range-thumb {
    outline: 2px solid var(--color-primary, #014f86);
    outline-offset: 2px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .piano-keyboard__key {
    transition: none;
  }
}
