._button_1ia8b_1 {
  background-color: var(--echoes-background);
  color: var(--echoes-white);
  padding: var(--echoes-space-sm) var(--echoes-space-lg);
  border-radius: var(--echoes-radius-sm);
  border: none;
  cursor: pointer;
  font-family: var(--echoes-font-family);
  font-weight: bold;
  outline: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  user-select: none;
  font-size: var(--echoes-font-size-sm);
  height: 32px;
}

._button_1ia8b_1:hover:not(:disabled) {
  background-color: var(--echoes-blue);
}

._button_1ia8b_1:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

._primary_1ia8b_28 {
  background-color: var(--echoes-green);
  color: var(--echoes-white);
}

._primary_1ia8b_28:hover:not(:disabled) {
  background-color: #5ea86d;
}

._secondary_1ia8b_37 {
  background-color: transparent;
  border: 1px solid var(--echoes-white);
}

._secondary_1ia8b_37:hover:not(:disabled) {
  background-color: var(--echoes-blue);
  border-color: var(--echoes-blue);
}

._danger_1ia8b_47 {
  background-color: var(--echoes-red);
  color: var(--echoes-white);
}

._danger_1ia8b_47:hover:not(:disabled) {
  background-color: #d11a1a;
}

._ghost_1ia8b_56 {
  background-color: transparent;
  border: none;
}

._ghost_1ia8b_56:hover:not(:disabled) {
  background-color: var(--echoes-blue);
}

._ghostBorder_1ia8b_65 {
  background-color: transparent;
  border: 1px solid var(--echoes-white);
}

._ghostBorder_1ia8b_65:hover:not(:disabled) {
  background-color: var(--echoes-blue);
}

._active_1ia8b_74 {
  background-color: var(--echoes-green);
  color: var(--echoes-white);
}

._active_1ia8b_74:hover:not(:disabled) {
  background-color: #5ea86d;
}

._small_1ia8b_83 {
  padding: var(--echoes-space-xs) var(--echoes-space-md);
  font-size: var(--echoes-font-size-xs);
  height: 24px;
}

._large_1ia8b_89 {
  padding: var(--echoes-space-md) var(--echoes-space-xl);
  font-size: var(--echoes-font-size-base);
  height: 40px;
}

._fullWidth_1ia8b_95 {
  width: 100%;
}

._tool_1ia8b_99 {
  background-color: var(--echoes-background);
  border: 1px solid var(--yellow-color);
  color: var(--yellow-color);
  outline: none;
}

._tool_1ia8b_99:hover:not(:disabled) {
  background-color: color-mix(in srgb, var(--yellow-color), transparent 90%);
  color: var(--yellow-color);
  border: 1px solid var(--yellow-color);
}

._tool_1ia8b_99._active_1ia8b_74 {
  background-color: var(--yellow-color);
  border: 1px solid transparent;
  color: var(--echoes-background);
}

._stack_tkzx6_1 {
  display: flex;
}

._column_tkzx6_5 {
  flex-direction: column;
}

._row_tkzx6_9 {
  flex-direction: row;
}

._gapXs_tkzx6_13 { gap: var(--echoes-space-xs); }
._gapSm_tkzx6_14 { gap: var(--echoes-space-sm); }
._gapMd_tkzx6_15 { gap: var(--echoes-space-md); }
._gapLg_tkzx6_16 { gap: var(--echoes-space-lg); }
._gapXl_tkzx6_17 { gap: var(--echoes-space-xl); }

._alignStart_tkzx6_19 { align-items: flex-start; }
._alignCenter_tkzx6_20 { align-items: center; }
._alignEnd_tkzx6_21 { align-items: flex-end; }
._alignStretch_tkzx6_22 { align-items: stretch; }

._justifyStart_tkzx6_24 { justify-content: flex-start; }
._justifyCenter_tkzx6_25 { justify-content: center; }
._justifyEnd_tkzx6_26 { justify-content: flex-end; }
._justifyBetween_tkzx6_27 { justify-content: space-between; }

._wrap_tkzx6_29 { flex-wrap: wrap; }
._fullWidth_tkzx6_30 { width: 100%; }
._fullHeight_tkzx6_31 { height: 100%; }

._responsive_tkzx6_33 {
  flex-direction: column;
}

@media (min-width: 768px) {
  ._responsive_tkzx6_33 {
    flex-direction: row;
  }
}

._container_17k38_1 {
  width: auto;
}

._fullWidth_17k38_5 {
  width: 100%;
}

._label_17k38_9 {
  display: block;
  font-size: var(--echoes-font-size-sm);
  color: var(--echoes-white);
  margin-bottom: var(--echoes-space-sm);
  font-family: var(--echoes-font-family);
  font-weight: bold;
}

._input_17k38_18 {
  background-color: var(--echoes-background);
  color: var(--echoes-white);
  padding: var(--echoes-space-sm) var(--echoes-space-lg);
  border: 1px solid #333;
  border-radius: var(--echoes-radius-sm);
  font-size: var(--echoes-font-size-sm);
  font-family: var(--echoes-font-family);
  font-weight: bold;
  outline: none;
  height: 32px;
  width: 100%;
  transition: border-color 0.2s ease;
}

._input_17k38_18:focus {
  border-color: var(--echoes-blue);
}

._input_17k38_18._error_17k38_37 {
  border-color: var(--echoes-red);
}

._input_17k38_18::placeholder {
  color: #666;
  font-weight: normal;
}

._errorText_17k38_46 {
  font-size: var(--echoes-font-size-xs);
  color: var(--echoes-red);
  margin-top: var(--echoes-space-sm);
  font-family: var(--echoes-font-family);
}

._small_17k38_53 ._input_17k38_18 {
  padding: var(--echoes-space-xs) var(--echoes-space-md);
  font-size: var(--echoes-font-size-xs);
  height: 24px;
}

._small_17k38_53 ._container_17k38_1 {
  max-width: 180px;
}

._medium_17k38_63 ._container_17k38_1 {
  max-width: 280px;
}

._large_17k38_67 ._container_17k38_1 {
  max-width: 400px;
}

._container_3unzl_1 {
  display: flex;
  align-items: center;
  gap: var(--echoes-space-sm);
}

._label_3unzl_7 {
  min-width: var(--echoes-space-4xl);
  text-align: left;
  font-family: var(--echoes-font-family);
  font-size: var(--echoes-font-size-sm);
  color: var(--echoes-white);
}

._barWrapper_3unzl_15 {
  position: relative;
  width: 100%;
  height: var(--echoes-space-md);
}

._background_3unzl_21 {
  position: absolute;
  width: 100%;
  height: 100%;
  background-color: #444;
}

._fill_3unzl_28 {
  position: absolute;
  height: 100%;
  background-color: var(--echoes-green);
}

._numbers_3unzl_34 {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--echoes-font-size-sm);
  font-weight: bold;
  color: var(--echoes-white);
  text-shadow: var(--echoes-space-xs) var(--echoes-space-xs) var(--echoes-space-xs) rgba(0, 0, 0, 0.8);
  pointer-events: none;
  font-family: var(--echoes-font-family);
}

._small_3unzl_51 ._barWrapper_3unzl_15 {
  height: var(--echoes-space-sm);
}

._small_3unzl_51 ._numbers_3unzl_34 {
  font-size: var(--echoes-font-size-xs);
}

._large_3unzl_59 ._barWrapper_3unzl_15 {
  height: var(--echoes-space-lg);
}

._large_3unzl_59 ._numbers_3unzl_34 {
  font-size: var(--echoes-font-size-base);
}

._container_9rehl_1 {
  display: flex;
  flex-wrap: wrap;
  position: relative;
}

._tab_9rehl_7 {
  
  background-color: var(--echoes-background);
  color: var(--echoes-white);
  border: 1px solid #333;
  border-bottom: 1px solid #333;
  padding: var(--echoes-space-sm) var(--echoes-space-md);
  cursor: pointer;
  font-size: var(--echoes-font-size-xs);
  font-family: var(--echoes-font-family);
  font-weight: bold;
  outline: none;
  transition: background-color 0.1s ease, color 0.1s ease;
  user-select: none;
  position: relative;
  z-index: 0;
}

._tab_9rehl_7:first-child {
  border-top-left-radius: var(--echoes-radius-sm);
  border-right: none;
}

._tab_9rehl_7:last-child {
  border-top-right-radius: var(--echoes-radius-sm);
}

._tab_9rehl_7:not(:first-child):not(:last-child) {
  border-left: none;
  border-right: none;
}

._tab_9rehl_7:not(:first-child) {
  border-left: none;
}

._tab_9rehl_7._active_9rehl_43 {
  background-color: var(--echoes-grey);
  color: var(--echoes-white);
  z-index: 0;
  border-bottom-color: var(--echoes-background);
  border-bottom-width: 2px;
  margin-bottom: -1px;
}

._tab_9rehl_7:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

._root_1g68x_1 {
  all: unset;
  background-color: var(--echoes-background);
  width: 16px;
  height: 16px;
  border-radius: 2px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--echoes-white);
  cursor: pointer;
  transition: all 0.2s ease;
}

._root_1g68x_1:hover {
  border-color: var(--echoes-green);
}

._root_1g68x_1:focus {
  outline: 2px solid var(--echoes-green);
  outline-offset: 2px;
}

._root_1g68x_1[data-state="checked"] {
  background-color: var(--echoes-green);
  border-color: var(--echoes-green);
}

._indicator_1g68x_29 {
  color: var(--echoes-background);
  font-size: 12px;
  font-weight: bold;
  display: flex;
  align-items: center;
  justify-content: center;
}

._label_1g68x_38 {
  font-size: var(--echoes-font-size-sm);
  font-family: var(--echoes-font-family);
  cursor: pointer;
  user-select: none;
}

._label_1g68x_38:hover {
  color: var(--echoes-green);
}

._canvas_3kd8j_1 {
  image-rendering: pixelated;
  background: var(--echoes-background);
}

._root_10nmh_1 {
  display: flex;
  flex-direction: column;
  gap: var(--echoes-space-sm);
}

._rootRow_10nmh_7 {
  flex-direction: row;
  gap: var(--echoes-space-md);
}

._item_10nmh_12 {
  all: unset;
  background-color: var(--echoes-background);
  width: 16px;
  height: 16px;
  border-radius: 50%;
  border: 1px solid var(--echoes-white);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
}

._item_10nmh_12:hover {
  border-color: var(--echoes-green);
}

._item_10nmh_12:focus {
  outline: 2px solid var(--echoes-green);
  outline-offset: 2px;
}

._item_10nmh_12[data-state="checked"] {
  background-color: var(--echoes-green);
  border-color: var(--echoes-green);
}

._indicator_10nmh_40 {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background-color: var(--echoes-background);
}

._itemWrapper_10nmh_50 {
  display: flex;
  align-items: center;
  gap: var(--echoes-space-xs);
}

._label_10nmh_56 {
  font-size: var(--echoes-font-size-sm);
  font-family: var(--echoes-font-family);
  cursor: pointer;
  user-select: none;
}

._label_10nmh_56:hover {
  color: var(--echoes-green);
}

._container_eoc6m_1 {
  height: calc(var(--sprite-height) * var(--sprite-scale));
  width: calc(var(--sprite-width) * var(--sprite-scale));
  margin: var(--echoes-space-sm);
}

._sprite_eoc6m_7 {
  display: block;
  width: var(--sprite-width);
  height: var(--sprite-height);
  background-repeat: no-repeat;
  image-rendering: pixelated;
  transform: scale(var(--sprite-scale));
  transform-origin: top left;
}

