._button_g3p6n_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_g3p6n_1:hover:not(:disabled) {
  /* background-color: var(--echoes-blue); */
  border: 1px solid var(--echoes-blue);
}

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

._primary_g3p6n_29 {
  background-color: var(--echoes-blue);
  color: var(--echoes-white);
}

._primary_g3p6n_29:hover:not(:disabled) {
  background-color: color-mix(in srgb, var(--echoes-blue), transparent 10%);
}

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

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

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

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

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

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

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

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

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

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

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

._fullWidth_g3p6n_92 {
  width: 100%;
}

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

._tool_g3p6n_96: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_g3p6n_96._active_g3p6n_71 {
  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_79bj3_1 {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

._label_79bj3_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_79bj3_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_79bj3_16 [data-radix-select-value] {
  min-width: 0;
  flex: 1;
  overflow: hidden;
  display: flex;
  align-items: center;
}

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

._trigger_79bj3_16:hover {
  border-color: var(--echoes-white);
}

._trigger_79bj3_16:focus {
  border-color: var(--echoes-white);
}

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

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

._content_79bj3_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_79bj3_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_79bj3_82:hover {
  background-color: var(--echoes-blue);
  color: var(--echoes-background);
}

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

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

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

._gridViewport_79bj3_115 {
  display: grid !important;
}

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

._gridItem_79bj3_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);
}

._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;
}

._authForm_1xqrw_1 {
  max-width: 400px;
  margin-left: auto;
  margin-right: auto;
  padding: var(--space-xl);
}

._content_1xqrw_8 {
  padding: var(--space-sm);
}

._container_f4sv4_1 {
  padding: var(--space-4xl);
  max-width: 1200px;
  margin: 0 auto;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  position: relative;
}

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

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

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

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

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

._contentSection_f4sv4_13 > h3 {
  margin-bottom: calc(var(--space-xl) * 3);
}

._aboutLink_f4sv4_47 {
  color: var(--echoes-white);
  text-decoration: none;
  font-size: 0.9rem;
  position: absolute;
  bottom: var(--space-xl);
  left: 50%;
  transform: translateX(-50%);
  opacity: 0.7;
  transition: opacity 0.2s ease, color 0.2s ease;
}

._aboutLink_f4sv4_47:hover {
  opacity: 1;
  color: var(--echoes-blue);
}

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

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

._contentSection_17m83_1 {
  display: flex;
  flex-direction: column;
  align-items: center;
  max-width: 1400px;
  width: 100%;
}

._mainLayout_17m83_9 {
  display: flex;
  gap: 2rem;
  width: 100%;
  align-items: flex-start;
}

._sidebar_17m83_16 {
  width: 250px;
  flex-shrink: 0;
  padding: 1.5rem;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 8px;
  background: rgba(0, 0, 0, 0.2);
  position: sticky;
  top: 2rem;
}

._mainContent_17m83_27 {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  min-width: 0;
}

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

._sidebarDivider_17m83_41 {
  border: none;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  margin: var(--space-lg) 0;
}

._galleryContainer_17m83_47 {
  flex: 1;
  overflow-y: auto;
  padding: 1rem;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 8px;
  background: rgba(0, 0, 0, 0.2);
  max-height: calc(100vh - 300px);
}

h1 {
  font-size: 2.5rem;
  margin: 0;
  text-align: center;
}

h2 {
  font-size: 1.5rem;
  margin: 0;
  text-align: center;
  opacity: 0.8;
}

h3 {
  font-size: 1.2rem;
  margin: 0 0 1rem 0;
}

._section_17m83_75 {
  width: 100%;
  padding: 1.5rem;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 8px;
  background: rgba(0, 0, 0, 0.2);
}

._sidebar_17m83_16 h3 {
  margin-top: 0;
}

._playerList_17m83_87 {
  list-style: none;
  padding: 0;
  margin: 0;
}

