@import url(https://fonts.googleapis.com/css2?family=Roboto&display=swap);
html,
body {
  width: 100%;
  height: 100%;
}

body {
  margin: 0;
  background: #000;
  overflow: hidden;
  font-family: "Roboto", sans-serif;
}

.view {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  display: flex;
  flex-flow: column;
  justify-content: center;
}

.splash {
  display: flex;
  flex-flow: column;
  align-items: center;
  justify-content: center;
}

.splash .logo {
    padding: 0 24px;
    max-width: 100%;
  }

.splash .logo img {
      display: block;
      width: 100%;
    }

.splash .menu {
    margin-top: 10px;
  }

.splash .menu-item.menu-item-with-icon {
    display: flex;
    align-items: center;
    padding-top: 2px;
    padding-bottom: 2px;
  }

.splash .menu-item.menu-item-with-icon img {
      height: 24px;
    }

.splash .menu-item.menu-item-with-icon span {
      margin-left: 8px;
      display: block;
    }

.menu {
  position: relative;
  box-sizing: border-box;
  box-shadow: inset 0 0 0 2px #000, inset 0 0 0 4px #d34100,
    inset 0 0 0 6px #f3a261, inset 0 0 0 8px #000000, inset 0 0 0 10px #d34100,
    inset 0 0 0 12px #00a261, inset 0 0 0 14px #d34100, inset 0 0 0 16px #f3e3d3;
  background: #f3e3d3;
  padding: 24px;
}

.menu .corner {
    position: absolute;
    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAKRlWElmTU0AKgAAAAgABgESAAMAAAABAAEAAAEaAAUAAAABAAAAVgEbAAUAAAABAAAAXgEoAAMAAAABAAIAAAExAAIAAAATAAAAZodpAAQAAAABAAAAegAAAAAAAABIAAAAAQAAAEgAAAABUGl4ZWxtYXRvciBQcm8gMS44AAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEKADAAQAAAABAAAAEAAAAAASxg5mAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFnmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIj4KICAgICAgICAgPHhtcE1NOkRlcml2ZWRGcm9tIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgPHN0UmVmOmluc3RhbmNlSUQ+eG1wLmlpZDo2RjQ5OTYxQjA3MTcxMUU3OTA5RkYxNkJBNEJCRTQ0OTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDo2RjQ5OTYxQzA3MTcxMUU3OTA5RkYxNkJBNEJCRTQ0OTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgPC94bXBNTTpEZXJpdmVkRnJvbT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDo2RjQ5OTYxRDA3MTcxMUU3OTA5RkYxNkJBNEJCRTQ0OTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDo2RjQ5OTYxRTA3MTcxMUU3OTA5RkYxNkJBNEJCRTQ0OTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjE2PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjE2PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5QaXhlbG1hdG9yIFBybyAxLjg8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAyMC0wOS0yMlQxNDoyODoxNVo8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KABJGmAAAASJJREFUOBGtU9uJwzAQXIf7TQkHbiBFuJGAWkghacGgRlSEGwhcCS7gbmY3s+yFfIQQQSxptDP7jO29/fJn9+X3n+01DLyD85aLbYsl6fh9mohX8YrR1sDJRWBrPQX0UAUqRlsXAfjFh7k1fIdRde9Qx7qtKzdfNA4bXGEz2xUHcMZqk/I/ntc8k3waNsmLzhKptrajYOEnciaJmIT55qkA87dacGDplao0oDeRlUb1/GiT1VYUNXwRn2G0p9Noo9hv7Bnuuyl8toi1eGods9JZNalt/F9EjufgkMQgicAi6uwjfLehkE+it2vuPmEEXQGfvcVUMgJOHRcn9TYWeDj7/cCw574loDS0Byn+rYmBTA7v0UaERC/yrunk/RkWEUWqf0boNTL3u57SAAAAAElFTkSuQmCC) no-repeat;
    background-size: 32px 32px;
    background-color: #000;
    width: 16px;
    height: 16px;
    image-rendering: -moz-crisp-edges;
    image-rendering: pixelated;
  }

.menu .corner-tl {
    top: 0;
    left: 0;
  }

.menu .corner-tr {
    top: 0;
    right: 0;
    background-position: -16px 0;
  }

.menu .corner-bl {
    bottom: 0;
    left: 0;
    background-position: 0 -16px;
  }

.menu .corner-br {
    bottom: 0;
    right: 0;
    background-position: -16px -16px;
  }

.menu .menu-item {
    cursor: pointer;
    display: block;
    padding: 4px 6px;
  }

.menu .menu-item:hover {
    background: #000;
    color: #f3e3d3;
  }