._container_1reje_1 {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

._label_1reje_7 {
  display: block;
  font-size: var(--echoes-font-size-sm);
  color: var(--echoes-white);
  margin-bottom: var(--echoes-space-sm);
  font-family: var(--echoes-font-family);
  font-weight: bold;
}

._trigger_1reje_16 {
  all: unset;
  background-color: var(--echoes-background);
  color: var(--echoes-white);
  padding: var(--echoes-space-sm) var(--echoes-space-lg);
  border: 1px solid #333;
  border-radius: var(--echoes-radius-sm);
  font-size: var(--echoes-font-size-sm);
  font-family: var(--echoes-font-family);
  font-weight: bold;
  outline: none;
  min-height: 32px;
  width: 100%;
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: space-between;
  cursor: pointer;
  transition: border-color 0.2s ease;
  overflow: hidden;
}

._trigger_1reje_16 [data-radix-select-value] {
  min-width: 0;
  flex: 1;
  overflow: hidden;
  display: flex;
  align-items: center;
}

._trigger_1reje_16 [data-radix-select-value] > * {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

._trigger_1reje_16:hover {
  border-color: var(--echoes-green);
}

._trigger_1reje_16:focus {
  border-color: var(--echoes-green);
}

._trigger_1reje_16[data-disabled] {
  opacity: 0.5;
  cursor: not-allowed;
}

._icon_1reje_67 {
  font-size: 10px;
  color: var(--echoes-white);
  flex-shrink: 0;
}

._content_1reje_73 {
  overflow: hidden;
  background-color: var(--echoes-background);
  border: 1px solid #333;
  border-radius: var(--echoes-radius-sm);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
  z-index: 1000;
}

._item_1reje_82 {
  all: unset;
  font-size: var(--echoes-font-size-sm);
  font-family: var(--echoes-font-family);
  color: var(--echoes-white);
  padding: var(--echoes-space-sm) var(--echoes-space-lg);
  cursor: pointer;
  user-select: none;
  display: flex;
  align-items: center;
}

._item_1reje_82:hover {
  background-color: var(--echoes-green);
  color: var(--echoes-background);
}

._item_1reje_82[data-disabled] {
  opacity: 0.5;
  cursor: not-allowed;
}

._item_1reje_82[data-highlighted] {
  background-color: var(--echoes-green);
  color: var(--echoes-background);
}

._item_1reje_82 [data-radix-select-item-text] {
  display: flex;
  align-items: center;
  width: 100%;
}

._gridViewport_1reje_115 {
  display: grid !important;
}

._gridItem_1reje_119 {
  padding: var(--echoes-space-sm) !important;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: auto;
}

._gridItem_1reje_119 [data-radix-select-item-text] {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
}

._toast_15kmv_1 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--echoes-space-sm) var(--echoes-space-lg);
  border-radius: var(--echoes-radius-sm);
  margin-bottom: var(--echoes-space-sm);
  font-family: var(--echoes-font-family);
  font-size: var(--echoes-font-size-sm);
  min-width: 300px;
  max-width: 500px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
  animation: _slideIn_15kmv_1 0.3s ease-out;
}

._toast_15kmv_1._success_15kmv_16 {
  background-color: var(--echoes-green);
  color: var(--echoes-background);
  border: 1px solid var(--echoes-green);
}

._toast_15kmv_1._error_15kmv_22 {
  background-color: var(--echoes-red);
  color: var(--echoes-white);
  border: 1px solid var(--echoes-red);
}

._toast_15kmv_1._info_15kmv_28 {
  background-color: var(--echoes-blue);
  color: var(--echoes-white);
  border: 1px solid var(--echoes-blue);
}

._toast_15kmv_1._warning_15kmv_34 {
  background-color: var(--echoes-orange);
  color: var(--echoes-white);
  border: 1px solid var(--echoes-orange);
}

._message_15kmv_40 {
  flex: 1;
  margin-right: var(--echoes-space-sm);
}

._closeButton_15kmv_45 {
  background: none;
  border: none;
  color: inherit;
  font-size: 18px;
  cursor: pointer;
  padding: 0;
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
}

._closeButton_15kmv_45:hover {
  background-color: rgba(255, 255, 255, 0.2);
}