._playerList_17m83_87 li {
  padding: 0.5rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

._playerList_17m83_87 li:last-child {
  border-bottom: none;
}

._empty_17m83_102 {
  opacity: 0.6;
  font-style: italic;
}

._label_17m83_107 {
  display: block;
  margin-bottom: 0.5rem;
  opacity: 0.8;
}

._status_17m83_113 {
  text-align: center;
  color: #4ade80;
  font-weight: bold;
}

._gallery_17m83_47 {
  display: grid;
  grid-template-columns: repeat(auto-fill, 256px);
  gap: 1.5rem;
  margin-top: 1rem;
  justify-content: center;
}

._cartridgeCard_17m83_127 {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

._cartridgeHeader_17m83_133 {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  padding: 0 0.5rem;
}

._cartridgeInfo_17m83_141 {
  display: flex;
  align-items: baseline;
  gap: 0.75rem;
  flex: 1;
}

._cartridgeImage_17m83_148 {
  position: relative;
  width: 256px;
  height: 256px;
  border: 2px solid rgba(255, 255, 255, 0.2);
  border-radius: 8px;
  overflow: hidden;
  background: rgba(0, 0, 0, 0.3);
  display: flex;
  align-items: center;
  justify-content: center;
}

._cartridgeImage_17m83_148 img {
  width: 256px;
  height: 256px;
  image-rendering: pixelated;
  image-rendering: -moz-crisp-edges;
  image-rendering: crisp-edges;
}

._cartridgeName_17m83_169 {
  margin: 0;
  font-size: 0.85rem;
  font-weight: 600;
  opacity: 0.9;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 180px;
}

._cartridgeSize_17m83_180 {
  margin: 0;
  font-size: 0.85rem;
  opacity: 0.7;
  font-weight: 400;
}

._buttonBank_17m83_187 {
  position: absolute;
  top: 8px;
  right: 8px;
  display: flex;
  gap: 4px;
  z-index: 10;
  opacity: 0;
  transition: opacity 0.15s ease;
}

._cartridgeImage_17m83_148:hover ._buttonBank_17m83_187 {
  opacity: 1;
}

._buttonBank_17m83_187 button {
  padding: 6px;
  min-width: auto;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Connection Orb - floating bottom-right indicator */
._connectionOrb_17m83_211 {
  position: fixed;
  bottom: var(--space-lg);
  right: var(--space-lg);
  z-index: 100;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background-color 0.2s ease, border-color 0.2s ease;
  border: 2px solid transparent;
  padding: 0;
  min-width: auto;
}

._connectionOrb_17m83_211[data-status="connected"] {
  background-color: var(--green-color);
  border-color: var(--green-color);
}

._connectionOrb_17m83_211[data-status="connecting"] {
  background-color: var(--yellow-color);
  border-color: var(--yellow-color);
}

._connectionOrb_17m83_211[data-status="disconnected"] {
  background-color: var(--red-color);
  border-color: var(--red-color);
}

._connectionOrb_17m83_211:hover {
  opacity: 0.85;
}

._spinning_17m83_248 {
  animation: _spin_17m83_248 1s linear infinite;
}

@keyframes _spin_17m83_248 {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

/* Connection Prompt - shown when disconnected */
._connectPrompt_17m83_262 {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1rem;
  padding: 3rem;
  border: 2px dashed rgba(255, 255, 255, 0.3);
  border-radius: 12px;
  background: rgba(0, 0, 0, 0.3);
  text-align: center;
  max-width: 400px;
}

._connectPrompt_17m83_262 h3 {
  margin: 0;
  font-size: 1.5rem;
}

._connectPrompt_17m83_262 p {
  margin: 0;
  opacity: 0.8;
}

._errorText_17m83_285 {
  color: #f87171;
  font-size: 0.85rem;
  padding: 0.5rem 1rem;
  background: rgba(239, 68, 68, 0.1);
  border-radius: 4px;
  border: 1px solid rgba(239, 68, 68, 0.3);
}

/* Lobby Chat */
._chatMessages_17m83_295 {
  max-height: 200px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  margin-bottom: 0.5rem;
  padding: 0.5rem;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 6px;
  background: rgba(0, 0, 0, 0.15);
  font-size: 0.85rem;
}

._chatMessage_17m83_295 {
  line-height: 1.3;
  word-break: break-word;
}

._chatUsername_17m83_314 {
  font-weight: 600;
  opacity: 0.9;
}

._chatText_17m83_319 {
  opacity: 0.8;
}

._chatInputRow_17m83_323 {
  display: flex;
  gap: 0.35rem;
}

._chatInput_17m83_323 {
  flex: 1;
  padding: 0.35rem 0.5rem;
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: 4px;
  background: rgba(0, 0, 0, 0.25);
  color: inherit;
  font-size: 0.85rem;
  outline: none;
}

._chatInput_17m83_323:focus {
  border-color: rgba(255, 255, 255, 0.3);
}

._container_17m83_343 {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  min-height: 100vh;
  padding: 2rem;
}
._userInfoBar_5oxkm_1 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  width: 100%;
  padding: var(--space-md);
  border: 1px solid var(--grey-color);
  border-radius: var(--space-xs);
  background-color: rgba(0, 0, 0, 0.2);
}

._userInfo_5oxkm_1 {
  font-size: var(--font-size-md);
  color: var(--grey-color);
}

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

._existingEntities_1ekag_1 {
  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_1ekag_1 h3 {
  text-align: center;
  margin-top: 0;
  margin-bottom: var(--space-md);
  font-size: 1.2rem;
}

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

._entityCard_1ekag_23 {
  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_1ekag_23:hover {
  border-color: var(--echoes-white);
  /* transform: translateY(-2px); */
}

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

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

._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);
}

._charactersList_4oa2q_1 {
  background-color: rgba(0, 0, 0, 0.2);
  padding: var(--space-lg);
  margin-top: var(--space-md);
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-lg);
}

._characterCard_4oa2q_10 {
  background-color: var(--echoes-background);
  padding: var(--space-lg);
  border-radius: var(--echoes-radius-sm);
  flex: 1;
  /* min-width: 320px; */
}

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

._spriteSection_4oa2q_24 {
  flex-shrink: 0;
}

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

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

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

._inputWithIcon_4oa2q_48 {
  position: relative;
  display: flex;
  align-items: center;
  width: 240px;
}

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

._randomIconButton_4oa2q_59 {
  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_4oa2q_59:hover {
  color: var(--echoes-white);
  background-color: rgba(255, 255, 255, 0.1);
}

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

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

._fieldLabel_ufzy1_7 {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--echoes-white);
}

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

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

._randomIconButton_ufzy1_24 {
  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_ufzy1_24:hover {
  color: var(--echoes-white);
  background-color: rgba(255, 255, 255, 0.1);
}

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

._container_xjowm_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: 50vw;
  max-width: 1200px;
  margin-left: auto;
  margin-right: auto;
}

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

._userInfoBar_xjowm_23 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  width: 100%;
  padding: var(--space-md);
  border: 1px solid var(--grey-color);
  border-radius: var(--space-xs);
  background-color: rgba(0, 0, 0, 0.2);
}

._userInfo_xjowm_23 {
  font-size: var(--font-size-md);
  color: var(--grey-color);
}

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

._existingEntities_xjowm_44 {
  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_xjowm_44 h3 {
  margin-top: 0;
  margin-bottom: var(--space-md);
  font-size: 1.2rem;
  color: var(--green-color);
}

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

._entityCard_xjowm_66 {
  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_xjowm_66:hover {
  border-color: var(--green-color);
  transform: translateY(-2px);
}

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

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

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

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

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

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

._currentLocation_xjowm_111 ._locationValue_xjowm_123 {
  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_xjowm_133 {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

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

._locationSelect_xjowm_133 ._selectInput_xjowm_145 {
  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_xjowm_133 ._selectInput_xjowm_145:hover {
  border-color: var(--green-color);
}

._locationSelect_xjowm_133 ._selectInput_xjowm_145:focus {
  outline: none;
  border-color: var(--green-color);
}

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

._formContent_xjowm_173 {
  flex: 1;
}

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

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

._characterCard_xjowm_192 {
  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_xjowm_201 {
  display: flex;
  gap: var(--space-lg);
  align-items: center;
}

._spriteSection_xjowm_207 {
  flex-shrink: 0;
}

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

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

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

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

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

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

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

._randomIconButton_xjowm_252 {
  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_xjowm_252:hover {
  color: var(--echoes-white);
  background-color: rgba(255, 255, 255, 0.1);
}

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

._helpText_xjowm_276 {
  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;
}

._container_1unlm_1 {
  padding: var(--space-4xl);
  max-width: 1200px;
  margin: 0 auto;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  position: relative;
}

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

._contentSection_1unlm_13 h1 {
  font-size: 3rem;
  margin-bottom: var(--space-xl);
}

._contentText_1unlm_23 {
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
  font-size: 1.2rem;
  margin-bottom: var(--space-2xl);
}

._artCredits_1unlm_31 {
  font-size: 0.75rem;
  opacity: 0.6;
  position: absolute;
  bottom: var(--space-xl);
  left: 50%;
  transform: translateX(-50%);
  text-align: center;
}

._artCredits_1unlm_31 p {
  margin: 0;
}

._creditLink_1unlm_45 {
  color: var(--echoes-white);
  text-decoration: underline;
  transition: color 0.2s ease;
}

._creditLink_1unlm_45:hover {
  color: var(--echoes-blue);
}

._backLink_1unlm_55 {
  color: var(--echoes-white);
  text-decoration: none;
  font-size: 1rem;
  display: inline-block;
  margin-top: var(--space-xl);
  transition: color 0.2s ease;
}

._backLink_1unlm_55:hover {
  color: var(--echoes-blue);
}

/* 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); }

