@almadar/ui 5.9.5 → 5.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9264,7 +9264,7 @@ function ActionButton({
9264
9264
  disabled: isDisabled,
9265
9265
  onClick,
9266
9266
  className: cn(
9267
- "relative inline-flex items-center gap-1.5 rounded-md border font-medium overflow-hidden transition-colors duration-150",
9267
+ "relative inline-flex items-center gap-1.5 rounded-interactive border font-medium overflow-hidden transition-colors duration-150",
9268
9268
  sizes.button,
9269
9269
  variantStyles7[variant],
9270
9270
  isDisabled && "opacity-60 cursor-not-allowed",
@@ -9307,9 +9307,9 @@ var init_ActionButton = __esm({
9307
9307
  init_cn();
9308
9308
  init_Icon();
9309
9309
  sizeMap = {
9310
- sm: { button: "px-3 py-1.5 text-xs", hotkey: "text-[9px] px-1", icon: "text-xs" },
9311
- md: { button: "px-4 py-2 text-sm", hotkey: "text-xs px-1.5", icon: "text-sm" },
9312
- lg: { button: "px-5 py-2.5 text-base", hotkey: "text-xs px-2", icon: "text-base" }
9310
+ sm: { button: "h-button-sm px-3 text-xs", hotkey: "text-[9px] px-1", icon: "text-xs" },
9311
+ md: { button: "h-button-md px-4 text-sm", hotkey: "text-xs px-1.5", icon: "text-sm" },
9312
+ lg: { button: "h-button-lg px-5 text-base", hotkey: "text-xs px-2", icon: "text-base" }
9313
9313
  };
9314
9314
  variantStyles7 = {
9315
9315
  primary: "bg-primary text-primary-foreground hover:bg-primary-hover border-primary",
@@ -9412,8 +9412,8 @@ var init_ControlButton = __esm({
9412
9412
  };
9413
9413
  shapeMap = {
9414
9414
  circle: "rounded-full",
9415
- rounded: "rounded-xl",
9416
- square: "rounded-md"
9415
+ rounded: "rounded-interactive",
9416
+ square: "rounded-interactive"
9417
9417
  };
9418
9418
  variantMap = {
9419
9419
  primary: "bg-primary text-primary-foreground border-primary hover:bg-primary-hover",
@@ -9574,7 +9574,7 @@ function ActionTile({
9574
9574
  {
9575
9575
  display: "flex",
9576
9576
  className: cn(
9577
- "flex-col items-center gap-1 rounded-lg border-2 transition-all select-none",
9577
+ "flex-col items-center gap-1 rounded-container border-2 transition-all select-none",
9578
9578
  config.px,
9579
9579
  disabled ? "opacity-40 cursor-not-allowed border-border bg-muted" : "cursor-grab active:cursor-grabbing hover:scale-105 hover:shadow-md border-border bg-card",
9580
9580
  className
@@ -10785,12 +10785,12 @@ function IsometricCanvas({
10785
10785
  return /* @__PURE__ */ jsxRuntime.jsx(
10786
10786
  exports.Box,
10787
10787
  {
10788
- className: cn("relative w-full overflow-hidden rounded-lg", className),
10788
+ className: cn("relative w-full overflow-hidden rounded-container", className),
10789
10789
  style: { height: viewportSize.height },
10790
10790
  "data-testid": "game-canvas-empty",
10791
- children: /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "flex items-center justify-center h-full bg-[var(--color-card)] rounded-lg", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.Stack, { direction: "vertical", gap: "md", align: "center", children: [
10791
+ children: /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "flex items-center justify-center h-full bg-[var(--color-card)] rounded-container", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.Stack, { direction: "vertical", gap: "md", align: "center", children: [
10792
10792
  /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "map", size: "xl" }),
10793
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: "text-slate-400", children: t("canvas.emptyMessage") || "No map data loaded" })
10793
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: "text-muted-foreground", children: t("canvas.emptyMessage") || "No map data loaded" })
10794
10794
  ] }) })
10795
10795
  }
10796
10796
  );
@@ -11188,19 +11188,19 @@ function BattleBoard({
11188
11188
  }
11189
11189
  )
11190
11190
  ] }),
11191
- gameResult && (gameOverOverlay ? gameOverOverlay(ctx) : /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "absolute inset-0 z-50 flex items-center justify-center bg-black/70 backdrop-blur-sm rounded-xl", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: "text-center p-8", gap: "lg", children: [
11191
+ gameResult && (gameOverOverlay ? gameOverOverlay(ctx) : /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "absolute inset-0 z-50 flex items-center justify-center bg-background/70 backdrop-blur-sm rounded-container", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: "text-center p-8", gap: "lg", children: [
11192
11192
  /* @__PURE__ */ jsxRuntime.jsx(
11193
11193
  exports.Typography,
11194
11194
  {
11195
11195
  variant: "h2",
11196
11196
  className: cn(
11197
11197
  "text-4xl font-black tracking-widest uppercase",
11198
- gameResult === "victory" ? "text-yellow-400" : "text-red-500"
11198
+ gameResult === "victory" ? "text-warning" : "text-error"
11199
11199
  ),
11200
11200
  children: gameResult === "victory" ? t("battle.victory") : t("battle.defeat")
11201
11201
  }
11202
11202
  ),
11203
- /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "body1", className: "text-gray-300", children: [
11203
+ /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "body1", className: "text-muted-foreground", children: [
11204
11204
  t("battle.turnsPlayed"),
11205
11205
  ": ",
11206
11206
  currentTurn
@@ -16077,7 +16077,7 @@ function BuilderBoard({
16077
16077
  backgroundPosition: "center"
16078
16078
  },
16079
16079
  children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "lg", className: "p-4", children: [
16080
- entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-lg", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 rounded-lg bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
16080
+ entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
16081
16081
  /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", children: [
16082
16082
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h4", weight: "bold", children: entity.title }),
16083
16083
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.description })
@@ -16115,7 +16115,7 @@ function BuilderBoard({
16115
16115
  {
16116
16116
  gap: "sm",
16117
16117
  align: "center",
16118
- className: `p-3 border-2 rounded ${result ? result.correct ? "border-green-500" : "border-red-500" : selectedComponent ? "border-dashed border-foreground cursor-pointer" : "border-border"}`,
16118
+ className: `p-3 border-2 rounded ${result ? result.correct ? "border-success" : "border-error" : selectedComponent ? "border-dashed border-foreground cursor-pointer" : "border-border"}`,
16119
16119
  onClick: () => handlePlaceComponent(slot.id),
16120
16120
  children: [
16121
16121
  /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "none", className: "flex-1", children: [
@@ -16130,7 +16130,7 @@ function BuilderBoard({
16130
16130
  ] }) : null,
16131
16131
  placedComp.label
16132
16132
  ] }),
16133
- result && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: result.correct ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "sm", className: result.correct ? "text-green-600" : "text-red-600" })
16133
+ result && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: result.correct ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "sm", className: result.correct ? "text-success" : "text-error" })
16134
16134
  ] }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: t("builder.empty") })
16135
16135
  ]
16136
16136
  },
@@ -16139,10 +16139,10 @@ function BuilderBoard({
16139
16139
  }) })
16140
16140
  ] }) }),
16141
16141
  submitted && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", align: "center", children: [
16142
- /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: allCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "lg", className: allCorrect ? "text-green-600" : "text-red-600" }),
16142
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: allCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "lg", className: allCorrect ? "text-success" : "text-error" }),
16143
16143
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "bold", children: allCorrect ? entity.successMessage ?? t("builder.success") : entity.failMessage ?? t("builder.incorrect") })
16144
16144
  ] }) }),
16145
- showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-yellow-500", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.hint }) }),
16145
+ showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.hint }) }),
16146
16146
  /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", justify: "center", children: [
16147
16147
  !submitted ? /* @__PURE__ */ jsxRuntime.jsxs(exports.Button, { variant: "primary", onClick: handleSubmit, disabled: !allPlaced, children: [
16148
16148
  /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.Wrench, size: "sm" }),
@@ -17764,7 +17764,7 @@ function CanvasEffectEngine({
17764
17764
  flash && /* @__PURE__ */ jsxRuntime.jsx(
17765
17765
  exports.Box,
17766
17766
  {
17767
- className: "absolute inset-0 z-20 pointer-events-none rounded-lg",
17767
+ className: "absolute inset-0 z-20 pointer-events-none rounded-container",
17768
17768
  style: { backgroundColor: flash.color, opacity: flash.alpha }
17769
17769
  }
17770
17770
  ),
@@ -17832,7 +17832,7 @@ function EmojiEffect({
17832
17832
  /* @__PURE__ */ jsxRuntime.jsx(
17833
17833
  exports.Box,
17834
17834
  {
17835
- className: "absolute rounded-full animate-ping",
17835
+ className: "absolute rounded-pill animate-ping",
17836
17836
  style: {
17837
17837
  width: 48 * intensity,
17838
17838
  height: 48 * intensity,
@@ -19599,7 +19599,7 @@ function ChoiceButton({
19599
19599
  disabled,
19600
19600
  onClick,
19601
19601
  className: cn(
19602
- "w-full text-left px-4 py-2.5 rounded-md border transition-all duration-150",
19602
+ "w-full text-left px-4 py-2.5 rounded-interactive border transition-all duration-150",
19603
19603
  "flex items-center gap-2",
19604
19604
  selected ? "bg-accent/15 border-accent text-foreground" : "bg-muted/40 border-border text-foreground hover:bg-muted hover:border-border",
19605
19605
  disabled && "opacity-40 cursor-not-allowed hover:bg-muted/40 hover:border-border",
@@ -19695,7 +19695,7 @@ function ClassifierBoard({
19695
19695
  backgroundPosition: "center"
19696
19696
  },
19697
19697
  children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "lg", className: "p-4", children: [
19698
- entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-lg", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 rounded-lg bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
19698
+ entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
19699
19699
  /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", children: [
19700
19700
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h4", weight: "bold", children: entity.title }),
19701
19701
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.description })
@@ -19710,7 +19710,7 @@ function ClassifierBoard({
19710
19710
  /* @__PURE__ */ jsxRuntime.jsx(exports.VStack, { gap: "md", children: categories.map((cat) => {
19711
19711
  const catItems = items.filter((item) => assignments[item.id] === cat.id);
19712
19712
  return /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", children: [
19713
- cat.imageUrl && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-16 overflow-hidden rounded-md", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: cat.imageUrl, alt: "", className: "w-full h-full object-cover" }) }),
19713
+ cat.imageUrl && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-16 overflow-hidden rounded-container", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: cat.imageUrl, alt: "", className: "w-full h-full object-cover" }) }),
19714
19714
  /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { justify: "between", align: "center", children: [
19715
19715
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "bold", children: cat.label }),
19716
19716
  /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { size: "sm", children: catItems.length })
@@ -19721,12 +19721,12 @@ function ClassifierBoard({
19721
19721
  exports.Badge,
19722
19722
  {
19723
19723
  size: "sm",
19724
- className: `cursor-pointer ${result ? result.correct ? "border-green-500 bg-green-50 dark:bg-green-950" : "border-red-500 bg-red-50 dark:bg-red-950" : ""}`,
19724
+ className: `cursor-pointer ${result ? result.correct ? "border-success bg-success/10" : "border-error bg-error/10" : ""}`,
19725
19725
  onClick: () => handleUnassign(item.id),
19726
19726
  children: [
19727
19727
  item.iconUrl && /* @__PURE__ */ jsxRuntime.jsx("img", { src: item.iconUrl, alt: "", className: "w-3 h-3 object-contain inline-block" }),
19728
19728
  item.label,
19729
- result && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: result.correct ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "xs", className: result.correct ? "text-green-600" : "text-red-600" })
19729
+ result && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: result.correct ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "xs", className: result.correct ? "text-success" : "text-error" })
19730
19730
  ]
19731
19731
  },
19732
19732
  item.id
@@ -19749,11 +19749,11 @@ function ClassifierBoard({
19749
19749
  ] }) }, cat.id);
19750
19750
  }) }),
19751
19751
  submitted && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", align: "center", children: [
19752
- /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: allCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "lg", className: allCorrect ? "text-green-600" : "text-red-600" }),
19752
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: allCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "lg", className: allCorrect ? "text-success" : "text-error" }),
19753
19753
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "bold", children: allCorrect ? entity.successMessage ?? t("classifier.allCorrect") : `${correctCount}/${items.length} ${t("classifier.correct")}` }),
19754
19754
  !allCorrect && entity.failMessage && /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: "text-muted-foreground", children: entity.failMessage })
