:root {
  /* Colors */
  --color-black: #000;
  --color-off-black: #0d0d0d;
  /* main background color */
  --color-white: #fff;
  --color-off-white: #efefef;
  --color-green: #0f0;
  --color-dark-green: #006305;
  --color-yellow: #ffcc00;
  --color-dark-yellow: rgb(128, 128, 2);
  --color-gold: #bdae07;
  --color-red: #c20600;

  /* Background colors */
  --bg-transparent: rgba(0, 0, 0, 0.5);
  --bg-hover: rgba(255, 255, 255, 0.1);
  --bg-green: rgba(0, 50, 0, 0.5);
  --bg-green-opaque: rgb(12, 32, 12);
  --bg-red: rgba(110, 0, 0, 0.252);
  --bg-red-opaque: rgb(40, 9, 9);

  /* Border colors */
  --border-light: rgba(255, 255, 255, 0.3);
  --border-medium: rgba(255, 255, 255, 0.7);

  /* Fonts */
  --font-main: 'Courier New', monospace;

  /* Font sizes */
  --font-size-small: 12px;
  --font-size-normal: 14px;
  --font-size-medium: 18px;
  --font-size-large: 24px;
  --font-size-xlarge: 28px;

  /* Spacing */
  --spacing-tiny: 5px;
  --spacing-small: 10px;
  --spacing-medium: 15px;
  --spacing-large: 20px;
  --spacing-huge: 25px;

  /* Border radius */
  --border-radius-small: 5px;
  --border-radius-medium: 10px;

  /* Shadows */
  --shadow-glow: 0 0 10px var(--color-green);
  --shadow-normal: 0 5px 15px rgba(0, 0, 0, 0.3);
  --shadow-small: 0 2px 5px rgba(0, 0, 0, 0.3);
  --text-shadow: 1px 1px 2px var(--color-black);

  /* Transitions */
  --transition-normal: all 0.3s ease;
}

h1 {
  font-size: 2.5rem;
}

h2 {
  font-size: 1.5rem;
}

ul,
ol {
  margin-left: 15px;
  margin-top: 15px;
}

li {
  margin-left: 15px;
}

body {
  margin: 0;
  padding: 0;
  overflow-x: hidden;
  overflow-y: hidden;
  background-color: var(--color-off-black);
  font-family: var(--font-main);
  color: var(--color-green);
  scrollbar-width: none;
  /* Firefox */
  -ms-overflow-style: none;
  /* IE and Edge */
}

/* hide scrollbars on main-container, title-screen, and body */
body::-webkit-scrollbar {
  display: none;
  /* Safari and Chrome */
}

#main-container {
  position: relative;
  width: 100%;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden;
  background-color: var(--color-off-black);
  scrollbar-width: none;
  -ms-overflow-style: none;
}

#main-container ::-webkit-scrollbar {
  display: none;
}

#ui-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 100;
}

#score-container {
  position: absolute;
  font-size: var(--font-size-normal);
  top: var(--spacing-small);
  right: var(--spacing-small);
  background-color: var(--bg-transparent);
  padding: var(--spacing-tiny) var(--spacing-small);
  border-radius: var(--border-radius-small);
  text-align: right;
}

#exit-to-menu-button {
  rotate: 180deg;
}

#exit-button-container {
  position: absolute;
  bottom: var(--spacing-small);
  left: var(--spacing-small);
  text-align: center;
}

#game-message-container {
  position: absolute;
  bottom: var(--spacing-small);
  left: 50%;
  transform: translateX(-50%);
  text-align: center;
  z-index: 20;
}

#game-message {
  font-size: var(--font-size-small);
}

#mute-button-container {
  position: absolute;
  bottom: var(--spacing-small);
  right: var(--spacing-small);
  text-align: center;
  pointer-events: auto;
  z-index: 20;
}

#mute-toggle-button {
  position: static;
  background-color: var(--bg-transparent);
  border-radius: var(--border-radius-small);
  color: var(--color-green);
  font-size: 1.5rem;
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.2s ease;
  border: none;
}

#mute-toggle-button:hover {
  transform: none;
  background-color: var(--bg-hover);
}

#fps-counter {
  position: absolute;
  top: var(--spacing-small);
  right: var(--spacing-small);
  background-color: var(--bg-transparent);
  padding: var(--spacing-tiny) var(--spacing-small);
  border-radius: var(--border-radius-small);
}

#game-info {
  font-size: var(--font-size-normal);
  position: absolute;
  top: var(--spacing-small);
  left: var(--spacing-small);
  background-color: var(--bg-transparent);
  padding: var(--spacing-tiny) var(--spacing-small);
  border-radius: var(--border-radius-small);
}

#game-info>* {
  margin-bottom: var(--spacing-small);
}