@keyframes _slideIn_15kmv_1 {
  from {
    transform: translateX(100%);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

._container_1hujb_1 {
  position: fixed;
  top: 20px;
  right: 20px;
  z-index: 1000;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
}

._panel_14vjv_1 {
  border: 1px solid var(--echoes-grey);
  background: color-mix(in srgb, var(--echoes-background), var(--echoes-white) 10%);
  position: absolute;
  top:0;
  display: flex;
  flex-direction: column;
  border-radius: var(--echoes-space-xs);
  box-shadow: 0 var(--echoes-space-sm) var(--echoes-space-lg) rgba(0, 0, 0, 0.3);
}

._handle_14vjv_12 {
  display: flex;
  align-items: center;
  padding: 0 var(--echoes-space-md);
  color: var(--echoes-white);
  cursor: grab;
  height: var(--echoes-space-3xl);
  background: var(--echoes-grey);
  font-family: var(--echoes-font-family);
  font-weight: bold;
  font-size: var(--echoes-font-size-sm);
}

._handle_14vjv_12:active {
  cursor: grabbing;
}

._title_14vjv_29 {
  font-family: var(--echoes-font-family);
  font-weight: bold;
  font-size: var(--echoes-font-size-sm);
}

._content_14vjv_35 {
  padding: var(--echoes-space-md);
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: var(--echoes-space-sm);
}

._closeButton_14vjv_43 {
  background: transparent !important;
  border: none !important;
  color: var(--echoes-white) !important;
  padding: var(--echoes-space-xs) !important;
  min-width: 20px !important;
  height: 20px !important;
  font-size: 12px !important;
  font-weight: bold !important;
  border-radius: var(--echoes-space-xs) !important;
}

._closeButton_14vjv_43:hover {
  background: color-mix(in srgb, var(--echoes-white), transparent 80%) !important;
  color: var(--echoes-white) !important;
}

._fieldset_8ihdg_1 {
  position: relative;
  border: 1px solid #fff;
  border-radius: var(--echoes-radius-sm);
  /* background-color: var(--echoes-background); */
  margin: var(--echoes-space-xs);
  margin-top: var(--echoes-space-lg);
  padding: var(--echoes-space-md);
  padding-top: calc(var(--echoes-space-md) + var(--echoes-space-sm) + 2px + var(--echoes-space-md));
}

._tabsWrapper_8ihdg_12 {
  position: absolute;
  top: calc(-1 * var(--echoes-space-sm) - 8px);
  left: var(--echoes-space-md);
  z-index: 10;
}

._content_8ihdg_19 {
  position: relative;
  z-index: 1;
  margin-top: var(--echoes-space-md);
}

/* 
 * ===============================================
 * MUSIC EDITOR CUSTOMIZATION VARIABLES
 * ===============================================
 * Easily customize colors by changing the assignments below
 */

/* Import UI design tokens */

/* Echoes UI Design Tokens */

:root {
  /* Colors */
  --echoes-white: #ffffff;
  --echoes-purple: #a855f7;
  --echoes-blue: #3b82f6;
  --echoes-red: #ef4444;
  --echoes-orange: #f97316;
  --echoes-yellow: #eab308;
  --echoes-green: #4ade80;
  --echoes-grey: #6b7280;
  --echoes-lightish-grey: #9ca3af;
  --echoes-background: #081b1b;
  
  /* Spacing */
  --echoes-space-xs: 2px;
  --echoes-space-sm: 4px;
  --echoes-space-md: 8px;
  --echoes-space-lg: 12px;
  --echoes-space-xl: 16px;
  --echoes-space-2xl: 20px;
  --echoes-space-3xl: 24px;
  --echoes-space-4xl: 32px;
  
  /* Typography */
  --echoes-font-family: monospace;
  --echoes-font-size-xs: 10px;
  --echoes-font-size-sm: 11px;
  --echoes-font-size-base: 13px;
  --echoes-font-size-lg: 16px;
  
  /* Border radius */
  --echoes-radius-xs: 2px;
  --echoes-radius-sm: 4px;
  --echoes-radius-md: 6px;

  --echoes-header-height: 65px;
}

._container_n9oxi_11 {
  /* Semantic Color Mappings - Using UI design tokens */
  --note-color: var(--echoes-blue);           /* Active notes in piano roll */
  --note-hover-color: var(--echoes-blue);     /* Note hover state */
  --chord-note-color: var(--echoes-orange);   /* Chord mode notes */
  --playhead-color: var(--echoes-yellow);     /* Current playback position */
  --loop-region-color: var(--echoes-purple);  /* Loop selection area */
  
  --track-background: var(--echoes-background); /* Piano roll background */
  --track-border: var(--echoes-grey);          /* Grid lines and borders */
  --track-header: var(--echoes-grey);          /* Piano key background */
  
  --button-primary: var(--echoes-green);       /* Play/save buttons */
  --button-secondary: var(--echoes-grey);      /* Default buttons */
  --button-hover: var(--echoes-blue);          /* Button hover states */
  --button-danger: var(--echoes-red);          /* Stop/cancel buttons */
  
  --control-background: var(--echoes-grey);    /* Control panels */
  --control-active: var(--echoes-green);       /* Active tabs/controls */
  --control-text: var(--echoes-white);         /* Control labels */
  
  --input-background: var(--echoes-background); /* Input fields */
  --input-border: var(--echoes-grey);          /* Input borders */
  --input-focus: var(--echoes-blue);           /* Input focus state */
  --input-text: var(--echoes-white);           /* Input text */

  /* Typography Scale - Using UI tokens */
  --font-size-xs: var(--echoes-font-size-xs);      /* Very small text (test buttons, volume labels) */
  --font-size-sm: var(--echoes-font-size-sm);      /* Small text (step headers, scale select) */
  --font-size-base: var(--echoes-font-size-base);   /* Base text (piano keys, buttons, labels) */
  --font-size-md: var(--echoes-font-size-base);     /* Medium text (inputs, controls, descriptions) */
  --font-size-lg: var(--echoes-font-size-lg);     /* Large text (titles, headers) */
  --font-size-xl: 14px;     /* Extra large text (section headers) */
  --font-size-2xl: 18px;    /* Very large text (main titles) */
  --font-size-3xl: 20px;    /* Huge text (page titles) */

  /* Spacing Scale - Using UI tokens */
  --spacing-xs: var(--echoes-space-xs);        /* Tiny spacing (button padding) */
  --spacing-sm: var(--echoes-space-sm);        /* Small spacing (tight gaps) */
  --spacing-md: var(--echoes-space-md);        /* Medium spacing (standard gaps) */
  --spacing-lg: var(--echoes-space-lg);        /* Large spacing (section gaps) */
  --spacing-xl: var(--echoes-space-xl);       /* Extra large spacing (major sections) */
  --spacing-2xl: var(--echoes-space-2xl);      /* Very large spacing (page sections) */

  /* Component Heights */
  --height-xs: 16px;        /* Very small components (octave buttons) */
  --height-sm: 20px;        /* Small components (volume sliders) */
  --height-base: 24px;      /* Base component height (piano keys, buttons) */
  --height-md: 26px;        /* Medium height (scale header) */
  --height-lg: 48px;        /* Large height (pattern cards) */
  --height-xl: 200px;       /* Extra large height (empty states) */
  --height-2xl: 300px;      /* Very large height (browsers, timelines) */
  --height-3xl: 400px;      /* Huge height (editor content, outputs) */
  --height-4xl: 500px;      /* Massive height (arrange view) */

  /* Component Widths */
  --width-xs: 8px;          /* Very small width (octave display) */
  --width-sm: 16px;         /* Small width (octave buttons) */
  --width-base: 18px;       /* Base width (note cells, step headers) */
  --width-md: 60px;         /* Medium width (number inputs) */
  --width-lg: 80px;         /* Large width (volume sliders) */
  --width-xl: 100px;        /* Extra large width (text inputs) */
  --width-2xl: 120px;       /* Very large width (song inputs) */
  --width-3xl: 140px;       /* Huge width (mixer channels) */
  --width-4xl: 176px;       /* Massive width (scale select) */
  --width-5xl: 180px;       /* Enormous width (piano keys) */

  /* Min/Max Dimensions */
  --min-width-sm: 24px;     /* Small minimum width (action buttons) */
  --min-width-md: 80px;     /* Medium minimum width (selects) */
  --min-width-lg: 90px;     /* Large minimum width (duration selects) */
  --min-width-xl: 140px;    /* Extra large minimum width (mixer channels) */
  --min-width-2xl: 200px;   /* Very large minimum width (descriptions) */
  --max-width-sm: 120px;    /* Small maximum width (tags, tempo badges) */
  --max-width-md: 200px;    /* Medium maximum width (descriptions) */
}

/* 
 * ===============================================
 * MUSIC EDITOR STYLES
 * ===============================================
 */

/* Base container - inherits font-family from client */

._container_n9oxi_11 {
  padding: var(--spacing-lg);
  background-color: var(--echoes-background);
  color: var(--echoes-white);
  font-size: var(--font-size-md);
  min-height: 100vh;
  overflow-y: auto;
}

/* Piano Roll Styles */

._pianoRoll_n9oxi_106 {
  display: flex;
}

._pianoRoll_n9oxi_106._chordMode_n9oxi_110 ._noteCell_n9oxi_110 {
  cursor: copy !important;
}

._pianoKeys_n9oxi_114 {
  width: var(--width-5xl);
  background-color: var(--track-header);
  border-right: 1px solid var(--track-border);
}

._pianoKey_n9oxi_114 {
  height: var(--height-base);
  border-bottom: 1px solid var(--grey-color);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--font-size-base);
  font-weight: bold;
  color: var(--white-color);
  background-color: var(--background-color);
}

._pianoKey_n9oxi_114:nth-child(odd) {
  background-color: var(--grey-color);
}

._pianoGrid_n9oxi_137 {
  flex: 1;
  background-color: var(--background-color);
}

._headerRow_n9oxi_142 {
  display: flex;
  height: 0px;
  border-bottom: 2px solid var(--grey-color);
  background-color: var(--grey-color);
}

._stepHeader_n9oxi_149 {
  width: var(--width-base);
  height: 0px;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  padding-left: var(--spacing-xs);
  font-size: var(--font-size-sm);
  font-weight: bold;
  color: var(--white-color);
  border-right: 1px solid var(--grey-color);
}

._stepHeader_n9oxi_149:nth-child(1) {
  border-left: 2px solid var(--white-color);
}

._stepHeader_n9oxi_149:nth-child(17), ._stepHeader_n9oxi_149:nth-child(33), ._stepHeader_n9oxi_149:nth-child(49) {
  border-left: 2px solid var(--white-color);
}

._noteRow_n9oxi_170 {
  display: flex;
  height: var(--height-base);
  border-bottom: 1px solid var(--grey-color);
}

._noteCell_n9oxi_110 {
  width: var(--width-base);
  height: var(--height-base);
  border: none;
  border-right: 1px solid var(--grey-color);
  background-color: var(--background-color);
  cursor: pointer;
  transition: background-color 0.1s ease;
}

._noteCell_n9oxi_110._active_n9oxi_186 {
  background-color: var(--note-color);
}

._noteCell_n9oxi_110._barStart_n9oxi_190 {
  border-left: 2px solid var(--white-color);
}

._noteCell_n9oxi_110:hover {
  background-color: var(--note-hover-color);
}

._noteCell_n9oxi_110._chordNote_n9oxi_198 {
  box-shadow: inset 0 0 0 1px var(--chord-note-color);
  /* background-color: color-mix(in srgb, var(--chord-note-color), transparent 80%); */
}

._noteCell_n9oxi_110._chordNote_n9oxi_198._active_n9oxi_186 {
  background-color: var(--chord-note-color);
  box-shadow: inset 0 0 0 1px var(--chord-note-color);
}

._noteCell_n9oxi_110._playhead_n9oxi_208 {
  box-shadow: inset 0 0 0 1px var(--playhead-color);
  /* background-color: color-mix(in srgb, var(--playhead-color), transparent 80%); */
  animation: _pulse_n9oxi_1 0.52s ease-in-out infinite alternate;
}

._noteCell_n9oxi_110._playhead_n9oxi_208._active_n9oxi_186 {
  background-color: var(--playhead-color);
  box-shadow: inset 0 0 0 3px var(--playhead-color);
}

._noteCell_n9oxi_110._loopRegion_n9oxi_219 {
  background-color: color-mix(in srgb, var(--loop-region-color), transparent 90%);
}

._noteCell_n9oxi_110._loopRegion_n9oxi_219._active_n9oxi_186 {
  background-color: color-mix(in srgb, var(--note-color), var(--loop-region-color) 20%);
}

._noteCell_n9oxi_110._noteStart_n9oxi_227 {
  border-left: 3px solid var(--note-color);
  border-radius: 3px 0 0 3px;
}

._noteCell_n9oxi_110._noteExtension_n9oxi_232 {
  background-color: color-mix(in srgb, var(--note-color), transparent 50%);
  border-left: none;
  border-right: 1px solid var(--grey-color);
}

._noteCell_n9oxi_110._noteExtension_n9oxi_232:last-child {
  border-radius: 0 3px 3px 0;
}

._noteCell_n9oxi_110._noteExtension_n9oxi_232._chordNote_n9oxi_198 {
  background-color: color-mix(in srgb, var(--chord-note-color), transparent 70%);
}

@keyframes _pulse_n9oxi_1 {
  from { opacity: 0.7; }
  to { opacity: 1.0; }
}

/* Editor content */

._editorContent_n9oxi_252 {
  margin-bottom: var(--space-2xl);
  border: 1px solid var(--grey-color);
  border-top: none;
  border-radius: 0 0 var(--space-sm) var(--space-sm);
  min-height: var(--height-3xl);
  background-color: var(--background-color);
}

/* Pattern management */

._saveDialog_n9oxi_263 {
  display: flex;
  gap: var(--space-sm);
  align-items: center;
  margin-top: var(--space-sm);
  padding: var(--space-sm);
  background-color: rgba(0, 0, 0, 0.3);
  border-radius: var(--space-sm);
  border: 1px solid var(--grey-color);
}

._patternNameInput_n9oxi_274 {
  background-color: var(--background-color);
  color: var(--white-color);
  border: 1px solid var(--grey-color);
  border-radius: var(--space-sm);
  padding: var(--space-xs) var(--space-sm);
  font-size: var(--font-size-md);
  outline: none;
}

._patternNameInput_n9oxi_274:focus {
  border-color: var(--blue-color);
}

._saveButton_n9oxi_288, ._cancelButton_n9oxi_288 {
  background-color: var(--grey-color);
  color: var(--white-color);
  border: none;
  border-radius: var(--space-sm);
  padding: var(--space-xs) var(--space-sm);
  cursor: pointer;
  font-size: var(--font-size-base);
}

._saveButton_n9oxi_288:hover, ._cancelButton_n9oxi_288:hover {
  background-color: var(--blue-color);
}

._cancelButton_n9oxi_288 {
  background-color: var(--red-color);
}

._cancelButton_n9oxi_288:hover {
  background-color: #ff6b6b;
}

/* Pattern browser */

._patternBrowser_n9oxi_312 {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  max-height: var(--height-3xl);
  background: var(--background-color);
  border-radius: var(--space-sm);
  padding: var(--space-md);
  border: 1px solid var(--grey-color);
  margin-top: var(--space-sm);
}

._patternBrowserHeader_n9oxi_324 {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  padding-bottom: var(--space-md);
  border-bottom: 1px solid var(--grey-color);
  margin-bottom: var(--space-md);
}

._searchContainer_n9oxi_333 {
  display: flex;
}

._searchInput_n9oxi_337 {
  flex: 1;
  padding: var(--space-sm);
  border: 1px solid var(--grey-color);
  border-radius: var(--space-sm);
  background: var(--background-color);
  color: var(--white-color);
  font-size: 0.8rem;
  transition: border-color 0.2s ease;
}

._searchInput_n9oxi_337:focus {
  outline: none;
  border-color: var(--blue-color);
  box-shadow: 0 0 0 2px rgba(90, 139, 222, 0.1);
}

._patternList_n9oxi_354 {
  flex: 1;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

._noPatterns_n9oxi_362 {
  text-align: center;
  color: var(--lightish-grey-color);
  font-style: italic;
  padding: var(--space-lg);
}

._patternCard_n9oxi_369 {
  background: var(--background-color);
  border: 1px solid var(--grey-color);
  border-radius: var(--space-sm);
  padding: var(--space-sm) var(--space-md);
  transition: border-color 0.2s ease;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0;
  min-height: var(--height-lg);
}

._patternCard_n9oxi_369:hover {
  border-color: var(--green-color);
  background: var(--grey-color);
}

._patternCardRow_n9oxi_387 {
  display: grid;
  grid-template-columns: auto 1fr auto auto auto auto;
  align-items: center;
  gap: var(--space-md);
  min-height: var(--height-lg);
}

._patternName_n9oxi_274 {
  font-weight: bold;
  color: var(--white-color);
  font-size: 0.9rem;
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  flex: 1;
  min-width: 0;
}

._patternDescription_n9oxi_406 {
  color: var(--lightish-grey-color);
  font-size: 0.7rem;
  font-style: italic;
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: var(--min-width-2xl);
}

._patternTags_n9oxi_418 {
  display: flex;
  gap: var(--space-xs);
  flex-shrink: 0;
  max-width: var(--max-width-sm);
  overflow: hidden;
}

._tag_n9oxi_426 {
  background: var(--grey-color);
  color: var(--white-color);
  padding: var(--spacing-xs) var(--spacing-md);
  border-radius: 8px;
  font-size: 0.6rem;
  font-weight: 500;
  border: 1px solid var(--grey-color);
  transition: all 0.2s ease;
  white-space: nowrap;
}

._tag_n9oxi_426:hover {
  background: var(--green-color);
  color: var(--background-color);
  border-color: var(--green-color);
}

._tempoBadge_n9oxi_444 {
  background: var(--grey-color);
  color: var(--white-color);
  padding: var(--spacing-xs) var(--spacing-md);
  border-radius: 4px;
  font-size: 0.6rem;
  font-weight: 500;
  display: flex;
  align-items: center;
  gap: 3px;
  border: 1px solid var(--grey-color);
  flex-shrink: 0;
}

._patternActions_n9oxi_458 {
  display: flex;
  gap: var(--space-xs);
  align-items: center;
}

._previewButton_n9oxi_464, ._loadButton_n9oxi_464 {
  padding: var(--space-xs);
  border: 1px solid var(--grey-color);
  border-radius: var(--space-sm);
  background: var(--grey-color);
  color: var(--white-color);
  cursor: pointer;
  font-size: 0.7rem;
  font-weight: 500;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2px;
  min-height: var(--min-width-sm);
  min-width: var(--min-width-sm);
}

._previewButton_n9oxi_464:hover, ._loadButton_n9oxi_464:hover {
  background: var(--blue-color);
  color: white;
  border-color: var(--blue-color);
  transform: translateY(-1px);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

._loadButton_n9oxi_464 {
  background: var(--green-color);
  color: var(--background-color);
  border-color: var(--green-color);
  font-weight: 600;
}

._loadButton_n9oxi_464:hover {
  background: var(--orange-color);
}

._patternCount_n9oxi_501 {
  text-align: center;
  color: var(--lightish-grey-color);
  font-size: 0.8rem;
  padding-top: var(--space-sm);
  border-top: 1px solid var(--grey-color);
}

/* Arrange view */

._arrangeView_n9oxi_510 {
  padding: var(--space-lg);
  background-color: var(--background-color);
  min-height: var(--height-4xl);
}

._arrangeHeader_n9oxi_516 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--space-lg);
  padding-bottom: var(--space-md);
  border-bottom: 2px solid var(--grey-color);
}

._arrangeHeader_n9oxi_516 h2 {
  margin: 0;
  color: var(--white-color);
  font-size: var(--font-size-2xl);
}

._arrangeControls_n9oxi_531 {
  display: flex;
  align-items: center;
  gap: var(--space-lg);
}

._totalDuration_n9oxi_537 {
  color: var(--white-color);
  font-weight: bold;
  font-size: var(--font-size-xl);
}

._arrangeContent_n9oxi_543 {
  display: grid;
  grid-template-columns: 1fr 2fr;
  gap: var(--space-xl);
  height: var(--height-3xl);
}

._patternLibrary_n9oxi_550 h3 {
  margin: 0 0 var(--space-md) 0;
  color: var(--white-color);
  font-size: var(--font-size-xl);
}

._sequenceSection_n9oxi_556 h3 {
  margin: 0 0 var(--space-md) 0;
  color: var(--white-color);
  font-size: var(--font-size-xl);
}

._sequenceHeader_n9oxi_562 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--space-md);
}

._clearButton_n9oxi_569 {
  background-color: var(--red-color);
  color: var(--white-color);
  border: none;
  padding: var(--space-xs) var(--space-sm);
  border-radius: var(--space-xs);
  font-size: var(--font-size-md);
  cursor: pointer;
  transition: background-color 0.2s ease;
}

._clearButton_n9oxi_569:hover:not(:disabled) {
  background-color: #d11a1a;
}

._clearButton_n9oxi_569:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

._emptySequence_n9oxi_589 {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: var(--height-xl);
  border: 2px dashed var(--grey-color);
  border-radius: var(--space-sm);
}

._emptySequence_n9oxi_589 p {
  color: var(--lightish-grey-color);
  margin: var(--space-xs) 0;
  font-style: italic;
}

._sequenceTimeline_n9oxi_605 {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  max-height: var(--height-2xl);
  overflow-y: auto;
}

._sequenceItem_n9oxi_613 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--space-sm);
  background-color: var(--green-color);
  border: 1px solid var(--green-color);
  border-radius: var(--space-xs);
  transition: all 0.2s ease;
}

._sequenceItem_n9oxi_613:hover {
  background-color: #5ea86d;
}