19755
19755
  ] }) }),
19756
- showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-yellow-500", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.hint }) }),
19756
+ showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.hint }) }),
19757
19757
  /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", justify: "center", children: [
19758
19758
  !submitted ? /* @__PURE__ */ jsxRuntime.jsxs(exports.Button, { variant: "primary", onClick: handleSubmit, disabled: !allAssigned, children: [
19759
19759
  /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.Send, size: "sm" }),
@@ -20403,10 +20403,10 @@ var init_CombatLog = __esm({
20403
20403
  }
20404
20404
  });
20405
20405
  function getComboIntensity(combo) {
20406
- if (combo >= 10) return "text-red-400 animate-pulse";
20407
- if (combo >= 7) return "text-orange-400";
20408
- if (combo >= 4) return "text-yellow-400";
20409
- return "text-[var(--color-foreground)]";
20406
+ if (combo >= 10) return "text-error animate-pulse";
20407
+ if (combo >= 7) return "text-warning";
20408
+ if (combo >= 4) return "text-warning";
20409
+ return "text-foreground";
20410
20410
  }
20411
20411
  function getComboScale(combo) {
20412
20412
  if (combo >= 10) return "scale-110";
@@ -20427,19 +20427,19 @@ function ComboCounter({
20427
20427
  {
20428
20428
  className: cn(
20429
20429
  "inline-flex flex-col items-center justify-center",
20430
- "rounded-xl bg-[var(--color-card)]/80 border border-gray-600 px-3 py-1.5",
20430
+ "rounded-container bg-card/80 border border-muted px-3 py-1.5",
20431
20431
  "transition-transform duration-200",
20432
20432
  getComboScale(combo),
20433
20433
  className
20434
20434
  ),
20435
20435
  children: [
20436
20436
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-black tabular-nums leading-none", sizes.combo, getComboIntensity(combo)), children: combo }),
20437
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-bold uppercase tracking-wider text-gray-400", sizes.label), children: "combo" }),
20438
- multiplier != null && multiplier > 1 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("font-bold text-amber-400 tabular-nums", sizes.multiplier), children: [
20437
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-bold uppercase tracking-wider text-muted-foreground", sizes.label), children: "combo" }),
20438
+ multiplier != null && multiplier > 1 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("font-bold text-warning tabular-nums", sizes.multiplier), children: [
20439
20439
  "x",
20440
20440
  multiplier.toFixed(1)
20441
20441
  ] }),
20442
- streak != null && streak > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("text-gray-500 tabular-nums", sizes.label), children: [
20442
+ streak != null && streak > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("text-muted-foreground tabular-nums", sizes.label), children: [
20443
20443
  streak,
20444
20444
  " streak"
20445
20445
  ] })
@@ -20854,18 +20854,18 @@ function ItemSlot({
20854
20854
  disabled: !isClickable,
20855
20855
  title: label,
20856
20856
  className: cn(
20857
- "relative flex items-center justify-center rounded-lg border-2",
20858
- "bg-[var(--color-card)]/80 transition-all duration-150",
20857
+ "relative flex items-center justify-center rounded-interactive border-2",
20858
+ "bg-card/80 transition-all duration-150",
20859
20859
  sizeMap5[size],
20860
- empty ? "border-gray-700 bg-[var(--color-card)]/50" : rarityBorderMap[rarity],
20860
+ empty ? "border-border bg-card/50" : rarityBorderMap[rarity],
20861
20861
  !empty && rarityGlowMap[rarity],
20862
- selected && "ring-2 ring-white ring-offset-1 ring-offset-gray-900",
20862
+ selected && "ring-2 ring-foreground ring-offset-1 ring-offset-background",
20863
20863
  isClickable && !empty && "hover:brightness-125 cursor-pointer",
20864
- isClickable && empty && "hover:border-gray-500 cursor-pointer",
20864
+ isClickable && empty && "hover:border-muted cursor-pointer",
20865
20865
  !isClickable && "cursor-default",
20866
20866
  className
20867
20867
  ),
20868
- children: empty ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-600 text-base", children: "+" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
20868
+ children: empty ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground text-base", children: "+" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
20869
20869
  icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: icon }),
20870
20870
  quantity != null && quantity > 1 && /* @__PURE__ */ jsxRuntime.jsx(
20871
20871
  "span",
@@ -20873,7 +20873,7 @@ function ItemSlot({
20873
20873
  className: cn(
20874
20874
  "absolute -bottom-1 -right-1 flex items-center justify-center",
20875
20875
  "min-w-[18px] h-[18px] rounded-full px-1",
20876
- "bg-[var(--color-surface,#374151)] border border-gray-500 text-xs font-bold text-[var(--color-foreground)]"
20876
+ "bg-surface border border-muted text-xs font-bold text-foreground"
20877
20877
  ),
20878
20878
  children: quantity
20879
20879
  }
@@ -20893,18 +20893,18 @@ var init_ItemSlot = __esm({
20893
20893
  lg: "w-18 h-18 text-3xl"
20894
20894
  };
20895
20895
  rarityBorderMap = {
20896
- common: "border-gray-500",
20897
- uncommon: "border-green-500",
20898
- rare: "border-blue-500",
20899
- epic: "border-purple-500",
20900
- legendary: "border-amber-400"
20896
+ common: "border-muted",
20897
+ uncommon: "border-success",
20898
+ rare: "border-info",
20899
+ epic: "border-accent",
20900
+ legendary: "border-warning"
20901
20901
  };
20902
20902
  rarityGlowMap = {
20903
20903
  common: "",
20904
20904
  uncommon: "",
20905
- rare: "shadow-[0_0_6px_rgba(59,130,246,0.3)]",
20906
- epic: "shadow-[0_0_8px_rgba(168,85,247,0.4)]",
20907
- legendary: "shadow-[0_0_10px_rgba(251,191,36,0.5)]"
20905
+ rare: "shadow-sm",
20906
+ epic: "shadow-lg",
20907
+ legendary: "shadow-lg"
20908
20908
  };
20909
20909
  ItemSlot.displayName = "ItemSlot";
20910
20910
  }
@@ -20933,7 +20933,7 @@ function CraftingRecipe({
20933
20933
  exports.Box,
20934
20934
  {
20935
20935
  className: cn(
20936
- "flex flex-wrap items-center gap-3 rounded-lg bg-gray-800/50 border border-gray-700/50 p-3",
20936
+ "flex flex-wrap items-center gap-3 rounded-container bg-muted/50 border border-border/50 p-3",
20937
20937
  className
20938
20938
  ),
20939
20939
  children: [
@@ -20950,10 +20950,10 @@ function CraftingRecipe({
20950
20950
  className: cn(!hasSufficient && "opacity-50")
20951
20951
  }
20952
20952
  ) }),
20953
- index < inputs.length - 1 && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "plus", size: "sm", className: "text-gray-500" })
20953
+ index < inputs.length - 1 && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "plus", size: "sm", className: "text-muted-foreground" })
20954
20954
  ] }, index);
20955
20955
  }) }),