#health-bar-container,
#ammo-bar-container {
  width: 200px;
  height: 22.5px;
  background-color: var(--bg-transparent);
  border: 1px solid var(--color-white);
  border-radius: var(--border-radius-medium);
  overflow: hidden;
  margin-top: var(--spacing-tiny);
  position: relative;
}

#health-text,
#ammo-text {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-white);
  font-size: var(--font-size-small);
  font-family: var(--font-main);
  font-weight: bold;
  text-shadow: var(--text-shadow);
  z-index: 10;
  pointer-events: none;
}

#health-bar {
  height: 100%;
  width: 100%;
  background-color: var(--color-dark-green);
  transition: width 0.3s ease, background-color 0.3s ease;
}

#ammo-bar {
  height: 100%;
  width: 100%;
  background-color: var(--color-dark-yellow);
  /* Darker yellow for ammo */
  transition: width 0.3s ease;
}

#refresh-midi {
  transition: transform 0.3s ease;
}

#refresh-midi-container {
  cursor: pointer;
  display: inline;
  padding: 3px;
}

#refresh-midi-container:hover #refresh-midi {
  transform: rotate(180deg);
  top: 1px;
  /* Adjust position as icon is slightly asymmetrical */
}

.game-wrap {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1;
  margin: 0;
}

.mode-container {
  display: flex;
  align-items: center;
  gap: var(--spacing-medium);
}

/* Game Mode Selection */
.game-mode-selection {
  width: 100%;
  max-width: 620px;
  margin: var(--spacing-large) auto;
  padding: 0 var(--spacing-small);
}

.mode-options {
  width: 100%;
  display: flex;
  justify-content: center;
  gap: var(--spacing-medium);
  margin-top: var(--spacing-small);
  margin-bottom: var(--spacing-medium);
}

.game-mode-button-container {
  width: 100%;
}

.play-button {
  font-size: var(--font-size-large);
  font-family: var(--font-main);
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: var(--spacing-medium);
  border: 1px solid var(--color-green);
  border-radius: var(--border-radius-medium);
  cursor: pointer;
  transition: var(--transition-normal);
  width: 100%;
  background-color: var(--color-off-black);
  color: var(--color-green);
}

.play-button:hover {
  border-color: var(--color-green);
  background-color: var(--bg-green-opaque);
  transform: translateY(-3px);
  box-shadow: var(--shadow-normal);
}

.game-mode-button {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: var(--spacing-small);
  border: 1px solid var(--color-green);
  border-radius: var(--border-radius-small);
  cursor: pointer;
  transition: var(--transition-normal);
  width: 100%;
  background-color: var(--color-off-black);
  color: var(--color-green);
  font-family: var(--font-main);
  letter-spacing: 0.5px;
}

[data-mode="classic"].game-mode-button:hover {
  background-color: var(--bg-green-opaque);
  box-shadow: 0 0 8px rgba(0, 255, 0, 0.3);
  transform: translateY(-2px);
}

[data-mode="survival"] {
  color: var(--color-red);
  background-color: var(--color-off-black);
  border-color: var(--color-red);
}

[data-mode="survival"] .mode-label {
  color: var(--color-red);
}

[data-mode="survival"].game-mode-button:hover {
  background-color: var(--bg-red-opaque);
  box-shadow: 0 0 8px rgba(255, 0, 0, 0.3);
  transform: translateY(-2px);

}

.high-score {
  margin-top: var(--spacing-tiny);
  font-size: var(--font-size-small);
  color: var(--color-yellow);
}

.title-header {
  display: flex;
  justify-content: center;
  align-items: center;
  position: relative;
  padding: var(--spacing-large);
}

.settings-button-container {
  position: absolute;
  right: var(--spacing-huge);
  top: var(--spacing-huge);
  z-index: 10;
}

.settings-icon {
  background: none;
  border: none;
  font-size: var(--font-size-large);
  cursor: pointer;
  padding: var(--spacing-small);
  transition: transform 0.3s ease;
}

.settings-icon:hover {
  transform: rotate(30deg);
}

#settings-icon {
  background: none;
  border: none;
  font-size: var(--font-size-large);
  cursor: pointer;
  padding: var(--spacing-small);
  transition: transform 0.3s ease;
}

#settings-icon:hover {
  transform: rotate(30deg);
}

/* Modal Styles */
.modal {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.85);
  backdrop-filter: blur(6px);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 1000;
}

.modal-content {
  background-color: var(--color-off-black);
  border: 2px solid var(--color-green);
  border-radius: var(--border-radius-medium);
  width: 80%;
  max-width: 600px;
  max-height: 80vh;
  overflow-y: auto;
  box-shadow: 0 0 20px rgba(0, 255, 0, 0.5);
}