._sequenceItem_n9oxi_613._currentlyPlaying_n9oxi_628 {
  animation: _currentlyPlayingPulse_n9oxi_1 1s ease-in-out infinite alternate;
  transition: all 0.3s ease;
}

._sequenceItemContent_n9oxi_633 {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

._sequencePatternName_n9oxi_639 {
  color: var(--white-color);
  font-weight: bold;
  font-size: var(--font-size-lg);
}

._sequencePatternDuration_n9oxi_645 {
  color: var(--white-color);
  font-size: var(--font-size-base);
  opacity: 0.8;
}

._sequenceItemControls_n9oxi_651 {
  display: flex;
  gap: var(--space-xs);
}

._moveButton_n9oxi_656, ._removeButton_n9oxi_656 {
  background-color: rgba(255, 255, 255, 0.2);
  color: var(--white-color);
  border: none;
  padding: var(--space-xs);
  border-radius: var(--space-xs);
  font-size: var(--font-size-base);
  cursor: pointer;
  transition: background-color 0.2s ease;
  min-width: var(--min-width-sm);
  height: var(--min-width-sm);
  display: flex;
  align-items: center;
  justify-content: center;
}

._moveButton_n9oxi_656:hover, ._removeButton_n9oxi_656:hover {
  background-color: rgba(255, 255, 255, 0.3);
}

._removeButton_n9oxi_656 {
  background-color: var(--red-color);
}

._removeButton_n9oxi_656:hover {
  background-color: #d11a1a;
}

@keyframes _currentlyPlayingPulse_n9oxi_1 {
  from { 
    opacity: 0.8;
  }
  to { 
    opacity: 1.0;
  }
}

/* Shortcuts */

._shortcuts_n9oxi_694 {
  margin-top: var(--space-lg);
  padding: var(--space-sm);
  background-color: transparent;
  border-top: 1px solid var(--grey-color);
  text-align: center;
}

._shortcuts_n9oxi_694 small {
  color: var(--lightish-grey-color);
  font-size: var(--font-size-base);
}

/* Shortcuts */
._shortcuts_sw08j_2 {
  margin-top: var(--space-lg);
  padding: var(--space-sm);
  background-color: transparent;
  border-top: 1px solid var(--grey-color);
  text-align: center;
}

._shortcuts_sw08j_2 small {
  color: var(--lightish-grey-color);
  font-size: var(--font-size-base);
}

/* Tab styles */
._viewTab_j6l2m_2 {
  padding: var(--spacing-sm) var(--spacing-lg);
  border: 1px solid var(--button-secondary);
  background-color: var(--button-secondary);
  color: var(--control-text);
  cursor: pointer;
  font-size: var(--font-size-md);
  font-weight: bold;
  border-radius: 0;
}

._viewTab_j6l2m_2:first-child {
  border-top-left-radius: var(--spacing-sm);
  border-bottom-left-radius: var(--spacing-sm);
}

._viewTab_j6l2m_2:last-child {
  border-top-right-radius: var(--spacing-sm);
  border-bottom-right-radius: var(--spacing-sm);
}

._viewTab_j6l2m_2:hover {
  background-color: var(--button-hover);
}

._viewTab_j6l2m_2._active_j6l2m_27 {
  background-color: var(--loop-region-color);
  border-color: var(--loop-region-color);
}

._viewTabsRow_j6l2m_32 {
  display: flex;
  gap: 0;
  justify-content: center;
  margin-bottom: var(--spacing-md);
}

._patternLibrarySection_f1ght_1 {
  margin-bottom: var(--space-md);
  padding: var(--space-md);
  background-color: rgba(255, 255, 255, 0.05);
  border-radius: var(--space-sm);
  border: 1px solid var(--grey-color);
}

._patternLibraryHeader_f1ght_9 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--space-sm);
}

._patternLibraryHeader_f1ght_9 h3 {
  margin: 0;
  color: var(--white-color);
  font-size: var(--font-size-xl);
}

._toggleButton_f1ght_22 {
  background: transparent;
  border: 1px solid var(--grey-color);
  color: var(--white-color);
  cursor: pointer;
  padding: var(--space-xs);
  border-radius: var(--space-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
}

._toggleButton_f1ght_22:hover {
  background-color: var(--grey-color);
  border-color: var(--blue-color);
}

/* Button base styles */
._playButton_remyo_2 {
  border: none;
  border-radius: var(--space-sm);
  cursor: pointer;
  font-size: var(--font-size-md);
  font-weight: bold;
  padding: var(--space-sm) var(--space-lg);
  transition: background-color 0.2s ease;
  background-color: var(--button-primary);
  color: var(--control-text);
}

._playButton_remyo_2:hover {
  background-color: #5ea86d;
}

._playButton_remyo_2._playing_remyo_18 {
  background-color: var(--button-danger);
}

._playButton_remyo_2._playing_remyo_18:hover {
  background-color: #d11a1a;
}

/* Layout components */
._globalControls_remyo_27 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--space-md);
  padding: var(--space-md);
  background-color: var(--control-background);
  border-radius: var(--space-sm);
}

._patternMetadata_remyo_37, ._playbackControls_remyo_37 {
  display: flex;
  gap: var(--space-lg);
  align-items: center;
}

._playbackControls_remyo_37 {
  gap: var(--space-md);
}

/* Control groups and inputs */
._controlGroup_remyo_48 {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
}

._controlGroup_remyo_48 label {
  font-size: var(--font-size-md);
  color: var(--white-color);
  font-weight: bold;
}

._controlGroup_remyo_48 input, ._controlGroup_remyo_48 select {
  background-color: var(--input-background);
  border: 1px solid var(--input-border);
  color: var(--input-text);
  border-radius: var(--space-xs);
  font-size: var(--font-size-md);
}

._controlGroup_remyo_48 input:focus, ._controlGroup_remyo_48 select:focus {
  outline: none;
  border-color: var(--input-focus);
}

._controlGroup_remyo_48 select {
  cursor: pointer;
}

._controlGroup_remyo_48 span {
  color: var(--control-text);
  font-size: var(--font-size-md);
}

/* Specific input styles */
._songInput_remyo_83 {
  width: var(--width-2xl);
  padding: var(--space-xs);
}

._patternSelectGlobal_remyo_88, ._timeSignatureSelect_remyo_88 {
  min-width: var(--min-width-md);
}

._tempoInput_remyo_92, ._lengthInput_remyo_92 {
  width: var(--width-md);
  padding: var(--space-xs);
}

._durationSelect_remyo_97 {
  min-width: var(--min-width-lg);
}

._loopLabel_remyo_101 {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  font-size: var(--font-size-md);
  color: var(--white-color);
}

._loopCheckbox_remyo_109 {
  cursor: pointer;
  accent-color: var(--green-color);
}

._saveLoadButtons_remyo_114 {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
}

/* Download/Upload buttons */
._downloadButton_remyo_121, ._uploadButton_remyo_121 {
  background-color: var(--blue-color);
  color: var(--white-color);
  border: none;
  padding: var(--space-xs) var(--space-sm);
  font-size: var(--font-size-base);
  cursor: pointer;
  border-radius: var(--space-xs);
  transition: background-color 0.2s ease;
}

._downloadButton_remyo_121:hover, ._uploadButton_remyo_121:hover {
  background-color: #4a8bc2;
}

._uploadButton_remyo_121 {
  background-color: var(--green-color);
}

._uploadButton_remyo_121:hover {
  background-color: #5ea86d;
}

._wavButton_remyo_144 {
  background-color: var(--purple-color);
  color: var(--white-color);
  border: none;
  padding: var(--space-xs) var(--space-sm);
  font-size: var(--font-size-base);
  cursor: pointer;
  border-radius: var(--space-xs);
  transition: background-color 0.2s ease;
}

._wavButton_remyo_144:hover {
  background-color: #a855f7;
}

/* Output section */
._output_j7joo_2 {
  margin-top: var(--space-2xl);
  padding: var(--space-lg);
  background-color: var(--grey-color);
  border: 1px solid var(--grey-color);
  border-radius: var(--space-sm);
}

._outputHeader_j7joo_10 {
  cursor: pointer;
  user-select: none;
  transition: background-color 0.2s ease;
  padding: var(--space-xs);
  margin: calc(-1 * var(--space-xs));
  border-radius: var(--space-xs);
}

._outputHeader_j7joo_10:hover {
  background-color: rgba(255, 255, 255, 0.1);
}

._outputTitle_j7joo_23 {
  color: var(--white-color);
  margin-bottom: var(--space-xs);
  font-size: var(--font-size-lg);
  font-weight: bold;
  display: flex;
  align-items: center;
  gap: var(--space-xs);
}

._outputDescription_j7joo_33 {
  color: var(--white-color);
  margin-bottom: var(--space-sm);
  font-size: var(--font-size-base);
}

._outputTextarea_j7joo_39 {
  width: 100%;
  min-height: var(--height-xl);
  max-height: var(--height-3xl);
  background-color: var(--background-color);
  color: var(--white-color);
  padding: var(--space-md);
  border: 1px solid var(--grey-color);
  border-radius: var(--space-sm);
  font-size: var(--font-size-md);
  outline: none;
  resize: vertical;
  line-height: 1.4;
}

._outputTextarea_j7joo_39:focus {
  border-color: var(--blue-color);
}

._dataManagementContainer_j7joo_58 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-lg);
  margin-top: var(--space-md);
}