20956
- /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "arrow-right", size: "md", className: "text-gray-400" }),
20956
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "arrow-right", size: "md", className: "text-muted-foreground" }),
20957
20957
  /* @__PURE__ */ jsxRuntime.jsx(
20958
20958
  ItemSlot,
20959
20959
  {
@@ -21041,7 +21041,7 @@ function DPad({
21041
21041
  createButton("up"),
21042
21042
  /* @__PURE__ */ jsxRuntime.jsx("div", {}),
21043
21043
  createButton("left"),
21044
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-6 h-6 rounded-full bg-gray-700 border-2 border-gray-600" }) }),
21044
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-6 h-6 rounded-interactive bg-muted border-2 border-muted-foreground" }) }),
21045
21045
  createButton("right"),
21046
21046
  /* @__PURE__ */ jsxRuntime.jsx("div", {}),
21047
21047
  createButton("down"),
@@ -21103,10 +21103,10 @@ var init_DamageNumber = __esm({
21103
21103
  lg: "text-2xl"
21104
21104
  };
21105
21105
  typeStyles = {
21106
- damage: "text-red-500 font-bold",
21107
- heal: "text-green-500 font-bold",
21108
- crit: "text-orange-400 font-extrabold",
21109
- miss: "text-gray-400 italic"
21106
+ damage: "text-error font-bold",
21107
+ heal: "text-success font-bold",
21108
+ crit: "text-warning font-extrabold",
21109
+ miss: "text-muted-foreground italic"
21110
21110
  };
21111
21111
  floatKeyframes = `
21112
21112
  @keyframes damageFloat {
@@ -25294,7 +25294,7 @@ function HealthBar({
25294
25294
  "div",
25295
25295
  {
25296
25296
  className: cn(
25297
- "relative overflow-hidden rounded-full bg-gray-700",
25297
+ "relative overflow-hidden rounded-full bg-muted",
25298
25298
  sizes.bar,
25299
25299
  "w-24",
25300
25300
  className
@@ -25304,7 +25304,7 @@ function HealthBar({
25304
25304
  {
25305
25305
  className: cn(
25306
25306
  "absolute inset-y-0 left-0 rounded-full",
25307
- percentage > 66 ? "bg-green-500" : percentage > 33 ? "bg-yellow-500" : "bg-red-500",
25307
+ percentage > 66 ? "bg-success" : percentage > 33 ? "bg-warning" : "bg-error",
25308
25308
  animated && "transition-all duration-300"
25309
25309
  ),
25310
25310
  style: { width: `${percentage}%` }
@@ -25326,7 +25326,7 @@ var init_HealthBar = __esm({
25326
25326
  heartIcon = (filled, size) => /* @__PURE__ */ jsxRuntime.jsx(
25327
25327
  "svg",
25328
25328
  {
25329
- className: cn("transition-all duration-200", size, filled ? "text-red-500" : "text-gray-400"),
25329
+ className: cn("transition-all duration-200", size, filled ? "text-error" : "text-muted-foreground"),
25330
25330
  viewBox: "0 0 24 24",
25331
25331
  fill: filled ? "currentColor" : "none",
25332
25332
  stroke: "currentColor",
@@ -25390,7 +25390,7 @@ function ScoreDisplay({
25390
25390
  ),
25391
25391
  children: [
25392
25392
  icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: icon }),
25393
- label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-400", children: label }),
25393
+ label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
25394
25394
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tabular-nums", children: formattedValue })
25395
25395
  ]
25396
25396
  }
@@ -25428,7 +25428,7 @@ function StatBadge({
25428
25428
  "div",
25429
25429
  {
25430
25430
  className: cn(
25431
- "inline-flex items-center gap-2 rounded-lg border backdrop-blur-sm",
25431
+ "inline-flex items-center gap-2 rounded-container border backdrop-blur-sm",
25432
25432
  sizeMap11[size] ?? sizeMap11.md,
25433
25433
  variantMap2[variant] ?? variantMap2.default,
25434
25434
  className
@@ -25577,7 +25577,7 @@ function WaypointMarker({
25577
25577
  "div",
25578
25578
  {
25579
25579
  className: cn(
25580
- "absolute rounded-full border-2 border-blue-400 animate-ping opacity-50",
25580
+ "absolute rounded-full border-2 border-info animate-ping opacity-50",
25581
25581
  sizes.ring
25582
25582
  )
25583
25583
  }
@@ -25586,7 +25586,7 @@ function WaypointMarker({
25586
25586
  "div",
25587
25587
  {
25588
25588
  className: cn(
25589
- "absolute rounded-full border-2 border-blue-400",
25589
+ "absolute rounded-full border-2 border-info",
25590
25590
  sizes.ring
25591
25591
  )
25592
25592
  }
@@ -25597,9 +25597,9 @@ function WaypointMarker({
25597
25597
  className: cn(
25598
25598
  "relative flex items-center justify-center rounded-full transition-all duration-200",
25599
25599
  sizes.dot,
25600
- completed && "bg-green-500 text-white",
25601
- active && !completed && "bg-blue-500 text-white",
25602
- !active && !completed && "bg-gray-500"
25600
+ completed && "bg-success text-foreground",
25601
+ active && !completed && "bg-info text-foreground",
25602
+ !active && !completed && "bg-muted"
25603
25603
  ),
25604
25604
  children: completed ? checkIcon : icon
25605
25605
  }
@@ -25611,7 +25611,7 @@ function WaypointMarker({
25611
25611
  className: cn(
25612
25612
  "text-center whitespace-nowrap",
25613
25613
  sizes.label,
25614
- completed ? "text-green-400" : active ? "text-blue-400" : "text-gray-400"
25614
+ completed ? "text-success" : active ? "text-info" : "text-muted-foreground"
25615
25615
  ),
25616
25616
  children: label
25617
25617
  }
@@ -25643,10 +25643,10 @@ function QuestTracker({
25643
25643
  exports.Box,
25644
25644
  {
25645
25645
  className: cn(
25646
- "flex items-start gap-3 rounded-lg px-3 py-2 transition-colors",
25647
- isActive && !isCompleted && "bg-blue-900/20 border border-blue-800/50",
25648
- isCompleted && "bg-green-900/10 border border-green-800/30 opacity-70",
25649
- !isActive && !isCompleted && "bg-gray-800/30 border border-gray-700/30"
25646
+ "flex items-start gap-3 rounded-container px-3 py-2 transition-colors",
25647
+ isActive && !isCompleted && "bg-info/20 border border-info/50",
25648
+ isCompleted && "bg-success/10 border border-success/30 opacity-70",
25649
+ !isActive && !isCompleted && "bg-muted/30 border border-border/30"
25650
25650
  ),
25651
25651
  children: [
25652
25652
  /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "flex-shrink-0 pt-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -25664,9 +25664,9 @@ function QuestTracker({
25664
25664
  variant: "body2",
25665
25665
  className: cn(
25666
25666
  "font-medium truncate",
25667
- isCompleted && "line-through text-gray-500",
25668
- isActive && !isCompleted && "text-blue-300",
25669
- !isActive && !isCompleted && "text-gray-300"
25667
+ isCompleted && "line-through text-muted-foreground",
25668
+ isActive && !isCompleted && "text-info",
25669
+ !isActive && !isCompleted && "text-muted-foreground"
25670
25670
  ),
25671
25671
  children: quest.title
25672
25672
  }
@@ -25684,7 +25684,7 @@ function QuestTracker({
25684
25684
  exports.Typography,
25685
25685
  {
25686
25686
  variant: "caption",
25687
- className: "text-gray-500 mt-1",
25687
+ className: "text-muted-foreground mt-1",
25688
25688
  children: [
25689
25689
  quest.progress,
25690
25690
  " / ",
@@ -25741,14 +25741,14 @@ function PowerupSlots({
25741
25741
  {
25742
25742
  className: cn(
25743
25743
  "absolute -bottom-1 left-1/2 -translate-x-1/2",
25744
- "rounded px-1 py-px",
25745
- "bg-black/80 border border-gray-600"
25744
+ "rounded-interactive px-1 py-px",
25745
+ "bg-background/80 border border-border"
25746
25746
  ),
25747
25747
  children: /* @__PURE__ */ jsxRuntime.jsx(
25748
25748
  exports.Typography,
25749
25749
  {
25750
25750
  variant: "caption",
25751
- className: "text-[9px] font-mono font-bold text-yellow-300 whitespace-nowrap",
25751
+ className: "text-[9px] font-mono font-bold text-warning whitespace-nowrap",
25752
25752
  children: formatTime(powerup.remainingTime)
25753
25753
  }
25754
25754
  )
@@ -25781,6 +25781,8 @@ function GameCanvas2D({
25781
25781
  height = 600,
25782
25782
  onDraw,
25783
25783
  onTick,
25784
+ tickEvent,
25785
+ drawEvent,
25784
25786
  fps = 60,
25785
25787
  className
25786
25788
  }) {
@@ -25788,10 +25790,17 @@ function GameCanvas2D({
25788
25790
  const rafRef = React80__namespace.useRef(0);
25789
25791
  const frameRef = React80__namespace.useRef(0);
25790
25792
  const lastTimeRef = React80__namespace.useRef(0);
25793
+ const emit = useEmitEvent();
25791
25794
  const onDrawRef = React80__namespace.useRef(onDraw);
25792
25795
  onDrawRef.current = onDraw;
25793
25796
  const onTickRef = React80__namespace.useRef(onTick);
25794
25797
  onTickRef.current = onTick;
25798
+ const tickEventRef = React80__namespace.useRef(tickEvent);
25799
+ tickEventRef.current = tickEvent;
25800
+ const drawEventRef = React80__namespace.useRef(drawEvent);
25801
+ drawEventRef.current = drawEvent;
25802
+ const emitRef = React80__namespace.useRef(emit);
25803
+ emitRef.current = emit;
25795
25804
  React80__namespace.useEffect(() => {
25796
25805
  const canvas = canvasRef.current;
25797
25806
  if (!canvas) return;
@@ -25808,8 +25817,15 @@ function GameCanvas2D({
25808
25817
  if (elapsed >= interval) {
25809
25818
  const dt = elapsed / 1e3;
25810
25819
  lastTimeRef.current = timestamp - elapsed % interval;
25820
+ const frame = frameRef.current;
25811
25821
  onTickRef.current?.(dt);
25812
- onDrawRef.current?.(ctx, frameRef.current);
25822
+ if (tickEventRef.current) {
25823
+ emitRef.current(tickEventRef.current, { dt, frame });
25824
+ }
25825
+ onDrawRef.current?.(ctx, frame);
25826
+ if (drawEventRef.current) {
25827
+ emitRef.current(drawEventRef.current, { frame });
25828
+ }
25813
25829
  frameRef.current += 1;
25814
25830
  }
25815
25831
  rafRef.current = requestAnimationFrame(loop);
@@ -25835,6 +25851,7 @@ var init_GameCanvas2D = __esm({
25835
25851
  "use client";
25836
25852
  init_cn();
25837
25853
  init_Box();
25854
+ init_useEventBus();
25838
25855
  GameCanvas2D.displayName = "GameCanvas2D";
25839
25856
  }
25840
25857
  });
@@ -25853,7 +25870,7 @@ function HealthPanel({
25853
25870
  exports.Box,
25854
25871
  {
25855
25872
  className: cn(
25856
- "rounded-lg bg-[var(--color-card)]/90 border border-gray-700 backdrop-blur-sm",
25873
+ "rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm",
25857
25874
  sizes.padding,
25858
25875
  className
25859
25876
  ),
@@ -25864,7 +25881,7 @@ function HealthPanel({
25864
25881
  {
25865
25882
  variant: "caption",
25866
25883
  weight: "bold",
25867
- className: "text-gray-300 uppercase tracking-wider",
25884
+ className: "text-muted-foreground uppercase tracking-wider",
25868
25885
  children: label
25869
25886
  }
25870
25887
  ),
@@ -25885,7 +25902,7 @@ function HealthPanel({
25885
25902
  as: "span",
25886
25903
  variant: "caption",
25887
25904
  weight: "bold",
25888
- className: "text-blue-400 ml-1",
25905
+ className: "text-info ml-1",
25889
25906
  children: [
25890
25907
  "+",
25891
25908
  shield
@@ -25910,14 +25927,14 @@ function HealthPanel({
25910
25927
  exports.Box,
25911
25928
  {
25912
25929
  className: cn(
25913
- "relative overflow-hidden rounded-full bg-gray-700",
25930
+ "relative overflow-hidden rounded-container bg-muted",
25914
25931
  size === "sm" ? "h-1" : size === "md" ? "h-1.5" : "h-2",
25915
25932
  "w-full"
25916
25933
  ),
25917
25934
  children: /* @__PURE__ */ jsxRuntime.jsx(
25918
25935
  exports.Box,
25919
25936
  {
25920
- className: "absolute inset-y-0 left-0 rounded-full bg-blue-500 transition-all duration-300",
25937
+ className: "absolute inset-y-0 left-0 rounded-container bg-info transition-all duration-300",
25921
25938
  style: { width: `${Math.min(100, shield / max * 100)}%` }
25922
25939
  }
25923
25940
  )
@@ -25976,7 +25993,7 @@ function ScoreBoard({
25976
25993
  exports.Card,
25977
25994
  {
25978
25995
  className: cn(
25979
- "bg-[var(--color-card)]/90 border-gray-700 backdrop-blur-sm",
25996
+ "bg-[var(--color-card)]/90 border-border backdrop-blur-sm",
25980
25997
  className
25981
25998
  ),
25982
25999
  children: /* @__PURE__ */ jsxRuntime.jsx(exports.CardContent, { className: "p-3", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "flex items-center gap-3 flex-wrap", children: [
@@ -26085,8 +26102,8 @@ function TurnIndicator({
26085
26102
  "div",
26086
26103
  {
26087
26104
  className: cn(
26088
- "inline-flex items-center rounded-lg",
26089
- "bg-[var(--color-card)]/80 border border-gray-600 font-medium text-[var(--color-foreground)]",
26105
+ "inline-flex items-center rounded-container",
26106
+ "bg-card/80 border border-muted font-medium text-foreground",
26090
26107
  sizes.wrapper,
26091
26108
  className
26092
26109
  ),
@@ -26094,19 +26111,19 @@ function TurnIndicator({
26094
26111
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-bold tabular-nums", children: [
26095
26112
  "Turn ",
26096
26113
  currentTurn,
26097
- maxTurns != null && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-gray-400", children: [
26114
+ maxTurns != null && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground", children: [
26098
26115
  "/",
26099
26116
  maxTurns
26100
26117
  ] })
26101
26118
  ] }),
26102
26119
  phase && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
26103
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-600", children: "|" }),
26104
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-300", children: phase })
26120
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "|" }),
26121
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: phase })
26105
26122
  ] }),
26106
26123
  activeTeam && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
26107
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-600", children: "|" }),
26108
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("rounded-full bg-green-500/20", sizes.dot) }),
26109
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-green-400", children: activeTeam })
26124
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "|" }),
26125
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("rounded-full bg-success/20", sizes.dot) }),
26126
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-success", children: activeTeam })
26110
26127
  ] })
26111
26128
  ]
26112
26129
  }
@@ -26145,7 +26162,7 @@ function TurnPanel({
26145
26162
  exports.Box,
26146
26163
  {
26147
26164
  className: cn(
26148
- "flex items-center gap-3 rounded-lg bg-[var(--color-card)]/90 border border-gray-700 backdrop-blur-sm px-3 py-2",
26165
+ "flex items-center gap-3 rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm px-3 py-2",
26149
26166
  className
26150
26167
  ),
26151
26168
  children: [
@@ -26197,7 +26214,7 @@ function EnemyPlate({
26197
26214
  exports.Box,
26198
26215
  {
26199
26216
  className: cn(
26200
- "inline-flex flex-col gap-1 rounded-lg bg-[var(--color-card)]/90 border border-gray-700 backdrop-blur-sm px-3 py-1.5",
26217
+ "inline-flex flex-col gap-1 rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm px-3 py-1.5",
26201
26218
  "min-w-[120px]",
26202
26219
  className
26203
26220
  ),
@@ -26291,7 +26308,7 @@ function UnitCommandBar({
26291
26308
  exports.Box,
26292
26309
  {
26293
26310
  className: cn(
26294
- "flex items-center gap-1.5 rounded-lg bg-[var(--color-card)]/90 border border-gray-700 backdrop-blur-sm px-2 py-1.5",
26311
+ "flex items-center gap-1.5 rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm px-2 py-1.5",
26295
26312
  className
26296
26313
  ),
26297
26314
  children: commands.map((command, i) => /* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "flex flex-col items-center gap-0.5", children: [
@@ -26376,8 +26393,8 @@ function GameHud({
26376
26393
  className: cn(
26377
26394
  "relative z-10",
26378
26395
  positionMap[position],
26379
- transparent && "bg-gradient-to-b from-black/50 to-transparent",
26380
- position === "bottom" && "bg-gradient-to-t from-black/50 to-transparent",
26396
+ transparent && "bg-gradient-to-b from-background/50 to-transparent",
26397
+ position === "bottom" && "bg-gradient-to-t from-background/50 to-transparent",
26381
26398
  className
26382
26399
  ),
26383
26400
  children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-4", children: stats.map((stat, i) => /* @__PURE__ */ jsxRuntime.jsx(StatBadge, { ...stat, size }, i)) })
@@ -26535,8 +26552,8 @@ function DialogueBox({
26535
26552
  tabIndex: 0,
26536
26553
  role: "dialog",
26537
26554
  "aria-label": "Dialogue",
26538
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-4 my-4 bg-[var(--color-card)] bg-opacity-95 border-2 border-gray-600 rounded-lg overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex", children: [
26539
- dialogue.portrait && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0 p-4 border-r border-gray-700", children: /* @__PURE__ */ jsxRuntime.jsx(
26555
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-4 my-4 bg-[var(--color-card)] bg-opacity-95 border-2 border-border rounded-container overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex", children: [
26556
+ dialogue.portrait && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0 p-4 border-r border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
26540
26557
  "img",
26541
26558
  {
26542
26559
  src: dialogue.portrait,
@@ -26546,7 +26563,7 @@ function DialogueBox({
26546
26563
  }
26547
26564
  ) }),
26548
26565
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 p-4", children: [
26549
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-yellow-400 font-bold mb-2", children: dialogue.speaker }),
26566
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-warning font-bold mb-2", children: dialogue.speaker }),
26550
26567
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[var(--color-foreground)] text-lg leading-relaxed min-h-[60px]", children: [
26551
26568
  displayedText,
26552
26569
  isTyping && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "animate-pulse", children: "\u258C" })
@@ -26556,9 +26573,9 @@ function DialogueBox({
26556
26573
  {
26557
26574
  type: "button",
26558
26575
  className: cn(
26559
- "block w-full text-left px-4 py-2 rounded transition-colors",
26560
- "hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-yellow-400",
26561
- selectedChoice === index ? "bg-[var(--color-surface,#374151)] text-yellow-400" : "bg-[var(--color-card)] text-[var(--color-foreground)]"
26576
+ "block w-full text-left px-4 py-2 rounded-interactive transition-colors",
26577
+ "hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-warning",
26578
+ selectedChoice === index ? "bg-[var(--color-surface,#374151)] text-warning" : "bg-[var(--color-card)] text-[var(--color-foreground)]"
26562
26579
  ),
26563
26580
  onClick: (e) => {
26564
26581
  e.stopPropagation();
@@ -26566,7 +26583,7 @@ function DialogueBox({
26566
26583
  onChoice?.(choice);
26567
26584
  },
26568
26585
  children: [
26569
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-gray-500 mr-2", children: [
26586
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground mr-2", children: [
26570
26587
  index + 1,
26571
26588
  "."
26572
26589
  ] }),
@@ -26575,7 +26592,7 @@ function DialogueBox({
26575
26592
  },
26576
26593
  index
26577
26594
  )) }),
26578
- !isTyping && !dialogue.choices?.length && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 text-gray-500 text-sm animate-pulse", children: "Press SPACE or click to continue..." })
26595
+ !isTyping && !dialogue.choices?.length && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 text-muted-foreground text-sm animate-pulse", children: "Press SPACE or click to continue..." })
26579
26596
  ] })
26580
26597
  ] }) })
26581
26598
  }
@@ -26678,7 +26695,7 @@ function InventoryPanel({
26678
26695
  /* @__PURE__ */ jsxRuntime.jsx(
26679
26696
  "div",
26680
26697
  {
26681
- className: "grid gap-1 bg-[var(--color-card)] p-2 rounded-lg border border-gray-700",
26698
+ className: "grid gap-1 bg-[var(--color-card)] p-2 rounded-container border border-border",
26682
26699
  style: {
26683
26700
  gridTemplateColumns: `repeat(${safeColumns}, ${slotSize}px)`,
26684
26701
  gridTemplateRows: `repeat(${rows}, ${slotSize}px)`
@@ -26690,8 +26707,8 @@ function InventoryPanel({
26690
26707
  className: cn(
26691
26708
  "relative flex items-center justify-center",
26692
26709
  "bg-[var(--color-card)] border rounded transition-colors",
26693
- "hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-blue-500",
26694
- selectedSlot === index ? "border-yellow-400 bg-[var(--color-surface,#374151)]" : "border-gray-600"
26710
+ "hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-info",
26711
+ selectedSlot === index ? "border-warning bg-[var(--color-surface,#374151)]" : "border-muted"
26695
26712
  ),
26696
26713
  style: { width: slotSize, height: slotSize },
26697
26714
  onClick: () => handleSlotClick(index),
@@ -26710,8 +26727,8 @@ function InventoryPanel({
26710
26727
  className: "w-8 h-8 object-contain",
26711
26728
  style: { imageRendering: "pixelated" }
26712
26729
  }
26713
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-8 h-8 bg-gray-600 rounded flex items-center justify-center text-xs text-gray-300", children: (item.type ?? item.name ?? "I").charAt(0).toUpperCase() }),
26714
- item.quantity > 1 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute bottom-0 right-0 bg-black bg-opacity-70 text-white text-xs px-1 rounded-tl", children: item.quantity })
26730
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-8 h-8 bg-muted rounded-interactive flex items-center justify-center text-xs text-muted-foreground", children: (item.type ?? item.name ?? "I").charAt(0).toUpperCase() }),
26731
+ item.quantity > 1 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute bottom-0 right-0 bg-background/70 text-foreground text-xs px-1 rounded-tl", children: item.quantity })
26715
26732
  ] })
26716
26733
  },
26717
26734
  index
@@ -26721,7 +26738,7 @@ function InventoryPanel({
26721
26738
  showTooltips && hoveredItem && /* @__PURE__ */ jsxRuntime.jsxs(
26722
26739
  "div",
26723
26740
  {
26724
- className: "fixed z-50 bg-[var(--color-card)] border border-gray-600 rounded-lg p-2 shadow-lg pointer-events-none",
26741
+ className: "fixed z-50 bg-[var(--color-card)] border border-border rounded-container p-2 shadow-elevation-card pointer-events-none",
26725
26742
  style: {
26726
26743
  left: tooltipPosition.x,
26727
26744
  top: tooltipPosition.y,
@@ -26729,8 +26746,8 @@ function InventoryPanel({
26729
26746
  },
26730
26747
  children: [
26731
26748
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold text-[var(--color-foreground)]", children: hoveredItem.name || hoveredItem.type }),
26732
- hoveredItem.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-gray-400 mt-1", children: hoveredItem.description }),
26733
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-xs text-gray-500 mt-1", children: [
26749
+ hoveredItem.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground mt-1", children: hoveredItem.description }),
26750
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-xs text-muted-foreground mt-1", children: [
26734
26751
  "Quantity: ",
26735
26752
  hoveredItem.quantity
26736
26753
  ] })
@@ -26808,7 +26825,7 @@ function GameMenu({
26808
26825
  children: title
26809
26826
  }
26810
26827
  ),
26811
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-lg text-gray-400 tracking-widest uppercase", children: subtitle })
26828
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-lg text-muted-foreground tracking-widest uppercase", children: subtitle })
26812
26829
  ] }),
26813
26830
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-4 w-full max-w-md", children: resolvedOptions.map((option, index) => /* @__PURE__ */ jsxRuntime.jsx(
26814
26831
  "button",
@@ -26816,10 +26833,10 @@ function GameMenu({
26816
26833
  onClick: () => handleOptionClick(option),
26817
26834
  disabled: option.disabled,
26818
26835
  className: cn(
26819
- "w-full py-4 px-8 rounded-xl border-2 font-bold text-lg",
26836
+ "w-full py-4 px-8 rounded-container border-2 font-bold text-lg",
26820
26837
  "transition-all duration-200 transform",
26821
26838
  "hover:scale-105 active:scale-95",
26822
- "focus:outline-none focus:ring-4 focus:ring-white/25",
26839
+ "focus:outline-none focus:ring-4 focus:ring-foreground/25",
26823
26840
  variantMap3[option.variant ?? "secondary"] ?? variantMap3.secondary,
26824
26841
  option.disabled && "opacity-50 cursor-not-allowed hover:scale-100"
26825
26842
  ),
@@ -26831,8 +26848,8 @@ function GameMenu({
26831
26848
  index
26832
26849
  )) }),
26833
26850
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 pointer-events-none overflow-hidden", children: [
26834
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-1/4 left-1/4 w-64 h-64 bg-blue-500/10 rounded-full blur-3xl" }),
26835
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-1/4 right-1/4 w-96 h-96 bg-purple-500/10 rounded-full blur-3xl" })
26851
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-1/4 left-1/4 w-64 h-64 bg-info/10 rounded-container blur-3xl" }),
26852
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-1/4 right-1/4 w-96 h-96 bg-accent/10 rounded-container blur-3xl" })
26836
26853
  ] })
26837
26854
  ]
26838
26855
  }
@@ -26845,9 +26862,9 @@ var init_GameMenu = __esm({
26845
26862
  init_cn();
26846
26863
  init_useEventBus();
26847
26864
  variantMap3 = {
26848
- primary: "bg-[var(--color-primary)] hover:bg-blue-500 text-[var(--color-primary-foreground)] border-blue-400 shadow-lg shadow-blue-500/25",
26849
- secondary: "bg-[var(--color-surface,#374151)] hover:bg-gray-600 text-[var(--color-foreground)] border-gray-500",
26850
- ghost: "bg-transparent hover:bg-white/10 text-[var(--color-foreground)] border-white/20"
26865
+ primary: "bg-[var(--color-primary)] hover:bg-info text-[var(--color-primary-foreground)] border-info shadow-lg shadow-info/25",
26866
+ secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
26867
+ ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
26851
26868
  };
26852
26869
  GameMenu.displayName = "GameMenu";
26853
26870
  }
@@ -26915,13 +26932,13 @@ function GameOverScreen({
26915
26932
  children: title
26916
26933
  }
26917
26934
  ),
26918
- message && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xl text-gray-300 mb-8 text-center max-w-md", children: message }),
26919
- isNewHighScore && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-6 px-6 py-2 bg-yellow-500/20 border-2 border-yellow-500 rounded-full animate-pulse", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-yellow-400 font-bold text-lg tracking-wide", children: "\u{1F3C6} NEW HIGH SCORE! \u{1F3C6}" }) }),
26935
+ message && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xl text-muted-foreground mb-8 text-center max-w-md", children: message }),
26936
+ isNewHighScore && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-6 px-6 py-2 bg-warning/20 border-2 border-warning rounded-container animate-pulse", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-warning font-bold text-lg tracking-wide", children: "\u{1F3C6} NEW HIGH SCORE! \u{1F3C6}" }) }),
26920
26937
  stats.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
26921
26938
  "div",
26922
26939
  {
26923
26940
  className: cn(
26924
- "mb-8 p-6 rounded-xl border-2 bg-black/30",
26941
+ "mb-8 p-6 rounded-container border-2 bg-background/30",
26925
26942
  colors.accent
26926
26943
  ),
26927
26944
  children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 md:grid-cols-3 gap-4", children: stats.map((stat, index) => {
@@ -26930,7 +26947,7 @@ function GameOverScreen({
26930
26947
  displayValue = formatTime2(displayValue);
26931
26948
  }
26932
26949
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
26933
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-gray-400 text-sm mb-1", children: stat.label }),
26950
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-sm mb-1", children: stat.label }),
26934
26951
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[var(--color-foreground)] text-2xl font-bold flex items-center justify-center gap-2", children: [
26935
26952
  stat.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { children: stat.icon }),
26936
26953
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tabular-nums", children: displayValue })
@@ -26944,10 +26961,10 @@ function GameOverScreen({
26944
26961
  {
26945
26962
  onClick: () => handleActionClick(action),
26946
26963
  className: cn(
26947
- "px-8 py-4 rounded-xl border-2 font-bold text-lg",
26964
+ "px-8 py-4 rounded-container border-2 font-bold text-lg",
26948
26965
  "transition-all duration-200",
26949
26966
  "hover:scale-105 active:scale-95",
26950
- "focus:outline-none focus:ring-4 focus:ring-white/25",
26967
+ "focus:outline-none focus:ring-4 focus:ring-foreground/25",
26951
26968
  buttonVariants[action.variant ?? "secondary"]
26952
26969
  ),
26953
26970
  children: action.label
@@ -26966,25 +26983,25 @@ var init_GameOverScreen = __esm({
26966
26983
  init_useEventBus();
26967
26984
  variantColors = {
26968
26985
  victory: {
26969
- bg: "from-green-900/90 to-emerald-950/90",
26970
- title: "text-green-400",
26971
- accent: "border-green-500"
26986
+ bg: "from-success/90 to-success/90",
26987
+ title: "text-success",
26988
+ accent: "border-success"
26972
26989
  },
26973
26990
  defeat: {
26974
- bg: "from-red-900/90 to-gray-950/90",
26975
- title: "text-red-400",
26976
- accent: "border-red-500"
26991
+ bg: "from-error/90 to-background/90",
26992
+ title: "text-error",
26993
+ accent: "border-error"
26977
26994
  },
26978
26995
  neutral: {
26979
- bg: "from-gray-900/90 to-gray-950/90",
26980
- title: "text-white",
26981
- accent: "border-gray-500"
26996
+ bg: "from-muted/90 to-background/90",
26997
+ title: "text-foreground",
26998
+ accent: "border-muted"
26982
26999
  }
26983
27000
  };
26984
27001
  buttonVariants = {
26985
- primary: "bg-[var(--color-primary)] hover:bg-blue-500 text-[var(--color-primary-foreground)] border-blue-400",
26986
- secondary: "bg-[var(--color-surface,#374151)] hover:bg-gray-600 text-[var(--color-foreground)] border-gray-500",
26987
- ghost: "bg-transparent hover:bg-white/10 text-[var(--color-foreground)] border-white/20"
27002
+ primary: "bg-[var(--color-primary)] hover:bg-info text-[var(--color-primary-foreground)] border-info",
27003
+ secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
27004
+ ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
26988
27005
  };
26989
27006
  GameOverScreen.displayName = "GameOverScreen";
26990
27007
  }
@@ -27218,7 +27235,7 @@ function PlatformerCanvas({
27218
27235
  {
27219
27236
  ref: canvasRef,
27220
27237
  style: { width: canvasWidth, height: canvasHeight },
27221
- className: cn("block rounded-lg border border-white/10", className),
27238
+ className: cn("block rounded-container border border-border/10", className),
27222
27239
  "data-testid": "platformer-canvas",
27223
27240
  tabIndex: 0
27224
27241
  }
@@ -34885,7 +34902,7 @@ function DebuggerBoard({
34885
34902
  backgroundPosition: "center"
34886
34903
  },
34887
34904
  children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "lg", className: "p-4", children: [
34888
- entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-lg", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 rounded-lg bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
34905
+ entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
34889
34906
  /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", children: [
34890
34907
  /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "xs", align: "center", children: [
34891
34908
  /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.Bug, size: "sm" }),
@@ -34898,11 +34915,11 @@ function DebuggerBoard({
34898
34915
  const isFlagged = flaggedLines.has(line.id);
34899
34916
  let lineStyle = "";
34900
34917
  if (submitted) {
34901
- if (line.isBug && isFlagged) lineStyle = "bg-green-50 dark:bg-green-950";
34902
- else if (line.isBug && !isFlagged) lineStyle = "bg-yellow-50 dark:bg-yellow-950";
34903
- else if (!line.isBug && isFlagged) lineStyle = "bg-red-50 dark:bg-red-950";
34918
+ if (line.isBug && isFlagged) lineStyle = "bg-success/10";
34919
+ else if (line.isBug && !isFlagged) lineStyle = "bg-warning/10";
34920
+ else if (!line.isBug && isFlagged) lineStyle = "bg-error/10";
34904
34921
  } else if (isFlagged) {
34905
- lineStyle = "bg-red-50 dark:bg-red-950";
34922
+ lineStyle = "bg-error/10";
34906
34923
  }
34907
34924
  return /* @__PURE__ */ jsxRuntime.jsxs(
34908
34925
  exports.HStack,
@@ -34915,8 +34932,8 @@ function DebuggerBoard({
34915
34932
  /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-10 flex-shrink-0 flex items-center justify-center border-r border-border text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", children: i + 1 }) }),
34916
34933
  /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "flex-1 px-3 py-1.5 font-mono text-sm whitespace-pre", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: "font-mono text-sm", children: line.content }) }),
34917
34934
  /* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "w-8 flex-shrink-0 flex items-center justify-center", children: [
34918
- isFlagged && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.Bug, size: "xs", className: "text-red-600" }),
34919
- submitted && line.isBug && !isFlagged && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.Bug, size: "xs", className: "text-yellow-600" })
34935
+ isFlagged && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.Bug, size: "xs", className: "text-error" }),
34936
+ submitted && line.isBug && !isFlagged && /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.Bug, size: "xs", className: "text-warning" })
34920
34937
  ] })
34921
34938
  ]
34922
34939
  },
@@ -34931,7 +34948,7 @@ function DebuggerBoard({
34931
34948
  {
34932
34949
  icon: flaggedLines.has(line.id) ? LucideIcons2.CheckCircle : LucideIcons2.XCircle,
34933
34950
  size: "xs",
34934
- className: flaggedLines.has(line.id) ? "text-green-600 mt-0.5" : "text-yellow-600 mt-0.5"
34951
+ className: flaggedLines.has(line.id) ? "text-success mt-0.5" : "text-warning mt-0.5"
34935
34952
  }
34936
34953
  ),
34937
34954
  /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "none", children: [
@@ -34940,7 +34957,7 @@ function DebuggerBoard({
34940
34957
  ] })
34941
34958
  ] }, line.id))
34942
34959
  ] }) }),
34943
- showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-yellow-500", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.hint }) }),
34960
+ showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.hint }) }),
34944
34961
  /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", justify: "center", children: [
34945
34962
  !submitted ? /* @__PURE__ */ jsxRuntime.jsxs(exports.Button, { variant: "primary", onClick: handleSubmit, disabled: flaggedLines.size === 0, children: [
34946
34963
  /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.Send, size: "sm" }),
@@ -35424,12 +35441,12 @@ function DialogueBubble({
35424
35441
  "div",
35425
35442
  {
35426
35443
  className: cn(
35427
- "flex items-start gap-3 rounded-lg bg-black/80 backdrop-blur-sm px-4 py-3 border border-white/10",
35444
+ "flex items-start gap-3 rounded-container bg-background/80 backdrop-blur-sm px-4 py-3 border border-border/10",
35428
35445
  position === "top" ? "rounded-bl-none" : "rounded-tl-none",
35429
35446
  className
35430
35447
  ),
35431
35448
  children: [
35432
- portrait && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0 w-12 h-12 rounded-full overflow-hidden border-2 border-yellow-400/60", children: /* @__PURE__ */ jsxRuntime.jsx(
35449
+ portrait && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0 w-12 h-12 rounded-full overflow-hidden border-2 border-warning/60", children: /* @__PURE__ */ jsxRuntime.jsx(
35433
35450
  "img",
35434
35451
  {
35435
35452
  src: portrait,
@@ -35438,8 +35455,8 @@ function DialogueBubble({
35438
35455
  }
35439
35456
  ) }),
35440
35457
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1 min-w-0", children: [
35441
- speaker && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold text-yellow-400", children: speaker }),
35442
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-[var(--color-foreground)] leading-relaxed", children: text })
35458
+ speaker && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold text-warning", children: speaker }),
35459
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-foreground leading-relaxed", children: text })
35443
35460
  ] })
35444
35461
  ]
35445
35462
  }
@@ -35758,7 +35775,7 @@ function LinearView({
35758
35775
  className
35759
35776
  }) {
35760
35777
  const currentIdx = trait.states.indexOf(trait.currentState);
35761
- return /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: cn("p-3 rounded-lg bg-card border border-border", className), gap: "sm", children: [
35778
+ return /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: cn("p-3 rounded-container bg-card border border-border", className), gap: "sm", children: [
35762
35779
  trait.description && /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: trait.description }),
35763
35780
  /* @__PURE__ */ jsxRuntime.jsx(exports.HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
35764
35781
  const isDone = i < currentIdx;
@@ -35780,10 +35797,10 @@ function LinearView({
35780
35797
  {
35781
35798
  display: "inline-flex",
35782
35799
  className: cn(
35783
- "items-center justify-center rounded-full px-3 py-1 border-2 transition-all",
35800
+ "items-center justify-center rounded-pill px-3 py-1 border-2 transition-all",
35784
35801
  SIZE_CONFIG2[size || "md"].fontSize,
35785
35802
  isDone && "bg-success/20 border-success text-success",
35786
- isCurrent && "bg-primary/20 border-primary text-primary font-bold shadow-md shadow-primary/20",
35803
+ isCurrent && "bg-primary/20 border-primary text-primary font-bold shadow-elevation-card shadow-primary/20",
35787
35804
  !isDone && !isCurrent && "bg-muted border-border text-muted-foreground"
35788
35805
  ),
35789
35806
  children: [
@@ -35805,7 +35822,7 @@ function CompactView({
35805
35822
  const { t } = useTranslate();
35806
35823
  const config = SIZE_CONFIG2[size || "md"];
35807
35824
  const currentTransitions = trait.transitions.filter((t2) => t2.from === trait.currentState);
35808
- return /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: cn("p-3 rounded-lg bg-card border border-border", className), gap: "sm", children: [
35825
+ return /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: cn("p-3 rounded-container bg-card border border-border", className), gap: "sm", children: [
35809
35826
  /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-center justify-between", children: [
35810
35827
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-foreground font-bold", children: trait.name }),
35811
35828
  /* @__PURE__ */ jsxRuntime.jsx(StateIndicator, { state: trait.currentState, size: "sm", stateStyles })
@@ -35841,7 +35858,7 @@ function FullView({
35841
35858
  const { t } = useTranslate();
35842
35859
  const config = SIZE_CONFIG2[size || "md"];
35843
35860
  const currentTransitions = trait.transitions.filter((t2) => t2.from === trait.currentState);
35844
- return /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: cn("p-3 rounded-lg bg-card border border-border", className), gap: "sm", children: [
35861
+ return /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: cn("p-3 rounded-container bg-card border border-border", className), gap: "sm", children: [
35845
35862
  /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-center justify-between", children: [
35846
35863
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-foreground font-bold", children: trait.name }),
35847
35864
  /* @__PURE__ */ jsxRuntime.jsx(StateIndicator, { state: trait.currentState, size: "sm", stateStyles })
@@ -35855,9 +35872,9 @@ function FullView({
35855
35872
  {
35856
35873
  display: "flex",
35857
35874
  className: cn(
35858
- "items-center justify-center rounded-md border-2 transition-all px-2",
35875
+ "items-center justify-center rounded-container border-2 transition-all px-2",
35859
35876
  config.nodeSize,
35860
- isCurrent && "bg-primary/20 border-primary shadow-md shadow-primary/20",
35877
+ isCurrent && "bg-primary/20 border-primary shadow-elevation-card shadow-primary/20",
35861
35878
  !isCurrent && hasOutgoing && "bg-muted border-border hover:border-muted-foreground",
35862
35879
  !isCurrent && !hasOutgoing && "bg-background border-border opacity-60",
35863
35880
  onStateClick && "cursor-pointer"
@@ -36287,7 +36304,7 @@ function EventHandlerBoard({
36287
36304
  backgroundPosition: "center"
36288
36305
  },
36289
36306
  children: [
36290
- entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-lg", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 rounded-lg bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
36307
+ entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
36291
36308
  /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "xs", children: [
36292
36309
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h4", className: "text-foreground", children: entity.title }),
36293
36310
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-muted-foreground", children: entity.description }),
@@ -36302,7 +36319,7 @@ function EventHandlerBoard({
36302
36319
  exports.Box,
36303
36320
  {
36304
36321
  className: cn(
36305
- "p-3 rounded-lg border-2 cursor-pointer transition-all hover:scale-105",
36322
+ "p-3 rounded-container border-2 cursor-pointer transition-all hover:scale-105",
36306
36323
  selectedObjectId === obj.id ? "border-primary bg-primary/10" : "border-border bg-card hover:border-muted-foreground"
36307
36324
  ),
36308
36325
  onClick: () => setSelectedObjectId(obj.id),
@@ -36324,10 +36341,10 @@ function EventHandlerBoard({
36324
36341
  }
36325
36342
  ),
36326
36343
  eventLog.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(EventLog, { entries: eventLog }),
36327
- playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-lg bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("eventHandler.chainComplete") }) }),
36344
+ playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-container bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("eventHandler.chainComplete") }) }),
36328
36345
  playState === "fail" && /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", children: [
36329
- /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-lg bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body1", className: "text-foreground font-medium", children: t(encourageKey) }) }),
36330
- showHint && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-3 rounded-lg bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-start", gap: "xs", children: [
36346
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-container bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body1", className: "text-foreground font-medium", children: t(encourageKey) }) }),
36347
+ showHint && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-3 rounded-container bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-start", gap: "xs", children: [
36331
36348
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-accent font-bold shrink-0", children: "\u{1F4A1} " + t("game.hint") + ":" }),
36332
36349
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-foreground", children: entity.hint })
36333
36350
  ] }) })
@@ -39373,7 +39390,7 @@ function MiniMap({
39373
39390
  "div",
39374
39391
  {
39375
39392
  className: cn(
39376
- "relative inline-block border border-white/20 rounded",
39393
+ "relative inline-block border border-border/20 rounded-container",
39377
39394
  className
39378
39395
  ),
39379
39396
  children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -39593,7 +39610,7 @@ function NegotiatorBoard({
39593
39610
  backgroundPosition: "center"
39594
39611
  },
39595
39612
  children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "lg", className: "p-4", children: [
39596
- entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-lg", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 rounded-lg bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
39613
+ entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
39597
39614
  /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", children: [
39598
39615
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h4", weight: "bold", children: entity.title }),
39599
39616
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.description }),
@@ -39639,7 +39656,7 @@ function NegotiatorBoard({
39639
39656
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: "vs" }),
39640
39657
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", children: getActionLabel(round.opponentAction) }),
39641
39658
  /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.ArrowRight, size: "xs" }),
39642
- /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", weight: "bold", className: "text-green-600", children: [
39659
+ /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", weight: "bold", className: "text-success", children: [
39643
39660
  "+",
39644
39661
  round.playerPayoff
39645
39662
  ] }),
@@ -39650,7 +39667,7 @@ function NegotiatorBoard({
39650
39667
  ] }, round.round))
39651
39668
  ] }) }),
39652
39669
  isComplete && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", align: "center", children: [
39653
- /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.CheckCircle, size: "lg", className: won ? "text-green-600" : "text-red-600" }),
39670
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.CheckCircle, size: "lg", className: won ? "text-success" : "text-error" }),
39654
39671
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "bold", children: won ? entity.successMessage ?? t("negotiator.success") : entity.failMessage ?? t("negotiator.failed") }),
39655
39672
  /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: [
39656
39673
  t("negotiator.finalScore"),
@@ -39660,7 +39677,7 @@ function NegotiatorBoard({
39660
39677
  entity.targetScore
39661
39678
  ] })
39662
39679
  ] }) }),
39663
- showHint && entity.hint && !won && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-yellow-500", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.hint }) }),
39680
+ showHint && entity.hint && !won && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.hint }) }),
39664
39681
  isComplete && !won && /* @__PURE__ */ jsxRuntime.jsx(exports.HStack, { justify: "center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Button, { variant: "primary", onClick: handleReset, children: t("negotiator.playAgain") }) })
39665
39682
  ] })
39666
39683
  }
@@ -40333,17 +40350,17 @@ function ResourceCounter({
40333
40350
  "div",
40334
40351
  {
40335
40352
  className: cn(
40336
- "inline-flex items-center rounded-md",
40337
- "bg-[var(--color-card)]/80 border border-gray-600 font-medium text-[var(--color-foreground)]",
40353
+ "inline-flex items-center rounded-container",
40354
+ "bg-card/80 border border-muted font-medium text-foreground",
40338
40355
  sizes.wrapper,
40339
40356
  className
40340
40357
  ),
40341
40358
  children: [
40342
40359
  icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("flex-shrink-0", sizes.icon), children: icon }),
40343
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-400", children: label }),
40360
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
40344
40361
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("font-bold tabular-nums", color), children: [
40345
40362
  value,
40346
- max != null && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-gray-500", children: [
40363
+ max != null && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground", children: [
40347
40364
  "/",
40348
40365
  max
40349
40366
  ] })
@@ -42290,7 +42307,7 @@ function TraitSlot({
42290
42307
  display: "flex",
42291
42308
  position: "relative",
42292
42309
  className: cn(
42293
- "items-center justify-center rounded-lg transition-all duration-200",
42310
+ "items-center justify-center rounded-container transition-all duration-200 bg-card/50",
42294
42311
  !locked && "cursor-pointer",
42295
42312
  locked && "cursor-not-allowed opacity-50",
42296
42313
  isEmpty && !locked && "border-2 border-dashed border-border hover:border-muted-foreground",
@@ -42306,7 +42323,7 @@ function TraitSlot({
42306
42323
  style: {
42307
42324
  width: config.box,
42308
42325
  height: config.box,
42309
- backgroundColor: catColor?.bg || "rgba(30,41,59,0.5)",
42326
+ backgroundColor: catColor?.bg || void 0,
42310
42327
  borderColor: isDragOver ? void 0 : feedback === "correct" ? "var(--color-success)" : feedback === "wrong" ? "var(--color-error)" : catColor?.border || void 0
42311
42328
  },
42312
42329
  onClick: handleClick,
@@ -42335,7 +42352,7 @@ function TraitSlot({
42335
42352
  exports.Box,
42336
42353
  {
42337
42354
  position: "absolute",
42338
- className: "-top-1.5 -right-1.5 w-4 h-4 bg-error rounded-full flex items-center justify-center cursor-pointer hover:bg-error/80 transition-colors",
42355
+ className: "-top-1.5 -right-1.5 w-4 h-4 bg-error rounded-pill flex items-center justify-center cursor-pointer hover:bg-error/80 transition-colors",
42339
42356
  onClick: handleRemove,
42340
42357
  children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-foreground text-xs leading-none", children: "\xD7" })
42341
42358
  }
@@ -42345,14 +42362,14 @@ function TraitSlot({
42345
42362
  exports.Box,
42346
42363
  {
42347
42364
  position: "absolute",
42348
- className: "-bottom-1 -left-1 w-4 h-4 bg-card rounded-full flex items-center justify-center border border-border",
42365
+ className: "-bottom-1 -left-1 w-4 h-4 bg-card rounded-pill flex items-center justify-center border border-border",
42349
42366
  children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-muted-foreground text-xs", children: slotNumber })
42350
42367
  }
42351
42368
  ),
42352
42369
  showTooltip && isHovered && itemMachine && !isEmpty && equippedItem && /* @__PURE__ */ jsxRuntime.jsxs(
42353
42370
  exports.Box,
42354
42371
  {
42355
- className: "p-3 bg-background border border-border rounded-lg shadow-xl",
42372
+ className: "p-3 bg-background border border-border rounded-container shadow-xl",
42356
42373
  style: {
42357
42374
  ...getTooltipStyle(),
42358
42375
  minWidth: 200,
@@ -42602,12 +42619,12 @@ function SequencerBoard({
42602
42619
  backgroundPosition: "center"
42603
42620
  },
42604
42621
  children: [
42605
- entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-lg", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 rounded-lg bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
42622
+ entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
42606
42623
  /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "xs", children: [
42607
42624
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h4", className: "text-foreground", children: entity.title }),
42608
42625
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-muted-foreground", children: entity.description })
42609
42626
  ] }),
42610
- showHint && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-3 rounded-lg bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-start", gap: "xs", children: [
42627
+ showHint && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-3 rounded-container bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-start", gap: "xs", children: [
42611
42628
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-accent font-bold shrink-0", children: "\u{1F4A1} " + t("game.hint") + ":" }),
42612
42629
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-foreground", children: entity.hint })
42613
42630
  ] }) }),
@@ -42645,8 +42662,8 @@ function SequencerBoard({
42645
42662
  label: t("sequencer.dragActions")
42646
42663
  }
42647
42664
  ),
42648
- hasFeedback && playState === "idle" && attempts > 0 && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-3 rounded-lg bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-foreground", children: t(encourageKey) }) }),
42649
- playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-lg bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("sequencer.levelComplete") }) }),
42665
+ hasFeedback && playState === "idle" && attempts > 0 && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-3 rounded-container bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-foreground", children: t(encourageKey) }) }),
42666
+ playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-container bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("sequencer.levelComplete") }) }),
42650
42667
  /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", children: [
42651
42668
  /* @__PURE__ */ jsxRuntime.jsx(
42652
42669
  exports.Button,
@@ -43322,7 +43339,7 @@ function SimulationCanvas({
43322
43339
  ref: canvasRef,
43323
43340
  width,
43324
43341
  height,
43325
- className: "rounded-md block max-w-full h-auto"
43342
+ className: "rounded-container block max-w-full h-auto"
43326
43343
  }
43327
43344
  ) });
43328
43345
  }
@@ -43530,7 +43547,7 @@ function SimulatorBoard({
43530
43547
  backgroundPosition: "center"
43531
43548
  },
43532
43549
  children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "lg", className: "p-4", children: [
43533
- entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-lg", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 rounded-lg bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
43550
+ entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
43534
43551
  /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", children: [
43535
43552
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h4", weight: "bold", children: entity.title }),
43536
43553
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.description })
@@ -43581,8 +43598,8 @@ function SimulatorBoard({
43581
43598
  entity.outputUnit
43582
43599
  ] }),
43583
43600
  submitted && /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "xs", align: "center", children: [
43584
- /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: isCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "sm", className: isCorrect ? "text-green-600" : "text-red-600" }),
43585
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: isCorrect ? "text-green-600" : "text-red-600", children: isCorrect ? entity.successMessage ?? t("simulator.correct") : entity.failMessage ?? t("simulator.incorrect") })
43601
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: isCorrect ? LucideIcons2.CheckCircle : LucideIcons2.XCircle, size: "sm", className: isCorrect ? "text-success" : "text-error" }),
43602
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: isCorrect ? "text-success" : "text-error", children: isCorrect ? entity.successMessage ?? t("simulator.correct") : entity.failMessage ?? t("simulator.incorrect") })
43586
43603
  ] }),
43587
43604
  /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: [
43588
43605
  t("simulator.target"),
@@ -43595,7 +43612,7 @@ function SimulatorBoard({
43595
43612
  ")"
43596
43613
  ] })
43597
43614
  ] }) }),
43598
- showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-yellow-500", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.hint }) }),
43615
+ showHint && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: entity.hint }) }),
43599
43616
  /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", justify: "center", children: [
43600
43617
  !submitted ? /* @__PURE__ */ jsxRuntime.jsxs(exports.Button, { variant: "primary", onClick: handleSubmit, children: [
43601
43618
  /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.Play, size: "sm" }),
@@ -44107,7 +44124,7 @@ function StateNode2({
44107
44124
  position: "absolute",
44108
44125
  display: "flex",
44109
44126
  className: cn(
44110
- "items-center justify-center rounded-full border-3 transition-all cursor-pointer select-none",
44127
+ "items-center justify-center rounded-pill border-3 transition-all cursor-pointer select-none",
44111
44128
  "min-w-[80px] h-[80px] px-3",
44112
44129
  isCurrent && "bg-primary/20 border-primary shadow-lg shadow-primary/30 scale-110",
44113
44130
  isSelected && !isCurrent && "bg-accent/20 border-accent ring-2 ring-accent/50",
@@ -44420,7 +44437,7 @@ function StateArchitectBoard({
44420
44437
  backgroundPosition: "center"
44421
44438
  },
44422
44439
  children: [
44423
- entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-lg", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 rounded-lg bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
44440
+ entity.headerImage && !headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
44424
44441
  /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "xs", children: [
44425
44442
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h4", className: "text-foreground", children: entity.title }),
44426
44443
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-muted-foreground", children: entity.description }),
@@ -44439,7 +44456,7 @@ function StateArchitectBoard({
44439
44456
  exports.Box,
44440
44457
  {
44441
44458
  position: "relative",
44442
- className: "rounded-lg border border-border bg-background overflow-hidden",
44459
+ className: "rounded-container border border-border bg-background overflow-hidden",
44443
44460
  style: { width: GRAPH_W, height: GRAPH_H },
44444
44461
  children: [
44445
44462
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -44498,7 +44515,7 @@ function StateArchitectBoard({
44498
44515
  children: selectedState ? t("stateArchitect.addTransition", { state: selectedState }) : t("stateArchitect.addTransitionPrompt")
44499
44516
  }
44500
44517
  ) }),
44501
- transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "xs", className: "p-3 rounded-lg bg-muted/50 border border-border", children: [
44518
+ transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "xs", className: "p-3 rounded-container bg-muted/50 border border-border", children: [
44502
44519
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-muted-foreground font-medium", children: t("stateArchitect.transitions", { count: transitions.length }) + ":" }),
44503
44520
  transitions.map((t2) => /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-center text-xs", gap: "xs", children: [
44504
44521
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-foreground", children: t2.from }),
@@ -44532,7 +44549,7 @@ function StateArchitectBoard({
44532
44549
  variables
44533
44550
  }
44534
44551
  ),
44535
- testResults.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: "p-3 rounded-lg bg-card border border-border", gap: "xs", children: [
44552
+ testResults.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { className: "p-3 rounded-container bg-card border border-border", gap: "xs", children: [
44536
44553
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-muted-foreground font-medium", children: t("stateArchitect.testResults") + ":" }),
44537
44554
  testResults.map((r, i) => /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-center text-xs", gap: "xs", children: [
44538
44555
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: r.passed ? "text-success" : "text-error", children: r.passed ? "\u2714" : "\u2717" }),
@@ -44543,10 +44560,10 @@ function StateArchitectBoard({
44543
44560
  entity.showCodeView !== false && /* @__PURE__ */ jsxRuntime.jsx(CodeView, { data: codeData, label: "View Code" })
44544
44561
  ] })
44545
44562
  ] }),
44546
- playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-lg bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("stateArchitect.allPassed") }) }),
44563
+ playState === "success" && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-container bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("stateArchitect.allPassed") }) }),
44547
44564
  playState === "fail" && /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", children: [
44548
- /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-lg bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body1", className: "text-foreground font-medium", children: t(ENCOURAGEMENT_KEYS3[Math.min(attempts - 1, ENCOURAGEMENT_KEYS3.length - 1)] ?? ENCOURAGEMENT_KEYS3[0]) }) }),
44549
- attempts >= 3 && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-3 rounded-lg bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-start", gap: "xs", children: [
44565
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 rounded-container bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body1", className: "text-foreground font-medium", children: t(ENCOURAGEMENT_KEYS3[Math.min(attempts - 1, ENCOURAGEMENT_KEYS3.length - 1)] ?? ENCOURAGEMENT_KEYS3[0]) }) }),
44566
+ attempts >= 3 && entity.hint && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-3 rounded-container bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { className: "items-start", gap: "xs", children: [
44550
44567
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-accent font-bold shrink-0", children: "\u{1F4A1} " + t("game.hint") + ":" }),
44551
44568
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body2", className: "text-foreground", children: entity.hint })
44552
44569
  ] }) })
@@ -44652,7 +44669,7 @@ function StatusEffect({
44652
44669
  "div",
44653
44670
  {
44654
44671
  className: cn(
44655
- "relative flex items-center justify-center rounded border-2",
44672
+ "relative flex items-center justify-center rounded-interactive border-2",
44656
44673
  sizes.container,
44657
44674
  variantStyles9[variant]
44658
44675
  ),
@@ -44663,7 +44680,7 @@ function StatusEffect({
44663
44680
  "span",
44664
44681
  {
44665
44682
  className: cn(
44666
- "absolute bottom-0 left-0 right-0 text-center font-mono font-bold text-white bg-black/60 leading-tight",
44683
+ "absolute bottom-0 left-0 right-0 text-center font-mono font-bold text-foreground bg-background/60 leading-tight",
44667
44684
  sizes.timer
44668
44685
  ),
44669
44686
  children: formatDuration(duration)
@@ -44676,7 +44693,7 @@ function StatusEffect({
44676
44693
  "span",
44677
44694
  {
44678
44695
  className: cn(
44679
- "absolute flex items-center justify-center rounded-full bg-[var(--color-card)] text-[var(--color-foreground)] font-bold leading-none",
44696
+ "absolute flex items-center justify-center rounded-full bg-card text-foreground font-bold leading-none",
44680
44697
  sizes.badge
44681
44698
  ),
44682
44699
  children: stacks
@@ -44695,9 +44712,9 @@ var init_StatusEffect = __esm({
44695
44712
  lg: { container: "w-12 h-12", icon: "text-lg", badge: "text-sm -top-1.5 -right-1.5 w-6 h-6", timer: "text-xs" }
44696
44713
  };
44697
44714
  variantStyles9 = {
44698
- buff: "border-green-500 bg-green-500/20",
44699
- debuff: "border-red-500 bg-red-500/20",
44700
- neutral: "border-gray-500 bg-gray-500/20"
44715
+ buff: "border-success bg-success/20",
44716
+ debuff: "border-error bg-error/20",
44717
+ neutral: "border-muted bg-muted/20"
44701
44718
  };
44702
44719
  StatusEffect.displayName = "StatusEffect";
44703
44720
  }
@@ -45310,12 +45327,12 @@ function TimerDisplay({
45310
45327
  "div",
45311
45328
  {
45312
45329
  className: cn(
45313
- "inline-flex items-center justify-center rounded-lg",
45314
- "bg-[var(--color-card)]/80 border border-gray-600 font-mono font-bold tabular-nums",
45330
+ "inline-flex items-center justify-center rounded-container",
45331
+ "bg-card/80 border border-muted font-mono font-bold tabular-nums",
45315
45332
  sizeMap17[size],
45316
- running && "border-green-500/50",
45317
- isLow && "text-red-400 border-red-500/50 animate-pulse",
45318
- !isLow && "text-[var(--color-foreground)]",
45333
+ running && "border-success/50",
45334
+ isLow && "text-error border-error/50 animate-pulse",
45335
+ !isLow && "text-foreground",
45319
45336
  className
45320
45337
  ),
45321
45338
  children: formatTime3(seconds, format)
@@ -46039,8 +46056,8 @@ function XPBar({
46039
46056
  "span",
46040
46057
  {
46041
46058
  className: cn(
46042
- "flex-shrink-0 rounded-md font-bold",
46043
- "bg-indigo-600 text-white border border-indigo-400",
46059
+ "flex-shrink-0 rounded-interactive font-bold",
46060
+ "bg-accent text-foreground border border-accent",
46044
46061
  sizes.badge
46045
46062
  ),
46046
46063
  children: [
@@ -46054,7 +46071,7 @@ function XPBar({
46054
46071
  "div",
46055
46072
  {
46056
46073
  className: cn(
46057
- "relative w-full overflow-hidden rounded-full bg-gray-700 border border-gray-600",
46074
+ "relative w-full overflow-hidden rounded-full bg-muted border border-muted",
46058
46075
  sizes.bar
46059
46076
  ),
46060
46077
  children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -46062,7 +46079,7 @@ function XPBar({
46062
46079
  {
46063
46080
  className: cn(
46064
46081
  "absolute inset-y-0 left-0 rounded-full",
46065
- "bg-gradient-to-r from-indigo-600 to-purple-500",
46082
+ "bg-gradient-to-r from-accent to-info",
46066
46083
  animated && "transition-all duration-500 ease-out"
46067
46084
  ),
46068
46085
  style: { width: `${percentage}%` }
@@ -46070,7 +46087,7 @@ function XPBar({
46070
46087
  )
46071
46088
  }
46072
46089
  ),
46073
- showLabel && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("text-gray-400 tabular-nums", sizes.text), children: [
46090
+ showLabel && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("text-muted-foreground tabular-nums", sizes.text), children: [
46074
46091
  current,
46075
46092
  " / ",
46076
46093
  max,
@@ -48367,7 +48384,7 @@ function CollapsibleSection({ title, expanded, onToggle, children, className })
48367
48384
  CollapsibleSection.displayName = "CollapsibleSection";
48368
48385
  function EditorSlider({ label, value, min, max, step = 0.1, onChange, className }) {
48369
48386
  return /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", align: "center", className, children: [
48370
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[80px] text-gray-300", children: label }),
48387
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[80px] text-muted-foreground", children: label }),
48371
48388
  /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
48372
48389
  "input",
48373
48390
  {
@@ -48377,22 +48394,22 @@ function EditorSlider({ label, value, min, max, step = 0.1, onChange, className
48377
48394
  step,
48378
48395
  value,
48379
48396
  onChange: (e) => onChange(parseFloat(e.target.value)),
48380
- className: "w-full h-1.5 bg-gray-600 rounded-lg appearance-none cursor-pointer accent-blue-500"
48397
+ className: "w-full h-1.5 bg-muted rounded-interactive appearance-none cursor-pointer accent-primary"
48381
48398
  }
48382
48399
  ) }),
48383
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[40px] text-right text-gray-400", children: typeof step === "number" && step < 1 ? value.toFixed(1) : value })
48400
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[40px] text-right text-muted-foreground", children: typeof step === "number" && step < 1 ? value.toFixed(1) : value })
48384
48401
  ] });
48385
48402
  }
48386
48403
  EditorSlider.displayName = "EditorSlider";
48387
48404
  function EditorSelect({ label, value, options, onChange, className }) {
48388
48405
  return /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", align: "center", className, children: [
48389
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[80px] text-gray-300", children: label }),
48406
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[80px] text-muted-foreground", children: label }),
48390
48407
  /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
48391
48408
  "select",
48392
48409
  {
48393
48410
  value,
48394
48411
  onChange: (e) => onChange(e.target.value),
48395
- className: "w-full px-2 py-1 text-xs bg-gray-700 text-gray-200 border border-gray-600 rounded cursor-pointer",
48412
+ className: "w-full px-2 py-1 text-xs bg-muted text-foreground border border-muted rounded cursor-pointer",
48396
48413
  children: options.map((opt) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: opt.value, children: opt.label }, opt.value))
48397
48414
  }
48398
48415
  ) })
@@ -48401,14 +48418,14 @@ function EditorSelect({ label, value, options, onChange, className }) {
48401
48418
  EditorSelect.displayName = "EditorSelect";
48402
48419
  function EditorCheckbox({ label, checked, onChange, className }) {
48403
48420
  return /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", align: "center", className, children: [
48404
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[80px] text-gray-300", children: label }),
48421
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[80px] text-muted-foreground", children: label }),
48405
48422
  /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { children: /* @__PURE__ */ jsxRuntime.jsx(
48406
48423
  "input",
48407
48424
  {
48408
48425
  type: "checkbox",
48409
48426
  checked,
48410
48427
  onChange: (e) => onChange(e.target.checked),
48411
- className: "w-4 h-4 accent-blue-500 cursor-pointer"
48428
+ className: "w-4 h-4 accent-primary cursor-pointer"
48412
48429
  }
48413
48430
  ) })
48414
48431
  ] });
@@ -48416,7 +48433,7 @@ function EditorCheckbox({ label, checked, onChange, className }) {
48416
48433
  EditorCheckbox.displayName = "EditorCheckbox";
48417
48434
  function EditorTextInput({ label, value, onChange, placeholder, className }) {
48418
48435
  return /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", align: "center", className, children: [
48419
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[80px] text-gray-300", children: label }),
48436
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "min-w-[80px] text-muted-foreground", children: label }),
48420
48437
  /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
48421
48438
  "input",
48422
48439
  {
@@ -48424,30 +48441,30 @@ function EditorTextInput({ label, value, onChange, placeholder, className }) {
48424
48441
  value,
48425
48442
  onChange: (e) => onChange(e.target.value),
48426
48443
  placeholder,
48427
- className: "w-full px-2 py-1 text-xs bg-gray-700 text-gray-200 border border-gray-600 rounded"
48444
+ className: "w-full px-2 py-1 text-xs bg-muted text-foreground border border-muted rounded"
48428
48445
  }
48429
48446
  ) })
48430
48447
  ] });
48431
48448
  }
48432
48449
  EditorTextInput.displayName = "EditorTextInput";
48433
48450
  function StatusBar({ hoveredTile, mode, gridSize, unitCount, featureCount, className }) {
48434
- return /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", align: "center", className: `px-3 py-1.5 bg-gray-800 border-t border-gray-700 ${className ?? ""}`, children: [
48451
+ return /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", align: "center", className: `px-3 py-1.5 bg-background border-t border-border ${className ?? ""}`, children: [
48435
48452
  /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "info", size: "sm", children: mode }),
48436
- /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-gray-400", children: [
48453
+ /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: [
48437
48454
  "Tile: ",
48438
48455
  hoveredTile ? `(${hoveredTile.x}, ${hoveredTile.y})` : "\u2014"
48439
48456
  ] }),
48440
- gridSize && /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-gray-500", children: [
48457
+ gridSize && /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: [
48441
48458
  "Grid: ",
48442
48459
  gridSize.width,
48443
48460
  "x",
48444
48461
  gridSize.height
48445
48462
  ] }),
48446
- unitCount !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-gray-500", children: [
48463
+ unitCount !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: [
48447
48464
  "Units: ",
48448
48465
  unitCount
48449
48466
  ] }),
48450
- featureCount !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-gray-500", children: [
48467
+ featureCount !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: [
48451
48468
  "Features: ",
48452
48469
  featureCount
48453
48470
  ] })
@@ -48459,8 +48476,8 @@ function TerrainPalette({ terrains, selectedTerrain, onSelect, className }) {
48459
48476
  exports.Box,
48460
48477
  {
48461
48478
  onClick: () => onSelect(terrain),
48462
- className: `w-8 h-8 rounded cursor-pointer border-2 transition-all ${selectedTerrain === terrain ? "border-white scale-110 shadow-lg" : "border-gray-600 hover:border-gray-400"}`,
48463
- style: { backgroundColor: TERRAIN_COLORS[terrain] || "#555" },
48479
+ className: `w-8 h-8 rounded cursor-pointer border-2 transition-all ${selectedTerrain === terrain ? "border-foreground scale-110 shadow-lg" : "border-muted hover:border-muted-foreground"}`,
48480
+ style: { backgroundColor: TERRAIN_COLORS[terrain] || "var(--color-muted)" },
48464
48481
  title: terrain
48465
48482
  },
48466
48483
  terrain