.modal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--spacing-medium);
  border-bottom: 1px solid var(--color-green);
}

.modal-header h2 {
  margin: 0;
  color: var(--color-green);
}

.close-button {
  background: none;
  border: none;
  color: var(--color-green);
  font-size: var(--font-size-xlarge);
  cursor: pointer;
  transition: color 0.3s ease;
}

.close-button:hover {
  color: var(--color-white);
}

.modal-body {
  padding: var(--spacing-large);
}

/* Settings Styles */
.setting-item {
  margin-bottom: var(--spacing-large);
  color: var(--color-white);
}

.setting-item label {
  display: flex;
  align-items: center;
  font-size: var(--font-size-medium);
  cursor: pointer;
  margin-bottom: var(--spacing-small);
}

.setting-item input[type="checkbox"] {
  margin-right: var(--spacing-small);
  width: 18px;
  height: 18px;
  accent-color: var(--color-green);
  cursor: pointer;
}

.setting-description {
  font-size: var(--font-size-small);
  color: var(--color-off-white);
  margin-top: var(--spacing-tiny);
}

.mode-label {
  font-size: var(--font-size-medium);
  margin-bottom: 5px;
  font-weight: bold;
  color: var(--color-green);
}

.mode-description {
  font-size: 1em;
  color: var(--border-medium);
  text-align: center;
  margin-bottom: 5px;
}

/* Danger button for destructive actions */
.danger-button {
  background-color: var(--bg-red-opaque);
  color: var(--color-white);
  border: 1px solid var(--color-red);
  padding: var(--spacing-small) var(--spacing-medium);
  border-radius: var(--border-radius-small);
  cursor: pointer;
  font-family: var(--font-main);
  font-size: var(--font-size-normal);
  transition: var(--transition-normal);
  margin-top: var(--spacing-small);
}

.danger-button:hover {
  background-color: var(--color-red);
  box-shadow: 0 0 4px var(--color-red);
}

/* title-screen is the first full screen overlay we see on the home page!! */
#title-screen,
#game-over-screen,
#victory-screen {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  /* background-image: url('../img/background.png');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat; */
  z-index: 9;
  padding: 2rem 0.5rem;
  overflow-y: hidden;
  overflow-x: hidden;
  pointer-events: auto;
  /* Ensure clicks are captured */
  scrollbar-width: none;
  -ms-overflow-style: none;
}

#title-screen ::-webkit-scrollbar {
  display: none;
}

#wave-transition {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  /* background-color: var(--color-off-black);
  background-image: url('../img/background.png');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat; */
  z-index: 20;
  padding: 2rem 0.5rem;
  overflow-y: auto;
  pointer-events: auto;
  /* Ensure clicks are captured */
}

#wave-transition h1,
#wave-transition h2 {
  background-color: var(--color-off-black);
}

.hidden {
  display: none !important;
}

.screen-title {
  font-size: 3rem;
  margin-bottom: 1.5rem;
  text-shadow: 0 0 5px var(--color-green), 0 0 5px rgba(0, 255, 0, 0.5);
}

.game-over-title {
  color: var(--color-red);
  text-shadow: 0 0 5px var(--color-red), 0 0 10px rgba(255, 0, 0, 0.5);
}

.game-over-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  max-width: 680px;
  width: 100%;
  padding: var(--spacing-large);
}

/* Apply background color to all text elements in container
This is so that text appears clearly above background 
Background color is applied to each text element rather than the
whole container to give a more natural look vs a boxed look
*/
#game-over-screen * h1,
#game-over-screen * h2,
#game-over-screen * h3 {
  background-color: var(--color-off-black);
}

.game-over-info {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin: var(--spacing-medium) 0;
  width: 100%;

}

.game-over-stats {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-small);
  margin: var(--spacing-medium) 0;
  text-align: center;
}

.reason {
  color: var(--color-red);
  font-size: 1.5rem;
  margin-bottom: var(--spacing-medium);
}

.game-over-waves,
.game-over-score,
#game-over-wave-bonus-container {
  color: var(--color-red);
  margin-bottom: var(--spacing-tiny);
}

.high-score-message-container {
  border: 1px solid var(--color-yellow);
  border-radius: var(--border-radius-medium);
  padding: var(--spacing-medium);
  margin: var(--spacing-medium) 0;
  text-align: center;
  width: 100%;
  background-color: #3D350A;
  /* Composite color of semi-transparent yellow over dark background */
}

.high-score-text {
  color: var(--color-yellow);
  margin-bottom: var(--spacing-small);
}

.high-score-description {
  color: var(--color-yellow);
}

.game-over-text {
  color: var(--color-red);
}

.game-over-score {
  color: var(--color-red);
}