._dataSection_j7joo_65 {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

._dataSection_j7joo_65 h4 {
  color: var(--white-color);
  margin: 0;
  font-size: var(--font-size-md);
  font-weight: bold;
  display: flex;
  align-items: center;
  gap: var(--space-xs);
}

._dataSectionHeader_j7joo_81 {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

._copyButton_j7joo_87 {
  background: transparent;
  border: 1px solid var(--grey-color);
  color: var(--white-color);
  cursor: pointer;
  padding: var(--space-xs);
  border-radius: var(--space-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
}

._copyButton_j7joo_87:hover {
  background-color: var(--grey-color);
  border-color: var(--blue-color);
}

._importHint_j7joo_105 {
  color: var(--lightish-grey-color);
  font-size: var(--font-size-sm);
  display: flex;
  align-items: center;
  gap: var(--space-xs);
}

._importHint_j7joo_105 kbd {
  background-color: var(--background-color);
  border: 1px solid var(--grey-color);
  border-radius: var(--space-xs);
  padding: 2px var(--space-xs);
  font-size: var(--font-size-xs);
  font-family: monospace;
}

/* Tab styles */
._channelTab_gw7mg_2 {
  padding: var(--space-sm) var(--space-lg);
  border: 1px solid var(--grey-color);
  background-color: var(--grey-color);
  color: var(--white-color);
  cursor: pointer;
  font-size: var(--font-size-sm);
  font-weight: bold;
  border-radius: 0;
  transition: background-color 0.2s ease;
}

._channelTab_gw7mg_2:first-child {
  border-top-left-radius: var(--space-sm);
  border-bottom-left-radius: var(--space-sm);
}

._channelTab_gw7mg_2:last-child {
  border-top-right-radius: var(--space-sm);
  border-bottom-right-radius: var(--space-sm);
}

._channelTab_gw7mg_2:hover:not(._active_gw7mg_24) {
  background-color: var(--blue-color);
}

._channelTab_gw7mg_2._active_gw7mg_24 {
  background-color: var(--green-color);
  border-color: var(--green-color);
}

._channelTabsRow_gw7mg_33 {
  display: flex;
  gap: 0;
  justify-content: center;
  margin-bottom: var(--space-md);
}

/* Button base styles */
._livePreviewButton_107tu_2 {
  border: none;
  border-radius: var(--space-sm);
  cursor: pointer;
  font-size: var(--font-size-md);
  font-weight: bold;
  padding: var(--space-sm) var(--space-lg);
  transition: background-color 0.2s ease;
  background-color: var(--button-secondary);
  color: var(--control-text);
  border: 1px solid var(--button-secondary);
}

._livePreviewButton_107tu_2:hover {
  background-color: var(--button-hover);
}

._livePreviewButton_107tu_2._active_107tu_19 {
  background-color: var(--button-primary);
  border-color: var(--button-primary);
}

._channelSpecificControls_107tu_24 {
  display: flex;
  gap: var(--space-lg);
  align-items: center;
  padding: var(--space-sm) var(--space-md);
  background-color: rgba(255, 255, 255, 0.05);
  border-radius: var(--space-sm);
  margin-bottom: var(--space-md);
}

._toolbarGroup_107tu_34 {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
}

._toolbarGroup_107tu_34 label {
  font-size: var(--font-size-md);
  color: var(--white-color);
  font-weight: bold;
}

/* Octave controls */
._octaveButton_107tu_47 {
  background-color: var(--grey-color);
  color: var(--white-color);
  border: 1px solid var(--grey-color);
  border-radius: var(--space-xs);
  cursor: pointer;
  font-size: var(--font-size-base);
  font-weight: bold;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--width-sm);
  height: var(--width-sm);
  transition: background-color 0.2s ease;
}

._octaveButton_107tu_47:hover:not(:disabled) {
  background-color: var(--blue-color);
}

._octaveButton_107tu_47:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

._octaveDisplay_107tu_72 {
  color: var(--white-color);
  font-weight: bold;
  text-align: center;
  font-size: var(--font-size-xl);
  min-width: var(--width-2xl);
}

._scaleSelectToolbar_107tu_80 {
  background-color: var(--input-background);
  border: 1px solid var(--input-border);
  color: var(--input-text);
  border-radius: var(--space-xs);
  padding: var(--space-xs);
  font-size: var(--font-size-md);
  width: var(--width-4xl);
  cursor: pointer;
}

._scaleSelectToolbar_107tu_80:focus {
  outline: none;
  border-color: var(--input-focus);
}

/* Save dialog and buttons (mirrors music-editor styles) */
._saveButton_107tu_97, ._cancelButton_107tu_97 {
  background-color: var(--grey-color);
  color: var(--white-color);
  border: none;
  border-radius: var(--space-sm);
  padding: var(--space-xs) var(--space-sm);
  cursor: pointer;
  font-size: var(--font-size-base);
  transition: background-color 0.2s ease;
}

._saveButton_107tu_97:hover, ._cancelButton_107tu_97:hover {
  background-color: var(--blue-color);
}

._cancelButton_107tu_97 {
  background-color: var(--red-color);
}

._cancelButton_107tu_97:hover {
  background-color: #ff6b6b;
}

._saveDialog_107tu_120 {
  display: flex;
  gap: var(--space-sm);
  align-items: center;
  margin-left: var(--space-sm);
}

._patternNameInput_107tu_127 {
  background-color: var(--background-color);
  color: var(--white-color);
  border: 1px solid var(--grey-color);
  border-radius: var(--space-sm);
  padding: var(--space-xs) var(--space-sm);
  font-size: var(--font-size-md);
  outline: none;
}

._patternNameInput_107tu_127:focus {
  border-color: var(--blue-color);
}

/* Mixer panel */
._mixerPanel_19ne3_2 {
  background-color: rgba(0, 0, 0, 0.3);
  border: 1px solid var(--grey-color);
  border-radius: var(--space-sm);
  padding: var(--space-md);
  margin-bottom: var(--space-md);
  width: 100%;
}

._mixerChannels_19ne3_11 {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-md);
  margin-bottom: var(--space-md);
}

._mixerChannel_19ne3_11 {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  align-items: center;
  background-color: rgba(255, 255, 255, 0.05);
  padding: var(--space-sm);
  border-radius: var(--space-xs);
  min-width: var(--min-width-xl);
}

._channelLabel_19ne3_29 {
  color: var(--white-color);
  font-size: var(--font-size-base);
  font-weight: bold;
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-xs);
}

._testButton_19ne3_40 {
  background-color: var(--blue-color);
  color: var(--white-color);
  border: none;
  border-radius: var(--space-xs);
  padding: var(--space-xs) var(--space-sm);
  cursor: pointer;
  font-size: var(--font-size-xs);
  transition: background-color 0.2s ease;
}

._testButton_19ne3_40:hover {
  background-color: #4a8bc2;
}

._muteButton_19ne3_55 {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
}

._muteButton_19ne3_55 label {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  font-size: var(--font-size-sm);
  color: var(--white-color);
  cursor: pointer;
}

._muteButton_19ne3_55 input[type="checkbox"] {
  cursor: pointer;
  accent-color: var(--red-color);
}

._volumeControl_19ne3_75 {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-xs);
}

._volumeSlider_19ne3_82 {
  width: var(--width-lg);
  height: var(--height-sm);
  background: var(--grey-color);
  border-radius: 10px;
  cursor: pointer;
}

._volumeSlider_19ne3_82::-webkit-slider-thumb {
  appearance: none;
  width: var(--width-sm);
  height: var(--width-sm);
  border-radius: 50%;
  background: var(--green-color);
  cursor: pointer;
}

._volumeSlider_19ne3_82::-moz-range-thumb {
  width: var(--width-sm);
  height: var(--width-sm);
  border-radius: 50%;
  background: var(--green-color);
  cursor: pointer;
  border: none;
}

._volumeLabel_19ne3_108 {
  color: var(--white-color);
  font-size: var(--font-size-sm);
  font-weight: bold;
}

._envelopeControl_19ne3_114,
._dutyControl_19ne3_115 {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-xs);
  width: 100%;
}

._envelopeControl_19ne3_114 label,
._dutyControl_19ne3_115 label {
  font-size: var(--font-size-sm);
  color: var(--white-color);
  font-weight: bold;
}

._channelSelect_19ne3_130 {
  background-color: var(--input-background);
  border: 1px solid var(--input-border);
  color: var(--input-text);
  border-radius: var(--space-xs);
  padding: var(--space-xs);
  font-size: var(--font-size-sm);
  width: 100%;
  cursor: pointer;
}

._channelSelect_19ne3_130:focus {
  outline: none;
  border-color: var(--input-focus);
}

._masterControls_19ne3_146 {
  display: flex;
  justify-content: center;
  padding-top: var(--space-sm);
  border-top: 1px solid var(--grey-color);
}

._masterVolume_19ne3_153 {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
}

._masterVolume_19ne3_153 label {
  color: var(--white-color);
  font-size: var(--font-size-lg);
  font-weight: bold;
}

._masterVolume_19ne3_153 ._volumeSlider_19ne3_82 {
  width: var(--width-2xl);
}

._dayNightWrapper_1lmtc_1 {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}

._canvasContainer_1lmtc_10 {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  
  /* Apply filter effects to canvas */
  filter: brightness(var(--brightness, 1)) 
          contrast(var(--contrast, 1)) 
          hue-rotate(var(--hue-rotate, 0deg));
  
  transition: filter 0.5s ease-in-out;
  
  /* Ensure canvas inherits positioning */
}

._canvasContainer_1lmtc_10 > * {
  position: relative;
  z-index: 0;
}

._overlay_1lmtc_33 {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  pointer-events: none;
  background-color: var(--overlay-color, transparent);
  opacity: var(--overlay-opacity, 0);
  mix-blend-mode: multiply;
  transition: background-color 0.5s ease-in-out, 
              opacity 0.5s ease-in-out;
  z-index: 1;
}

._gameCanvasWrapper_m35o6_1 {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: calc(100vh - var(--echoes-header-height));
  overflow-x: scroll;
  overflow-y: scroll;
}

._gameCanvasWrapper_m35o6_1 canvas {
  outline: none;
}

/* Cursor classes for draw modes */
._cursorNone_m35o6_16 { cursor: default; }
._cursorSpawnable_m35o6_17 { cursor: crosshair; }
._cursorZone_m35o6_18 { cursor: cell; }
._cursorPortal_m35o6_19 { cursor: alias; }
._cursorErase_m35o6_20 { cursor: no-drop; }
._cursorDesignate_m35o6_21 { cursor: copy; }

._container_19r8u_1 {
  width: 400px;
}

._tabHeader_19r8u_5 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--space-sm);
  padding-bottom: var(--space-xs);
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

._tabHeaderTitle_19r8u_14 {
  font-size: 12px;
  font-family: monospace;
  font-weight: bold;
  color: var(--white-color);
}

._iconButton_19r8u_21 {
  padding: var(--space-xs) !important;
  min-width: auto !important;
  width: auto !important;
  height: auto !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}

/* Split layout for zones tab */
._splitLayout_19r8u_32 {
  display: flex;
  gap: var(--space-md);
  height: 100%;
  min-height: 400px;
}

._zoneList_19r8u_39 {
  flex: 0 0 200px;
  min-width: 0;
  overflow-y: auto;
}

._zoneListItems_19r8u_45 {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

._zoneListItem_19r8u_45 {
  padding: var(--space-sm);
  cursor: pointer;
  border-radius: var(--space-xs);
  border: 1px solid rgba(255, 255, 255, 0.1);
  background-color: rgba(0, 0, 0, 0.2);
  /* transition: all 0.2s ease; */
}

._zoneListItem_19r8u_45:hover {
  background-color: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.2);
}

._zoneListItem_19r8u_45._selected_19r8u_65 {
  /* background-color: var(--green-color); */
  border-color: var(--green-color);
  /* color: var(--background-color); */
}

._zoneListItemName_19r8u_71 {
  font-size: 11px;
  font-family: monospace;
  font-weight: bold;
}

._zoneListItemType_19r8u_77 {
  font-size: 9px;
  font-family: monospace;
  opacity: 0.8;
  text-transform: capitalize;
}

._zoneTag_19r8u_84 {
  font-size: 8px;
  font-family: monospace;
  padding: 2px 4px;
  background-color: rgba(255, 255, 255, 0.2);
  border-radius: 2px;
}

._zoneDetails_19r8u_92 {
  flex: 1;
  min-width: 0;
  padding: var(--space-sm);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: var(--space-xs);
  background-color: rgba(0, 0, 0, 0.2);
  display: flex;
  flex-direction: column;
}

._detailsHeader_19r8u_103 {
  font-size: 11px;
  font-family: monospace;
  font-weight: bold;
  color: var(--white-color);
  margin-bottom: var(--space-sm);
  padding-bottom: var(--space-xs);
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

._detailsContent_19r8u_113 {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0;
}

._deleteButtonContainer_19r8u_120 {
  margin-top: auto;
  padding-top: var(--space-sm);
  border-top: 1px solid rgba(255, 255, 255, 0.1);
}

._areaLink_19r8u_126 {
  font-size: 11px;
  font-family: monospace;
  color: var(--yellow-color);
  cursor: pointer;
  padding: var(--space-xs);
  border-radius: var(--space-xs);
  transition: all 0.2s ease;
  user-select: none;
}

._areaLink_19r8u_126:hover {
  background-color: rgba(255, 255, 0, 0.1);
  color: var(--white-color);
}

._emptyDetails_19r8u_142 {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  min-height: 200px;
}

._emptyDetailsText_19r8u_150 {
  font-size: 11px;
  font-family: monospace;
  color: #666;
  font-style: italic;
  text-align: center;
}

._emptyState_19r8u_158 {
  font-size: 10px;
  font-family: monospace;
  color: #666;
  font-style: italic;
  padding: var(--space-md);
  text-align: center;
}

._sectionHeader_19r8u_167 {
  font-weight: bold;
  font-size: 11px;
  font-family: monospace;
  color: var(--white-color);
  margin-bottom: var(--space-xs);
}

._detailSection_19r8u_175 {
  margin-top: var(--space-sm);
}

._detailLabel_19r8u_179 {
  font-size: 10px;
  font-family: monospace;
  font-weight: bold;
  color: var(--white-color);
  margin-bottom: var(--space-xs);
}

._zoneNameHint_19r8u_187 {
  font-size: 10px;
  font-family: monospace;
  color: var(--yellow-color);
  font-style: italic;
}

._drawingHint_19r8u_194 {
  font-size: 10px;
  font-family: monospace;
  color: var(--yellow-color);
  font-style: italic;
  padding: var(--space-xs);
  background-color: rgba(255, 255, 0, 0.1);
  border-radius: var(--space-xs);
}

._container_fvynn_1 {
  max-height: 60vh;
  overflow-y: auto;
  scrollbar-width: none;
}

._container_fvynn_1::-webkit-scrollbar {
  display: none;
}

._buildingsGrid_fvynn_11 {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-xs);
  max-width: 300px;
}

._buildingButton_fvynn_18 {
  padding: 0;
  border: 2px solid var(--grey-color);
  border-radius: var(--space-xs);
  background-color: var(--background-color);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s;
}

._buildingButton_fvynn_18._selected_fvynn_30 {
  border-color: var(--blue-color);
  background-color: color-mix(
    in srgb,
    var(--background-color),
    var(--blue-color) 20%
  );
  box-shadow: 0 0 8px rgba(74, 144, 226, 0.5);
}

._buildingButton_fvynn_18:hover:not(._selected_fvynn_30) {
  background-color: color-mix(
    in srgb,
    var(--background-color),
    var(--white-color) 10%
  );
  border-color: #666;
}