.game {
  width: 100%;
  height: 100%;
  min-height: 0;
  display: flex;
  flex-flow: column;
  overflow: hidden;
}

.game .tools {
    display: flex;
    flex: 0 0 auto;
    padding: 24px 4px 4px;
    background: #161616;
    justify-content: space-between;
  }

.game .tools .top,
    .game .tools .bottom {
      display: flex;
    }

.game .tool-item {
    display: block;
    cursor: pointer;
    padding: 8px;
    width: 24px;
    height: 24px;
  }

.game .tool-item svg {
      fill: #fff;
    }

.game .tool-item:active {
    background: #333333;
  }

.game .tool-item.disabled svg {
      fill: #777;
    }

.game .screen {
    flex: 0 0 auto;
    width: 100%;
    height: var(--screen-height);
    min-height: 0;
  }

/* .keyboard는 남은 세로 영역 전체를 채우도록 flex: 1 1 auto 및 width: 100% 설정 */

.game .keyboard {
    flex: 1 1 auto;
    width: 100%;
    min-height: 0;
    overflow-y: auto;
  }

.dosbox-container {
  width: 100%;
  height: 100%;
}

.screen {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
}

.screen canvas {
    width: var(--screen-width);
    height: var(--screen-height);
    image-rendering: auto !important;
  }

.screen .canvas {
    width: var(--screen-width);
    height: var(--screen-height);
    background: #333;
    height: 0;
    padding-top: 66.66666%;
  }

.screen .canvas-container,
  .screen .event-blocker {
    position: absolute;
    left: 0;
    right: 1;
    top: 0;
    bottom: 1;
  }

/* ==========================================
   .keyboard – .game의 flex 자식 (screen 밖)
   ========================================== */

.keyboard {
  flex: 1 1 auto;
  display: flex;
  flex-flow: column;
  align-items: center;
  justify-content: space-around; /* 헤더와 바디의 균등 배치 */
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  box-sizing: border-box;
  padding: 4px 4px 8px;
  background: rgba(0, 0, 0, 0.25);
  width: 100%;
  overflow-y: auto;
}

.keyboard-pad-wrapper {
      display: flex;
      flex-flow: row;
      justify-content: center;
      width: 100%;
    }

.line {
      display: flex;
    }

.key {
      position: relative;
      box-sizing: border-box;
      margin: 2px;
      border-radius: 4px;
      width: 60px;
      height: 55px;
      color: #fff;
      background: rgba(0, 0, 0, 0.375);
    }

.key.active {
        background: rgba(80, 80, 80, 0.375);
      }

.key{
      border: 1px dashed white;
}

/* @media (min-width: 600px) {
    .key {
      position: relative;
      box-sizing: border-box;
      margin: 2px;
      border-radius: 4px;
      width: 60px;
      height: 55px;
      color: #fff;
      background: rgba(0, 0, 0, .375);
      &.active {
        background: rgba(80, 80, 80, .375);
      }
      border: 1px dashed white;
    }
  } */

.label {
      position: absolute;
      top: 6px;
      left: 6px;
      font-size: 12px;
    }

.label .or {
        font-size: 75%;
        color: rgba(255, 255, 255, 0.375);
      }

.description {
      display: none;
    }

.description {
      position: absolute;
      bottom: 6px;
      left: 6px;
      font-size: 10px;
      color: rgba(255, 255, 255, 0.625);
    }

.key-row-2 {
      height: 92px;
    }

.key-row-3 {
      height: 140px;
    }

.key-row-4 {
      height: 230px;
    }

.key-col-2 {
      width: 92px;
    }

.key-col-3 {
      width: 140px;
    }

.message {
  position: absolute;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  padding: 10px;
  background: rgba(255, 255, 255, 0.75);
  pointer-events: none;
}

.fade-leave-active {
  transition: opacity 0.5s;
}

.fade-leave-to {
  opacity: 0;
}

.version {
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  pointer-events: none;
  position: absolute;
  right: 6px;
  bottom: 4px;
  color: #333;
  font-size: 14px;
}

.github {
  position: absolute;
  display: flex;
  right: 6px;
  top: 4px;
  color: #777;
  font-size: 12px;
  align-items: center;
}

.github svg {
    width: 14px;
    fill: #777;
  }

.github span {
    margin-left: 4px;
  }

.adv {
  width: 320px;
  height: 50px;
  background-color: black;
  position: absolute;
  right: 0px;
  bottom: 300px;
}

@media (min-width: 576px) {
}

@media (min-width: 768px) {
}