#final-total {
  color: var(--color-yellow);
  font-size: 1.8rem;
  margin-top: var(--spacing-small);
  text-shadow: 0 0 8px var(--color-yellow);
  padding-top: var(--spacing-small);
}

.small-button {
  padding: 0.25rem 0.5rem;
  background-color: var(--color-green);
  color: var(--color-off-black);
  border: none;
  border-radius: var(--border-radius-small);
  font-size: 0.9rem;
  cursor: pointer;
  transition: var(--transition-normal);
  pointer-events: auto;
  font-family: var(--font-main);
  box-shadow: 0 0 8px var(--bg-green);
}

.small-button:hover {
  background-color: #0c0;
}

.small-button:disabled {
  background-color: #555;
  cursor: not-allowed;
}

/* Make this match style of page */
.game-button {
  margin-left: 0;
  font-family: var(--font-main);
  color: var(--color-green);
  background-color: var(--bg-transparent);
  font-size: 0.9rem;
  border-radius: 3px;
  cursor: pointer;
  padding: 0.5rem 1rem;
  pointer-events: auto;
  align-self: flex-end;
  border: none;
}

.game-button:hover {
  opacity: 0.7;
}

.post-game-button-container {
  display: flex;
  justify-content: center;
  gap: var(--spacing-large);
  margin: var(--spacing-large) 0;
  width: 100%;
}

.instructions-container {
  width: 100%;
  max-width: 850px;
  margin: 0 auto;
  background-color: var(--bg-green-opaque);
  border-radius: var(--border-radius-medium);
  padding: var(--spacing-huge);
  border: 1px solid var(--color-green);
  position: relative;
  overflow: visible;
}

.instructions-list {
  text-align: left;
  line-height: 1.6;
}

.footer {
  font-size: 0.8rem;
  position: fixed;
  bottom: 0;
  margin-bottom: var(--spacing-large);
  color: var(--border-medium);
  background-color: var(--color-off-black);
}

.footer-link {
  text-decoration: none;
  color: var(--border-medium);
}

.footer-link:hover {
  color: var(--color-white);
  cursor: pointer;
  transition: color 0.3s ease, text-decoration 0.3s ease;
}

.midi-setup {
  margin-top: var(--spacing-huge);
}

.midi-setup>* {
  margin-top: 7.5px;
}

.midi-setup select {
  font-family: var(--font-main);
  padding: 1px var(--spacing-tiny);
  border-radius: var(--border-radius-small);
  background-color: var(--color-off-white);
}

.instructions-link {
  color: var(--color-green);
  text-decoration: none;
}

.instructions-link:hover {
  text-decoration: underline;
  cursor: pointer;
  transition: text-decoration 0.3s ease;
}

#midi-status {
  font-size: 0.8em;
  color: #f00;
  /* start red for not connected */
}

#midi-test-area {
  height: 40px;
  line-height: 40px;
  background-color: var(--bg-transparent);
  border: 1px solid var(--color-green);
  border-radius: var(--border-radius-small);
  margin-top: var(--spacing-small);
  padding: 0 var(--spacing-small);
  text-align: center;
}

/* Victory Screen */
.victory-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
  max-width: 680px;
  padding: var(--spacing-large);
}

/* Apply background color to all text elements in container
This is so that text appears clearly above background 
Background color is applied to each text element rather than the
whole container to give a more natural look vs a boxed look
*/
#victory-screen * h1,
#victory-screen * h2,
#victory-screen * h3,
#victory-screen * h4 {
  background-color: var(--color-off-black);
}

.victory-title {
  color: var(--color-green);
}

.victory-info {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin: var(--spacing-medium) 0;
  width: 100%;
}

.victory-stats {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-small);
  margin: var(--spacing-medium) 0;
  text-align: center;
}

.victory-stats h2 {
  color: var(--color-green);
  margin-bottom: var(--spacing-tiny);
}

.error {
  color: var(--color-red);
}

/* Mobile Styling */
@media (max-width: 768px) {
  body {
    overflow-x: hidden;
    overflow-y: scroll;
    position: relative;
    width: 100%;
    height: 100%;
  }

  #main-container {
    overflow-x: hidden;
    overflow-y: scroll;
    position: relative;
    width: 100%;
  }

  #title-screen {
    overflow-y: scroll;
  }

  .footer {
    position: static;
  }

  .instructions-container {
    max-width: 90%;
  }

  .game-mode-selection {
    max-width: 100%;
  }
}

/* Background canvas should fill entire viewport */
.background {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 0;
  pointer-events: none;
  background-color: var(--color-off-black);

}

.background canvas {
  width: 100%;
  height: 100%;
  display: block;
  background-color: var(--color-off-black);
}