._buildingButtonPlaceholder_fvynn_49 {
  font-size: 10px;
  color: #888;
  text-align: center;
  font-family: monospace;
}

._previewContainer_fvynn_56 {
  margin-top: var(--space-md);
  max-width: 800px;
}

._previewCard_fvynn_61 {
  background-color: #000;
  padding: var(--space-md);
  border-radius: var(--space-sm);
}

._previewTitle_fvynn_67 {
  font-weight: bold;
  font-size: 12px;
  font-family: monospace;
  color: var(--green-color);
}

._previewInstruction_fvynn_74 {
  font-size: 10px;
  font-family: monospace;
  color: var(--yellow-color);
}

._previewHint_fvynn_80 {
  font-size: 9px;
  font-family: monospace;
  color: var(--grey-color);
  margin-top: var(--space-xs);
  opacity: 0.7;
}

._previewDetails_fvynn_88 {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  align-items: center;
}

._previewDetailItem_fvynn_95 {
  font-size: 10px;
  font-family: monospace;
}

._previewPlaceholder_fvynn_100 {
  background-color: #444;
  border: 2px solid #666;
  border-radius: var(--space-xs);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #ccc;
  font-family: monospace;
  font-size: 11px;
  min-height: 60px;
}

._gridEditor_fvynn_113 {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-xs);
  padding: var(--space-sm);
}

._gridContainer_fvynn_121 {
  display: grid;
  border: 2px solid #555;
  border-radius: var(--space-xs);
  background-color: #222;
}

._gridCell_fvynn_128 {
  border: none;
  padding: 0;
  margin: 0;
  cursor: pointer;
  transition: opacity 0.1s;
}

._gridCell_fvynn_128:hover {
  opacity: 0.8;
}

._gridCell_fvynn_128:active {
  opacity: 0.6;
}

._gridCellFloor_fvynn_144 {
  background-color: #888;
}

._gridCellFloor_fvynn_144:hover {
  background-color: #aaa;
}

._gridCellWall_fvynn_152 {
  background-color: #444;
}

._gridCellWall_fvynn_152:hover {
  background-color: #555;
}

._gridCellDoor_fvynn_160 {
  position: relative;
}

._gridCellDoor_fvynn_160::after {
  content: "🚪";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 8px;
  pointer-events: none;
}

._container_91n37_1 {
  width: 420px;
  
}

._header_91n37_6 {
  font-size: 12px;
  font-family: monospace;
  font-weight: bold;
  color: var(--white-color);
}

._emptyState_91n37_13 {
  font-size: 11px;
  font-family: monospace;
  color: #999;
  font-style: italic;
}

._sectionHeader_91n37_20 {
  font-size: 10px;
  font-family: monospace;
  text-transform: uppercase;
}

._sectionHeader_91n37_20._unassigned_91n37_26 {
  color: var(--yellow-color);
}

._sectionHeader_91n37_20._active_91n37_30 {
  color: var(--green-color);
}

._sectionHeader_91n37_20._failed_91n37_34 {
  color: var(--red-color);
}

._sectionHeader_91n37_20._completed_91n37_38 {
  color: #4a9eff;
}

._jobCard_91n37_42 {
  padding: var(--space-sm);
  background-color: #2a2a2a;
  font-size: 10px;
  font-family: monospace;
}

._jobCardContent_91n37_49 {
  display: flex;
  gap: var(--space-xs);
  align-items: flex-start;
}

._jobSprite_91n37_55 {
  flex-shrink: 0;
}

._jobInfo_91n37_59 {
  flex: 1;
  min-width: 0;
}

._jobCard_91n37_42._unassigned_91n37_26 {
  border-left: 2px solid var(--yellow-color);
}

._jobCard_91n37_42._active_91n37_30 {
  border-left: 2px solid var(--green-color);
}

._jobCard_91n37_42._failed_91n37_34 {
  border-left: 2px solid var(--red-color);
  color: #999;
}

._jobCard_91n37_42._completed_91n37_38 {
  border-left: 2px solid #4a9eff;
  color: #999;
}

._jobType_91n37_82 {
  color: var(--white-color);
}

._jobWorker_91n37_86 {
  color: #999;
  margin-top: 2px;
  font-size: 9px;
}

._jobStatus_91n37_92 {
  color: #aaa;
  margin-top: 2px;
  font-size: 9px;
  font-style: italic;
}

._footer_91n37_99 {
  font-size: 9px;
  font-family: monospace;
  color: #666;
  margin-top: var(--space-sm);
}

._workPreferencesGrid_91n37_106 {
  overflow-x: auto;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: var(--space-xs);
  background-color: rgba(0, 0, 0, 0.2);
}

._gridContainer_91n37_113 {
  display: grid;
  font-family: monospace;
  font-size: 11px;
}

._gridHeaderEntity_91n37_119 {
  padding: var(--space-sm);
  text-align: left;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  position: sticky;
  left: 0;
  background-color: rgba(0, 0, 0, 0.4);
  z-index: 1;
}

._gridHeaderJob_91n37_129 {
  padding: var(--space-sm) var(--space-xs);
  text-align: center;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  height: 125px;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}

._gridHeaderJobText_91n37_140 {
  transform: translateX(-50%) rotate(-90deg);
  transform-origin: center;
  white-space: nowrap;
  font-size: 11px;
  position: absolute;
  left: 50%;
  margin: 0;
  padding: 0;
}

._gridCellEntity_91n37_151 {
  padding: var(--space-sm);
  position: sticky;
  left: 0;
  background-color: rgba(0, 0, 0, 0.4);
  z-index: 1;
  border-bottom: 1px solid rgba(255, 255, 255, 0.05);
  display: flex;
  align-items: center;
}

._entityName_91n37_162 {
  font-size: 11px;
  font-weight: bold;
}

._gridCellJob_91n37_167 {
  padding: var(--space-xs);
  text-align: center;
  border-bottom: 1px solid rgba(255, 255, 255, 0.05);
  display: flex;
  align-items: center;
  justify-content: center;
}

._priorityButton_91n37_176 {
  width: 32px;
  height: 24px;
  padding: 0;
  border: 1px solid #444;
  border-radius: var(--space-xs);
  font-size: 11px;
  cursor: pointer;
  font-family: monospace;
  font-weight: bold;
}

._priorityButtonDisabled_91n37_188 {
  background-color: #2a2a2a;
  color: #888;
}

._priorityButtonLow_91n37_193 {
  background-color: #4a90e2;
  color: var(--white-color);
}

._priorityButtonHigh_91n37_198 {
  background-color: #6ba84f;
  color: var(--white-color);
}

._wrapper_19txv_1 {
  min-width: 500px;
  max-height: 50vh;
}

._header_19txv_6 {
  font-size: 12px;
  color: #aaa;
  margin-bottom: var(--space-sm);
  min-width: 380px;
}

._configKey_19txv_13 {
  min-width: 180px;
  color: #ccc;
  font-size: 11px;
  font-family: monospace;
}

._configInput_19txv_20 {
  flex: 1;
}

._saveButton_19txv_24 {
  font-size: 10px !important;
  padding: var(--space-xs) !important;
}

._warning_19txv_29 {
  margin-top: var(--space-md);
  padding: var(--space-sm);
  background-color: #333;
  font-size: 10px;
  color: #aaa;
  border: 1px solid var(--color-grey);
  border-radius: var(--space-xs);
  font-family: monospace;
}

._timeDisplay_1a4t1_1 {
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: monospace;
  
  font-size: 1.2rem;
  color: var(--yellow-color);
  text-align: center;
  margin: 0;
  
  min-width: 200px;
  white-space: nowrap;
}

._timeText_1a4t1_16 {
  font-weight: 400;
  letter-spacing: 0.5px;
}

/* Responsive design */
@media (max-width: 768px) {
  ._timeDisplay_1a4t1_1 {
    font-size: 12px;
    padding: 6px 12px;
  }
  
  ._timeText_1a4t1_16 {
    gap: 4px;
  }
}

._soundToggle_3oyjw_1 {
  padding: var(--space-sm);
  min-width: auto;
  width: auto;
  display: flex;
  align-items: center;
  justify-content: center;
}

._unifiedHeader_xdit0_1 {
  position: relative;
  top: 0;
  left: 0;
  right: 0;
  height: var(--echoes-header-height);
  display: flex;
  align-items: center;
  padding: 0 var(--space-lg);
  gap: var(--space-lg);
  z-index: 1000;
}

._leftZone_xdit0_14 {
  display: flex;
  align-items: center;
  flex-direction: row;
  justify-content: flex-start;
  flex-shrink: 0;
  min-width: 200px;
}

._centerZone_xdit0_23 {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  justify-content: center;
  align-items: center;
  flex: 1;
  min-width: 0;
}

._centerZone_xdit0_23 ._areaName_xdit0_33 {
  margin: 0;
  font-family: monospace;
  font-size: 1.5rem;
  color: var(--yellow-color);
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.2;
}

._rightZone_xdit0_45 {
  display: flex;
  align-items: center;
  flex-shrink: 0;
  gap: var(--space-xl);
}

._utilityButtons_xdit0_52 {
  margin-left: var(--space-sm);
}

._container_gu22z_1 {
  /* No specific container styles needed - Stack handles layout */
}

._title_gu22z_5 {
  font-weight: bold;
  font-size: 12px;
  font-family: monospace;
  color: var(--white-color);
}

._activeStatus_gu22z_12 {
  color: var(--yellow-color);
  font-size: 11px;
  font-family: monospace;
  font-weight: bold;
}

._queueInfo_gu22z_19 {
  font-size: 10px;
  font-family: monospace;
  color: var(--white-color);
  opacity: 0.8;
}

._sectionTitle_gu22z_26 {
  font-size: 11px;
  font-family: monospace;
  font-weight: bold;
  color: var(--white-color);
  margin-bottom: var(--space-xs);
}

._recipeButton_gu22z_34 {
  text-align: left !important;
  justify-content: flex-start !important;
  font-size: 11px !important;
  font-family: monospace !important;
  padding: var(--space-sm) var(--space-md) !important;
}

._noRecipes_gu22z_42 {
  font-size: 10px;
  font-family: monospace;
  color: var(--white-color);
  opacity: 0.6;
  font-style: italic;
}

/* DraggablePanel handles positioning, so we just need to style the content area */
._draggablePanel_1659r_2 {
  width: 240px;
  max-height: 50vh;
  
  /* Ensure content can scroll if needed */
}

._draggablePanel_1659r_2 .content {
  overflow-y: auto;
  scrollbar-width: none;
}

._draggablePanel_1659r_2 .content::-webkit-scrollbar {
  display: none;
}

._selectedEntityTop_1659r_18 {
  border: 1px solid var(--grey-color);
  border-radius: var(--space-xs);
  padding: var(--space-md);
  margin-bottom: var(--space-sm);
  background-color: var(--background-color);
}

._gameWrapper_136ok_1 {
  width: 100vw;
  height: calc(100vh - var(--echoes-header-height));
  position: relative;
  display: flex;
  flex-direction: column;
}

._gameWrapper_136ok_1 > :first-child {
  flex: 1;
  min-height: 0;
}

._panelContainer_136ok_14 {
  position: fixed;
  top: var(--echoes-header-height);
  left: 0;
  width: 100vw;
  height: calc(100vh - var(--echoes-header-height));
  pointer-events: none;
  z-index: 100;
}

._panelContainer_136ok_14 > * {
  pointer-events: auto;
}

._gameContainer_136ok_28 {
  width: 100vw;
  height: 100vh;
  position: relative;
}

._debugCoordinates_136ok_34 {
  position: fixed;
  bottom: var(--space-md);
  right: var(--space-md);
  background-color: rgba(0, 0, 0, 0.6);
  color: var(--white-color);
  padding: var(--space-xs) var(--space-sm);
  border-radius: var(--space-xs);
  font-size: 11px;
  font-family: monospace;
  pointer-events: none;
  z-index: 1000;
}

._footer_1o2xr_1 {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  background-color: var(--echoes-background);
  border-top: 1px solid var(--echoes-grey);
  padding: var(--space-lg) var(--space-xl);
  z-index: 100;
  backdrop-filter: blur(4px);
}

._content_1o2xr_13 {
  max-width: 1200px;
  margin: 0 auto;
  width: 100%;
}

._userSection_1o2xr_19 {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-lg);
}

._userInfo_1o2xr_27 {
  color: var(--echoes-white);
  font-size: var(--echoes-font-size-base);
}

._userInfo_1o2xr_27 strong {
  color: var(--echoes-yellow);
  font-weight: normal;
}