@media (min-width: 992px) {
  .game {
    flex-flow: row;
  }
      .screen .keyboard .key {
        width: 60px;
        height: 55px;
      }
        .screen .keyboard .key .label {
          font-size: 16px;
        }
        .screen .keyboard .key .description {
          display: block;
        }
      .screen .keyboard .key-row-2 {
        height: 124px;
      }
      .screen .keyboard .key-row-3 {
        height: 188px;
      }
      .screen .keyboard .key-row-4 {
        height: 230px;
      }
      .screen .keyboard .key-col-2 {
        width: 124px;
      }
      .screen .keyboard .key-col-3 {
        width: 188px;
      }
}

@media (min-width: 1200px) {
}

/* 가로 모드: .game을 row 방향으로 → 화면 왼쪽, 키패드 오른쪽 */

@media (orientation: landscape) {
  .game {
    flex-flow: row;
  }
    .game .tools {
      flex-flow: column;
      padding: 4px;
    }
    .game .top,
    .game .bottom {
      flex-flow: column;
    }
    .game .screen {
      flex: 0 0 auto;
      width: var(--screen-width);
      height: var(--screen-height);
      min-height: 0;
    }
    .game .keyboard {
      flex: 1 1 auto;
      width: auto;
      min-width: 200px;
      max-width: 320px;
      min-height: 0;
      overflow-y: auto;
      display: flex;
      flex-flow: column;
      align-items: center;
      justify-content: flex-start;
      padding: 4px 4px 2px 4px;
    }
}

/* 컨트롤러 탭 헤더 */

.controller-tab-header {
  display: flex;
  justify-content: center;
  gap: 10px;
  width: 100%;
  margin-bottom: 10px;
  padding: 0 8px;
  box-sizing: border-box;
}

.tab-btn {
  flex: 1;
  max-width: 160px;
  height: 42px;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: rgba(255,255,255,0.65);
  background: rgba(255,255,255,0.07);
  border: 1.5px solid rgba(255,255,255,0.18);
  border-radius: 10px;
  cursor: pointer;
  outline: none;
  transition: all 0.22s cubic-bezier(.4,0,.2,1);
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  box-shadow: 0 2px 8px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.08);
  position: relative;
  overflow: hidden;
}

.tab-btn::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(255,255,255,0.06) 0%, transparent 60%);
  pointer-events: none;
}

.tab-btn.active {
  color: #fff;
  background: linear-gradient(135deg, rgba(99,179,237,0.35) 0%, rgba(139,92,246,0.35) 100%);
  border-color: rgba(139,92,246,0.7);
  box-shadow: 0 0 18px rgba(139,92,246,0.45), 0 2px 8px rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.15);
  text-shadow: 0 0 10px rgba(200,170,255,0.8);
}

.tab-btn.active.keyboard-tab {
  background: linear-gradient(135deg, rgba(56,189,248,0.35) 0%, rgba(99,179,237,0.35) 100%);
  border-color: rgba(56,189,248,0.7);
  box-shadow: 0 0 18px rgba(56,189,248,0.4), 0 2px 8px rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.15);
  text-shadow: 0 0 10px rgba(150,230,255,0.8);
}

.tab-btn:active {
  transform: scale(0.96);
  opacity: 0.85;
}

/* 마우스 D-Pad + 클릭 버튼 패널 스타일 */

.mouse-pad {
  box-sizing: border-box;
  display: flex;
  flex-flow: column;
  align-items: center;
  justify-content: space-around; /* 내부 요소 균등 배치 */
  background: rgba(0, 0, 0, 0.4);
  border-radius: 14px;
  padding: 8px 12px;
  margin: 4px auto;
  border: 1px solid rgba(255, 255, 255, 0.12);
  width: 95%;
  max-width: 360px;
  flex: 0 0 auto; /* 높이를 늘리지 않고 콘텐츠 크기 유지 */
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}

/* D-Pad 방향키 버튼 크기 75px로 확대 */

.dpad-container {
  display: grid;
  grid-template-columns: 75px 75px 75px;
  grid-template-rows: 75px 75px 75px;
  gap: 6px;
  margin: 6px auto;
}

.dpad-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,0.07);
  border: 1.5px solid rgba(255,255,255,0.18);
  border-radius: 10px;
  color: #fff;
  font-size: 22px;
  cursor: pointer;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  touch-action: none;
  -webkit-tap-highlight-color: transparent;
  transition: background 0.1s, transform 0.1s;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  box-shadow: 0 2px 6px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.08);
}

.dpad-btn:active, .dpad-btn.pressing {
  background: rgba(139,92,246,0.45);
  border-color: rgba(139,92,246,0.8);
  transform: scale(0.93);
  box-shadow: 0 0 12px rgba(139,92,246,0.5);
}

