body {
  text-align: center;
  font-family: Arial, sans-serif;
  background: #f0f0f0;
  touch-action: manipulation; /* double-tap 확대 방지 */
  -webkit-user-select: none; /* 텍스트 선택도 방지 */
  user-select: none;
  -webkit-tap-highlight-color: transparent; /* 탭시 파란 효과 제거 */
  width: 90vw; /* 뷰포트 너비에 딱 맞춤 */
  overflow-x: hidden; /* 넘치는 거 잘라냄 */
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

.piano {
  display: flex;
  flex-direction: column;
  gap: 20px;
  align-items: flex-start;
  margin: 40px auto;
  width: fit-content;
}

.octave {
  display: flex;
  position: relative;
  height: 200px;
}

.key {
  border: 1px solid #333;
  cursor: pointer;
  position: relative;
  touch-action: manipulation; /* double-tap 확대 방지 */
  -webkit-user-select: none; /* 텍스트 선택도 방지 */
  user-select: none;
  -webkit-tap-highlight-color: transparent; /* 탭시 파란 효과 제거 */
}

.white {
  width: 60px;
  height: 200px;
  background: white;
  z-index: 1;
}

.black {
  width: 40px;
  height: 120px;
  background: black;
  position: absolute;
  top: 0;
  z-index: 2;
}

.note-label {
  position: absolute;
  bottom: 5px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 14px;
  color: #333;
  pointer-events: none;
}

.invisible {
  visibility: hidden;
}