._status_1o2xr_37 {
  display: flex;
  align-items: center;
}

._container_9wyiw_1 {
  padding: var(--space-4xl);
  max-width: 1200px;
  margin: 0 auto;
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding-bottom: 120px; /* Space for footer */
}

._contentSection_9wyiw_12 {
  max-width: 800px;
  text-align: center;
}

._contentSection_9wyiw_12 h1 {
  font-size: 3rem;
}

._contentSection_9wyiw_12 h2 {
  margin-top: 0;
  margin-bottom: 30px;
}

._contentText_9wyiw_26 {
  display: flex;
  flex-direction: column;
  gap: 30px;
  font-size: 1.2rem;
}

._spriteLine_9wyiw_33 {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: var(--space-md);
  margin: calc(var(--space-xl) * 4) 0;
  flex-wrap: wrap;
}

/* Fade animation classes */
._fadeIn_9wyiw_43 {
  opacity: 1;
  transition: opacity 0.5s ease-in-out;
}

._fadeOut_9wyiw_48 {
  opacity: 0;
  transition: opacity 0.5s ease-in-out;
}

._container_4qzpd_1 {
  position: relative;
  display: inline-block;
}

._label_4qzpd_6 {
  display: block;
  font-size: var(--echoes-font-size-sm);
  color: var(--echoes-white);
  margin-bottom: var(--echoes-space-sm);
  font-family: var(--echoes-font-family);
  font-weight: bold;
}

._trigger_4qzpd_15 {
  all: unset;
  background-color: var(--echoes-background);
  color: var(--echoes-white);
  padding: var(--echoes-space-sm);
  border: 1px solid #333;
  border-radius: var(--echoes-radius-sm);
  font-size: var(--echoes-font-size-sm);
  font-family: var(--echoes-font-family);
  font-weight: bold;
  outline: none;
  width: 64px;
  height: 64px;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: border-color 0.2s ease;
  position: relative;
}

._trigger_4qzpd_15:hover {
  border-color: var(--echoes-green);
}

._trigger_4qzpd_15:focus {
  border-color: var(--echoes-green);
}

._placeholder_4qzpd_45 {
  color: var(--echoes-grey);
  font-size: var(--echoes-font-size-lg);
}

._icon_4qzpd_50 {
  position: absolute;
  bottom: 2px;
  right: 2px;
  font-size: 8px;
  color: var(--echoes-white);
  flex-shrink: 0;
  line-height: 1;
}

._overlay_4qzpd_60 {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 999;
  background: transparent;
}

._dropdown_4qzpd_70 {
  position: absolute;
  top: calc(100% + var(--echoes-space-xs));
  left: 0;
  background-color: var(--echoes-background);
  border: 1px solid #333;
  border-radius: var(--echoes-radius-sm);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
  z-index: 1000;
  max-height: 400px;
  overflow-y: auto;
  min-width: 400px;
  width: max-content;
}

._grid_4qzpd_85 {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: var(--echoes-space-sm);
  padding: var(--echoes-space-md);
}

._gridItem_4qzpd_92 {
  all: unset;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--echoes-space-sm);
  border: 1px solid #333;
  border-radius: var(--echoes-radius-xs);
  cursor: pointer;
  transition: all 0.2s ease;
  background-color: rgba(0, 0, 0, 0.2);
}

._gridItem_4qzpd_92:hover {
  border-color: var(--echoes-green);
  background-color: rgba(74, 157, 113, 0.2);
}

._gridItem_4qzpd_92._selected_4qzpd_110 {
  border-color: var(--echoes-green);
  background-color: rgba(74, 157, 113, 0.3);
  box-shadow: 0 0 8px rgba(74, 157, 113, 0.5);
}

._randomLabel_4qzpd_116 {
  font-size: var(--echoes-font-size-xs);
  color: var(--echoes-white);
  font-family: var(--echoes-font-family);
}

._container_1ss6m_1 {
  position: relative;
  min-height: 100vh;
  
  margin-top: var(--space-4xl);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-2xl);
  min-width: 20vw;
  max-width: 800px;
  margin-left: auto;
  margin-right: auto;
  padding-bottom: 120px; /* Space for footer */
}

._title_1ss6m_17 {
  font-size: 1.8rem;
  font-family: monospace;
  font-weight: bold;
  color: var(--yellow-color);
  text-decoration: none;
}

._existingEntities_1ss6m_25 {
  width: 100%;
  padding: var(--space-lg);
  border: 1px solid var(--grey-color);
  border-radius: var(--space-xs);
  background-color: rgba(0, 0, 0, 0.2);
}

._existingEntities_1ss6m_25 h3 {
  margin-top: 0;
  margin-bottom: var(--space-md);
  font-size: 1.2rem;
  color: var(--green-color);
}

._entitiesList_1ss6m_40 {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-md);
  justify-content: center;
}

._entityCard_1ss6m_47 {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-sm);
  padding: var(--space-md);
  border: 1px solid var(--grey-color);
  border-radius: var(--space-xs);
  background-color: rgba(0, 0, 0, 0.3);
  transition: all 0.2s ease;
}

._entityCard_1ss6m_47:hover {
  border-color: var(--green-color);
  transform: translateY(-2px);
}

._entityInfo_1ss6m_64 {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-xs);
  text-align: center;
}

._entityName_1ss6m_72 {
  font-size: 0.9rem;
  font-family: monospace;
  color: var(--white-color);
  font-weight: 500;
}

._entityPosition_1ss6m_79 {
  font-size: 0.75rem;
  font-family: monospace;
  color: var(--grey-color);
  line-height: 1.4;
}

._entityHealth_1ss6m_86 {
  font-size: 0.8rem;
  font-family: monospace;
  color: var(--green-color);
}

._currentLocation_1ss6m_92 {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

._currentLocation_1ss6m_92 label {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--grey-color);
}

._currentLocation_1ss6m_92 ._locationValue_1ss6m_104 {
  padding: var(--space-sm) var(--space-md);
  background-color: rgba(0, 0, 0, 0.3);
  border: 1px solid var(--grey-color);
  border-radius: var(--space-xs);
  font-family: monospace;
  color: var(--green-color);
  font-size: 1rem;
}

._locationSelect_1ss6m_114 {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

._locationSelect_1ss6m_114 label {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--grey-color);
}

._locationSelect_1ss6m_114 ._selectInput_1ss6m_126 {
  padding: var(--space-sm) var(--space-md);
  background-color: rgba(0, 0, 0, 0.3);
  border: 1px solid var(--grey-color);
  border-radius: var(--space-xs);
  font-family: monospace;
  color: var(--green-color);
  font-size: 1rem;
  cursor: pointer;
  transition: border-color 0.2s ease;
}

._locationSelect_1ss6m_114 ._selectInput_1ss6m_126:hover {
  border-color: var(--green-color);
}

._locationSelect_1ss6m_114 ._selectInput_1ss6m_126:focus {
  outline: none;
  border-color: var(--green-color);
}

._embarkForm_1ss6m_147 {
  padding: var(--space-md);
  border: 1px solid var(--grey-color);
  border-radius: var(--space-xs);
  width: 100%;
}

._formContent_1ss6m_154 {
  flex: 1;
}

._sectionLabel_1ss6m_158 {
  display: block;
  font-size: var(--echoes-font-size-base);
  font-weight: bold;
  color: var(--grey-color);
  margin-bottom: var(--space-md);
}

._charactersList_1ss6m_166 {
  margin-top: var(--space-md);
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-lg);
}

._characterCard_1ss6m_173 {
  border: 1px solid var(--grey-color);
  padding: var(--space-lg);
  border-radius: var(--echoes-radius-sm);
  background-color: rgba(0, 0, 0, 0.2);
  flex: 1;
  min-width: 320px;
}

._characterLayout_1ss6m_182 {
  display: flex;
  gap: var(--space-lg);
  align-items: center;
}

._spriteSection_1ss6m_188 {
  flex-shrink: 0;
}