.dpad-btn.dpad-center {
  background: linear-gradient(135deg, rgba(0,200,140,0.25) 0%, rgba(0,255,180,0.12) 100%);
  border: 1.5px solid rgba(0,255,180,0.5);
  box-shadow: 0 0 12px rgba(0,255,180,0.2), inset 0 1px 0 rgba(255,255,255,0.08);
  font-size: 14px;
  font-weight: bold;
  color: #fff;
  cursor: pointer;
  pointer-events: auto;
  text-shadow: 0 0 8px rgba(0,255,180,0.6);
}

.dpad-btn.dpad-center:active {
  background: linear-gradient(135deg, rgba(0,200,140,0.55) 0%, rgba(0,255,180,0.35) 100%);
  box-shadow: 0 0 18px rgba(0,255,180,0.5);
  transform: scale(0.93);
}

/* 속도 조절 */

.speed-row {
  display: flex;
  align-items: center;
  gap: 6px;
  width: 100%;
  margin-bottom: 8px;
  justify-content: center;
}

.speed-label {
  font-size: 11px;
  color: rgba(255,255,255,0.5);
  white-space: nowrap;
  letter-spacing: 0.04em;
}

.speed-slider {
  -webkit-appearance: none;
  -moz-appearance: none;
       appearance: none;
  flex: 1;
  max-width: 140px;
  height: 4px;
  border-radius: 2px;
  background: linear-gradient(to right, rgba(139,92,246,0.8), rgba(99,179,237,0.8));
  outline: none;
  cursor: pointer;
}

.speed-slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 0 6px rgba(139,92,246,0.8);
  cursor: pointer;
}

.joystick-container {
  width: 140px;
  height: 140px;
  position: relative;
  background: rgba(255, 255, 255, 0.05);
  border-radius: 50%;
  border: 2px dashed rgba(255, 255, 255, 0.3);
  margin: 10px auto 16px;
}

.mouse-buttons-col {
  display: flex;
  flex-flow: column;
  gap: 8px;
  width: 100%;
  align-items: center;
}

.mouse-buttons-col .line {
  display: flex;
  width: 100%;
  justify-content: center;
  gap: 8px;
}

.game-btn {
  box-sizing: border-box;
  border: 1px dashed white;
  border-radius: 4px;
  color: #fff;
  background: rgba(0, 0, 0, 0.375);
  font-size: 14px;
  font-weight: bold;
  padding: 8px 12px;
  cursor: pointer;
  outline: none;
  min-width: 65px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}

.game-btn:active {
  background: rgba(80, 80, 80, 0.6);
}

.click-btn {
  flex: 1;
  height: 50px;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0.06em;
  border: 1.5px solid rgba(0,255,180,0.5);
  background: linear-gradient(135deg, rgba(0,200,140,0.25) 0%, rgba(0,255,180,0.12) 100%);
  border-radius: 10px;
  box-shadow: 0 0 14px rgba(0,255,180,0.2), inset 0 1px 0 rgba(255,255,255,0.1);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  transition: all 0.15s ease;
  text-shadow: 0 0 8px rgba(0,255,180,0.6);
}

.click-btn:active {
  background: linear-gradient(135deg, rgba(0,200,140,0.55) 0%, rgba(0,255,180,0.35) 100%);
  box-shadow: 0 0 22px rgba(0,255,180,0.5);
  transform: scale(0.96);
}

.right-click-btn {
  border-color: rgba(255,60,100,0.5);
  background: linear-gradient(135deg, rgba(180,20,60,0.25) 0%, rgba(255,60,100,0.12) 100%);
  box-shadow: 0 0 14px rgba(255,60,100,0.2), inset 0 1px 0 rgba(255,255,255,0.1);
  text-shadow: 0 0 8px rgba(255,80,120,0.6);
}

.right-click-btn:active {
  background: linear-gradient(135deg, rgba(180,20,60,0.55) 0%, rgba(255,60,100,0.35) 100%);
  box-shadow: 0 0 22px rgba(255,60,100,0.5);
  transform: scale(0.96);
}

.pad-keys {
  display: flex;
  gap: 4px;
  width: 100%;
  justify-content: center;
}

.pad-keys .key {
  flex: 1; /* 가로 영역을 고르게 채우도록 함 */
  max-width: 80px;
  height: 44px !important;
  margin: 0 !important;
  border: 1px dashed rgba(255,255,255,0.4) !important;
}

.font-small .key .label {
  font-size: 11px !important;
}


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