._nameSection_1ss6m_192 {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

._characterHeader_1ss6m_199 {
  margin-bottom: var(--space-md);
}

._characterTitle_1ss6m_203 {
  font-weight: bold;
  font-size: var(--echoes-font-size-base);
  color: var(--white-color);
}

._nameField_1ss6m_209 {
  display: flex;
  flex-direction: column;
  gap: var(--echoes-space-xs);
}

._fieldLabel_1ss6m_215 {
  font-size: var(--echoes-font-size-xs);
  color: var(--grey-color);
  font-family: var(--echoes-font-family);
  font-weight: bold;
}

._inputWithIcon_1ss6m_222 {
  position: relative;
  display: flex;
  align-items: center;
  width: 100%;
}

._inputWithIcon_1ss6m_222 input {
  padding-right: calc(var(--echoes-space-lg) + 20px);
}

._randomIconButton_1ss6m_233 {
  all: unset;
  position: absolute;
  right: var(--echoes-space-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: var(--echoes-grey);
  transition: color 0.2s ease;
  padding: var(--echoes-space-xs);
  border-radius: var(--echoes-radius-xs);
  z-index: 1;
}

._randomIconButton_1ss6m_233:hover {
  color: var(--echoes-white);
  background-color: rgba(255, 255, 255, 0.1);
}

._randomIconButton_1ss6m_233:active {
  transform: scale(0.95);
}

._helpText_1ss6m_257 {
  font-size: var(--echoes-font-size-sm);
  color: var(--grey-color);
  margin-top: var(--space-sm);
}

._graphContainer_yo2ae_1 {
  position: relative;
  width: 100%;
  height: 600px;
  background: var(--echoes-background);
  border: 1px solid var(--echoes-grey);
  border-radius: var(--echoes-radius-sm);
  overflow: hidden;
}

._graphSvg_yo2ae_11 {
  width: 100%;
  height: 100%;
  background: var(--echoes-background);
}

._connectionLine_yo2ae_17 {
  /* No animations for now */
}

._nodeSquare_yo2ae_21 {
  /* No animations for now */
}

._nodeLabel_yo2ae_25 {
  pointer-events: none;
  user-select: none;
}

._infoPanel_yo2ae_30 {
  position: absolute;
  top: var(--echoes-space-xl);
  right: var(--echoes-space-xl);
  background: var(--echoes-grey);
  border: 1px solid var(--echoes-lightish-grey);
  border-radius: var(--echoes-radius-sm);
  padding: var(--echoes-space-xl);
  min-width: 200px;
  max-width: 300px;
  color: var(--echoes-white);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
  z-index: 10;
}

._infoPanel_yo2ae_30 h3 {
  margin: 0 0 0.75rem 0;
  color: var(--echoes-blue);
  font-size: 1.2rem;
}

._infoPanel_yo2ae_30 ._infoRow_yo2ae_51 {
  margin-bottom: var(--echoes-space-md);
  font-size: 0.9rem;
}

._infoPanel_yo2ae_30 ._infoRow_yo2ae_51 strong {
  color: var(--echoes-lightish-grey);
  margin-right: var(--echoes-space-md);
}

._infoPanel_yo2ae_30 ._connectedMaps_yo2ae_61 {
  margin-top: var(--echoes-space-xl);
  padding-top: var(--echoes-space-xl);
  border-top: 1px solid var(--echoes-lightish-grey);
}

._infoPanel_yo2ae_30 ._connectedMaps_yo2ae_61 strong {
  display: block;
  margin-bottom: var(--echoes-space-md);
  color: var(--echoes-lightish-grey);
}

._infoPanel_yo2ae_30 ._connectedMaps_yo2ae_61 ul {
  margin: 0;
  padding-left: 1.5rem;
  list-style-type: disc;
}

._infoPanel_yo2ae_30 ._connectedMaps_yo2ae_61 ul li {
  margin-bottom: var(--echoes-space-xs);
  color: var(--echoes-blue);
}

._container_21qlo_1 {
  padding: 2rem;
  max-width: 1200px;
  margin: 0 auto;
  min-height: 100vh;
  background: #1a1a1a;
  color: #e0e0e0;
}

._header_21qlo_10 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 1.5rem;
  padding: 1rem;
  background: #2a2a2a;
  border-radius: 4px;
  gap: 1.5rem;
  flex-wrap: wrap;
}

._header_21qlo_10 h1 {
  margin: 0;
  font-size: 1.5rem;
  color: #e0e0e0;
}

._header_21qlo_10 button {
  padding: 0.5rem 1rem;
  background: #4a4a4a;
  color: #e0e0e0;
  border: 1px solid #666;
  border-radius: 4px;
  cursor: pointer;
  font-size: 0.9rem;
  white-space: nowrap;
}

._header_21qlo_10 button:hover {
  background: #5a5a5a;
}

._headerLeft_21qlo_43 {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  flex-wrap: wrap;
}

._headerRight_21qlo_50 {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}

/* Ensure Select and button align properly */
._headerRight_21qlo_50 ._layoutSelector_21qlo_58 {
  display: flex;
  align-items: center;
}

._loading_21qlo_63,
._error_21qlo_64 {
  text-align: center;
  padding: 2rem;
  font-size: 1.2rem;
}

._error_21qlo_64 {
  color: #ff6b6b;
}

._stats_21qlo_74 {
  display: flex;
  gap: 1.5rem;
  align-items: center;
}

._stat_21qlo_74 {
  font-size: 0.9rem;
  color: #aaa;
}

._stat_21qlo_74 strong {
  color: #4a9eff;
  font-size: 1.1rem;
  margin-right: 0.25rem;
}

._graphSection_21qlo_91 {
  margin-top: 0;
}

._layoutSelector_21qlo_58 {
  min-width: 180px;
}

._mapsList_21qlo_99,
._connectionsList_21qlo_100 {
}

._mapsList_21qlo_99 h2,
._connectionsList_21qlo_100 h2 {
  margin-top: 0;
  margin-bottom: 1rem;
  font-size: 1.5rem;
  color: #4a9eff;
}

._mapsGrid_21qlo_111 {
  display: grid;
  gap: 1rem;
  max-height: 600px;
  overflow-y: auto;
}

._mapCard_21qlo_118 {
  padding: 1rem;
  background: #2a2a2a;
  border: 1px solid #444;
  border-radius: 4px;
}

._mapCard_21qlo_118 h3 {
  margin: 0 0 0.5rem 0;
  color: #4a9eff;
}

._mapCard_21qlo_118 ._mapInfo_21qlo_130 {
  font-size: 0.9rem;
  color: #aaa;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

._connections_21qlo_100 {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  max-height: 600px;
  overflow-y: auto;
}

._connection_21qlo_100 {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 1rem;
  background: #2a2a2a;
  border: 1px solid #444;
  border-radius: 4px;
}

._connectionFrom_21qlo_156,
._connectionTo_21qlo_157 {
  flex: 1;
}

._connectionFrom_21qlo_156 strong,
._connectionTo_21qlo_157 strong {
  color: #4a9eff;
}

._connectionFrom_21qlo_156 span,
._connectionTo_21qlo_157 span {
  color: #aaa;
  font-size: 0.9rem;
}

._arrow_21qlo_172 {
  font-size: 1.5rem;
  color: #666;
}

/* CSS Reset */
/* Modern CSS reset for consistent cross-browser behavior */

*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

/* Form elements */
button {
  display: block;
}

input, button, textarea, select {
  font: inherit;
}

/* Lists */
ul[role='list'], 
ol[role='list'] {
  list-style: none;
}

/* Links */
a:not([class]) {
  text-decoration-skip-ink: auto;
}

/* Media elements */
img, picture, svg, video, canvas {
  max-width: 100%;
  height: auto;
  vertical-align: middle;
  font-style: italic;
  background-repeat: no-repeat;
  background-size: cover;
}

/* Document */
body, html {
  height: 100%;
  scroll-behavior: smooth;
}

html:focus-within {
  scroll-behavior: smooth;
}

/* Reduced motion preferences */
@media (prefers-reduced-motion: reduce) {
  html:focus-within {
    scroll-behavior: auto;
  }
  
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
    transition: none;
  }
}

:root {
  --white-color: #ebebeb;
  --lightish-grey-color: #aaa;
  --grey-color: #333;
  --purple-color: #7e2553;
  --blue-color: #5a8bde;
  --red-color: #ec1c24;
  --orange-color: #dc6250;
  --yellow-color: #ffd4a3;
  --green-color: #449d71;
  --background-color: #081b1b;
  
  /* Echo UI tokens - these will be overridden by @echoes/ui */
  --echoes-white: var(--white-color);
  --echoes-lightish-grey: var(--lightish-grey-color);
  --echoes-grey: var(--grey-color);
  --echoes-purple: var(--purple-color);
  --echoes-blue: var(--blue-color);
  --echoes-red: var(--red-color);
  --echoes-orange: var(--orange-color);
  --echoes-yellow: var(--yellow-color);
  --echoes-green: var(--green-color);
  --echoes-background: var(--background-color);
  
  /* Echo spacing tokens */
  --echoes-space-xs: var(--space-xs);
  --echoes-space-sm: var(--space-sm);
  --echoes-space-md: var(--space-md);
  --echoes-space-lg: var(--space-lg);
  --echoes-space-xl: var(--space-xl);
  --echoes-space-2xl: var(--space-2xl);
  --echoes-space-3xl: var(--space-3xl);
  --echoes-space-4xl: var(--space-4xl);
  
  /* Echo typography tokens */
  --echoes-font-family: monospace;
  --echoes-font-size-xs: 10px;
  --echoes-font-size-sm: 11px;
  --echoes-font-size-base: 13px;
  --echoes-font-size-lg: 16px;
  
  /* Echo border radius tokens */
  --echoes-radius-xs: 2px;
  --echoes-radius-sm: 4px;
  --echoes-radius-md: 6px;
  
  /* Spacing scale */
  --space-xs: 2px;
  --space-sm: 4px;
  --space-md: 8px;
  --space-lg: 12px;
  --space-xl: 16px;
  --space-2xl: 20px;
  --space-3xl: 24px;
  --space-4xl: 32px;
  
  /* Legacy padding (keeping for compatibility) */
  --padding: 16px;
}

/* Global styles */
* {
  font-family: monospace;
}

::-webkit-scrollbar {
  width: 0px;
  background: transparent;
}

html {
  height: 100vh;
  width: 100vw;
  background-color: var(--background-color);
  cursor: crosshair;
  font-family: monospace;
  color: var(--white-color);
  font-size: 13px;
}

body {
  width: 100vw;
  height: 100vh;
  margin: 0;
  padding: 0;
  overflow: hidden;
}

/* Typography */
h1 {
  margin-bottom: 0.7em;
}

h2 {
  margin-bottom: 0.5em;
}

label {
  font-size: 1rem;
}

a {
  text-decoration: none;
}

/* Form elements */
textarea,
input {
  padding: var(--space-sm);
  border: none;
  font-size: 1rem;
  outline: none;
  height: 2rem;
  color: var(--white-color);
  background: transparent;
  border: 1px solid var(--white-color);
}

button {
  padding: var(--space-sm);
  border: none;
  border-radius: 0;
  outline: none;
  cursor: pointer;
  font-size: 1rem;
}

/* Decorative elements */
hr {
  font-size: 1.1rem;
  border: none;
  border-top: 3px double var(--white-color);
  color: var(--white-color);
  overflow: visible;
  text-align: center;
  height: 1em;
  margin: 3em 0;
}

hr::after {
  background: var(--background-color);
  content: '§';
  padding: 0 var(--space-sm);
  position: relative;
  top: -0.7em;
}

/* Root element */
#root {
  height: 100vh;
  width: 100vw;
}

/* App layout */
.App {
  display: flex;
  flex-direction: column;
  height: 100vh;
  width: 100vw;
}

/* Utility classes */
.bg-action-color {
  background-color: var(--green-color);
  color: var(--background-color);
}

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

.bold {
  font-weight: 800;
}

.border {
  border: 1px solid var(--white-color);
}

.push-bottom {
  margin-bottom: 2em;
}

.small-text {
  font-size: 0.8rem;
  color: var(--yellow-color);
  margin-top: var(--space-md);
}

.text-xs {
  font-size: 0.7rem;
}

.text-sm {
  font-size: 0.8rem;
}

/* ⚠️ DEPRECATED: These flex utility classes are being phased out in favor of Stack components */
/* TODO: Remove these classes once all components have been migrated to use Stack */

/* Flex display */
.flex {
  display: flex;
}

/* Alignment utilities */
.flex.align-center {
  align-items: center;
}

.flex.justify-center {
  justify-content: center;
}

.flex.space-between {
  justify-content: space-between;
}

/* Direction utilities */
.flex.flex-column {
  flex-direction: column;
}

.flex.flex-wrap {
  flex-wrap: wrap;
}

/* Flex grow utilities */
.flex.flex-1 {
  flex: 1;
}

.flex.flex-2 {
  flex: 2;
}

.flex.row-stretch {
  align-items: stretch;
}

/* Standalone alignment classes (for non-flex containers) */
.align-center {
  align-items: center;
}

.justify-center {
  justify-content: center;
}

.space-between {
  justify-content: space-between;
}

.flex-column {
  flex-direction: column;
}

.flex-wrap {
  flex-wrap: wrap;
}

.flex-1 {
  flex: 1;
}

.flex-2 {
  flex: 2;
}

.row-stretch {
  align-items: stretch;
}

/* Gap utilities (TODO: Replace with CSS variables) */
.gap5 {
  gap: var(--space-sm); /* 5px -> 4px (using design system) */
}

.gap10 {
  gap: var(--space-md); /* 10px -> 8px (using design system) */
}

.gap20 {
  gap: var(--space-2xl); /* 20px (matches design system) */
}

/* CRT Effect */
/* Super neat CRT effect, adapted from: https://aleclownes.com/2017/02/01/crt-display.html */

@keyframes flicker {
  0% { opacity: 0.27861; }
  5% { opacity: 0.34769; }
  10% { opacity: 0.23604; }
  15% { opacity: 0.90626; }
  20% { opacity: 0.18128; }
  25% { opacity: 0.83891; }
  30% { opacity: 0.65583; }
  35% { opacity: 0.67807; }
  40% { opacity: 0.26559; }
  45% { opacity: 0.84693; }
  50% { opacity: 0.96019; }
  55% { opacity: 0.08594; }
  60% { opacity: 0.20313; }
  65% { opacity: 0.71988; }
  70% { opacity: 0.53455; }
  75% { opacity: 0.37288; }
  80% { opacity: 0.71428; }
  85% { opacity: 0.70419; }
  90% { opacity: 0.7003; }
  95% { opacity: 0.36108; }
  100% { opacity: 0.24387; }
}

.crt {
  position: relative;
}

/* Flickering overlay */
.crt::after {
  content: ' ';
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  opacity: 0;
  z-index: 2;
  pointer-events: none;
  animation: flicker 0.15s infinite;
  will-change: contents;
}

/* Scanlines and RGB effect */
.crt::before {
  content: ' ';
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  background: 
    linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.25) 50%),
    linear-gradient(
      90deg,
      rgba(255, 0, 0, 0.06),
      rgba(0, 255, 0, 0.02),
      rgba(0, 0, 255, 0.06)
    );
  z-index: 2;
  background-size: 100% 2px, 3px 100%;
  pointer-events: none;
  will-change: contents;
}

/* Echoes UI Design Tokens */
:root {
  /* Colors */
  --echoes-white: #ffffff;
  --echoes-purple: #a855f7;
  --echoes-blue: #3b82f6;
  --echoes-red: #ef4444;
  --echoes-orange: #f97316;
  --echoes-yellow: #eab308;
  --echoes-green: #4ade80;
  --echoes-grey: #6b7280;
  --echoes-lightish-grey: #9ca3af;
  --echoes-background: #081b1b;
  
  /* Spacing */
  --echoes-space-xs: 2px;
  --echoes-space-sm: 4px;
  --echoes-space-md: 8px;
  --echoes-space-lg: 12px;
  --echoes-space-xl: 16px;
  --echoes-space-2xl: 20px;
  --echoes-space-3xl: 24px;
  --echoes-space-4xl: 32px;
  
  /* Typography */
  --echoes-font-family: monospace;
  --echoes-font-size-xs: 10px;
  --echoes-font-size-sm: 11px;
  --echoes-font-size-base: 13px;
  --echoes-font-size-lg: 16px;
  
  /* Border radius */
  --echoes-radius-xs: 2px;
  --echoes-radius-sm: 4px;
  --echoes-radius-md: 6px;

  --echoes-header-height: 65px;
}
/* Reset and base styles */
* {
  box-sizing: border-box;
}
body {
  font-family: var(--echoes-font-family);
  font-size: var(--echoes-font-size-sm);
  line-height: 1.5;
  color: var(--echoes-white);
  background-color: var(--echoes-background);
}
/* Utility classes */
.text-xs { font-size: var(--echoes-font-size-xs); }
.text-sm { font-size: var(--echoes-font-size-sm); }
.text-base { font-size: var(--echoes-font-size-base); }
.text-lg { font-size: var(--echoes-font-size-lg); }

