@almadar/ui 5.9.6 → 5.9.8

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.
package/dist/avl/index.js CHANGED
@@ -11452,7 +11452,7 @@ function HealthBar({
11452
11452
  "div",
11453
11453
  {
11454
11454
  className: cn(
11455
- "relative overflow-hidden rounded-full bg-gray-700",
11455
+ "relative overflow-hidden rounded-full bg-muted",
11456
11456
  sizes.bar,
11457
11457
  "w-24",
11458
11458
  className
@@ -11462,7 +11462,7 @@ function HealthBar({
11462
11462
  {
11463
11463
  className: cn(
11464
11464
  "absolute inset-y-0 left-0 rounded-full",
11465
- percentage > 66 ? "bg-green-500" : percentage > 33 ? "bg-yellow-500" : "bg-red-500",
11465
+ percentage > 66 ? "bg-success" : percentage > 33 ? "bg-warning" : "bg-error",
11466
11466
  animated && "transition-all duration-300"
11467
11467
  ),
11468
11468
  style: { width: `${percentage}%` }
@@ -11484,7 +11484,7 @@ var init_HealthBar = __esm({
11484
11484
  heartIcon = (filled, size) => /* @__PURE__ */ jsx(
11485
11485
  "svg",
11486
11486
  {
11487
- className: cn("transition-all duration-200", size, filled ? "text-red-500" : "text-gray-400"),
11487
+ className: cn("transition-all duration-200", size, filled ? "text-error" : "text-muted-foreground"),
11488
11488
  viewBox: "0 0 24 24",
11489
11489
  fill: filled ? "currentColor" : "none",
11490
11490
  stroke: "currentColor",
@@ -11548,7 +11548,7 @@ function ScoreDisplay({
11548
11548
  ),
11549
11549
  children: [
11550
11550
  icon && /* @__PURE__ */ jsx("span", { className: "flex-shrink-0", children: icon }),
11551
- label && /* @__PURE__ */ jsx("span", { className: "text-gray-400", children: label }),
11551
+ label && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: label }),
11552
11552
  /* @__PURE__ */ jsx("span", { className: "tabular-nums", children: formattedValue })
11553
11553
  ]
11554
11554
  }
@@ -11661,8 +11661,8 @@ var init_ControlButton = __esm({
11661
11661
  };
11662
11662
  shapeMap = {
11663
11663
  circle: "rounded-full",
11664
- rounded: "rounded-xl",
11665
- square: "rounded-md"
11664
+ rounded: "rounded-interactive",
11665
+ square: "rounded-interactive"
11666
11666
  };
11667
11667
  variantMap = {
11668
11668
  primary: "bg-primary text-primary-foreground border-primary hover:bg-primary-hover",
@@ -11830,12 +11830,12 @@ function TimerDisplay({
11830
11830
  "div",
11831
11831
  {
11832
11832
  className: cn(
11833
- "inline-flex items-center justify-center rounded-lg",
11834
- "bg-[var(--color-card)]/80 border border-gray-600 font-mono font-bold tabular-nums",
11833
+ "inline-flex items-center justify-center rounded-container",
11834
+ "bg-card/80 border border-muted font-mono font-bold tabular-nums",
11835
11835
  sizeMap4[size],
11836
- running && "border-green-500/50",
11837
- isLow && "text-red-400 border-red-500/50 animate-pulse",
11838
- !isLow && "text-[var(--color-foreground)]",
11836
+ running && "border-success/50",
11837
+ isLow && "text-error border-error/50 animate-pulse",
11838
+ !isLow && "text-foreground",
11839
11839
  className
11840
11840
  ),
11841
11841
  children: formatTime(seconds, format)
@@ -11868,17 +11868,17 @@ function ResourceCounter({
11868
11868
  "div",
11869
11869
  {
11870
11870
  className: cn(
11871
- "inline-flex items-center rounded-md",
11872
- "bg-[var(--color-card)]/80 border border-gray-600 font-medium text-[var(--color-foreground)]",
11871
+ "inline-flex items-center rounded-container",
11872
+ "bg-card/80 border border-muted font-medium text-foreground",
11873
11873
  sizes.wrapper,
11874
11874
  className
11875
11875
  ),
11876
11876
  children: [
11877
11877
  icon && /* @__PURE__ */ jsx("span", { className: cn("flex-shrink-0", sizes.icon), children: icon }),
11878
- /* @__PURE__ */ jsx("span", { className: "text-gray-400", children: label }),
11878
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: label }),
11879
11879
  /* @__PURE__ */ jsxs("span", { className: cn("font-bold tabular-nums", color), children: [
11880
11880
  value,
11881
- max != null && /* @__PURE__ */ jsxs("span", { className: "text-gray-500", children: [
11881
+ max != null && /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
11882
11882
  "/",
11883
11883
  max
11884
11884
  ] })
@@ -11919,18 +11919,18 @@ function ItemSlot({
11919
11919
  disabled: !isClickable,
11920
11920
  title: label,
11921
11921
  className: cn(
11922
- "relative flex items-center justify-center rounded-lg border-2",
11923
- "bg-[var(--color-card)]/80 transition-all duration-150",
11922
+ "relative flex items-center justify-center rounded-interactive border-2",
11923
+ "bg-card/80 transition-all duration-150",
11924
11924
  sizeMap6[size],
11925
- empty ? "border-gray-700 bg-[var(--color-card)]/50" : rarityBorderMap[rarity],
11925
+ empty ? "border-border bg-card/50" : rarityBorderMap[rarity],
11926
11926
  !empty && rarityGlowMap[rarity],
11927
- selected && "ring-2 ring-white ring-offset-1 ring-offset-gray-900",
11927
+ selected && "ring-2 ring-foreground ring-offset-1 ring-offset-background",
11928
11928
  isClickable && !empty && "hover:brightness-125 cursor-pointer",
11929
- isClickable && empty && "hover:border-gray-500 cursor-pointer",
11929
+ isClickable && empty && "hover:border-muted cursor-pointer",
11930
11930
  !isClickable && "cursor-default",
11931
11931
  className
11932
11932
  ),
11933
- children: empty ? /* @__PURE__ */ jsx("span", { className: "text-gray-600 text-base", children: "+" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
11933
+ children: empty ? /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-base", children: "+" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
11934
11934
  icon && /* @__PURE__ */ jsx("span", { className: "flex-shrink-0", children: icon }),
11935
11935
  quantity != null && quantity > 1 && /* @__PURE__ */ jsx(
11936
11936
  "span",
@@ -11938,7 +11938,7 @@ function ItemSlot({
11938
11938
  className: cn(
11939
11939
  "absolute -bottom-1 -right-1 flex items-center justify-center",
11940
11940
  "min-w-[18px] h-[18px] rounded-full px-1",
11941
- "bg-[var(--color-surface,#374151)] border border-gray-500 text-xs font-bold text-[var(--color-foreground)]"
11941
+ "bg-surface border border-muted text-xs font-bold text-foreground"
11942
11942
  ),
11943
11943
  children: quantity
11944
11944
  }
@@ -11958,18 +11958,18 @@ var init_ItemSlot = __esm({
11958
11958
  lg: "w-18 h-18 text-3xl"
11959
11959
  };
11960
11960
  rarityBorderMap = {
11961
- common: "border-gray-500",
11962
- uncommon: "border-green-500",
11963
- rare: "border-blue-500",
11964
- epic: "border-purple-500",
11965
- legendary: "border-amber-400"
11961
+ common: "border-muted",
11962
+ uncommon: "border-success",
11963
+ rare: "border-info",
11964
+ epic: "border-accent",
11965
+ legendary: "border-warning"
11966
11966
  };
11967
11967
  rarityGlowMap = {
11968
11968
  common: "",
11969
11969
  uncommon: "",
11970
- rare: "shadow-[0_0_6px_rgba(59,130,246,0.3)]",
11971
- epic: "shadow-[0_0_8px_rgba(168,85,247,0.4)]",
11972
- legendary: "shadow-[0_0_10px_rgba(251,191,36,0.5)]"
11970
+ rare: "shadow-sm",
11971
+ epic: "shadow-lg",
11972
+ legendary: "shadow-lg"
11973
11973
  };
11974
11974
  ItemSlot.displayName = "ItemSlot";
11975
11975
  }
@@ -11987,8 +11987,8 @@ function TurnIndicator({
11987
11987
  "div",
11988
11988
  {
11989
11989
  className: cn(
11990
- "inline-flex items-center rounded-lg",
11991
- "bg-[var(--color-card)]/80 border border-gray-600 font-medium text-[var(--color-foreground)]",
11990
+ "inline-flex items-center rounded-container",
11991
+ "bg-card/80 border border-muted font-medium text-foreground",
11992
11992
  sizes.wrapper,
11993
11993
  className
11994
11994
  ),
@@ -11996,19 +11996,19 @@ function TurnIndicator({
11996
11996
  /* @__PURE__ */ jsxs("span", { className: "font-bold tabular-nums", children: [
11997
11997
  "Turn ",
11998
11998
  currentTurn,
11999
- maxTurns != null && /* @__PURE__ */ jsxs("span", { className: "text-gray-400", children: [
11999
+ maxTurns != null && /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
12000
12000
  "/",
12001
12001
  maxTurns
12002
12002
  ] })
12003
12003
  ] }),
12004
12004
  phase && /* @__PURE__ */ jsxs(Fragment, { children: [
12005
- /* @__PURE__ */ jsx("span", { className: "text-gray-600", children: "|" }),
12006
- /* @__PURE__ */ jsx("span", { className: "text-gray-300", children: phase })
12005
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "|" }),
12006
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: phase })
12007
12007
  ] }),
12008
12008
  activeTeam && /* @__PURE__ */ jsxs(Fragment, { children: [
12009
- /* @__PURE__ */ jsx("span", { className: "text-gray-600", children: "|" }),
12010
- /* @__PURE__ */ jsx("span", { className: cn("rounded-full bg-green-500/20", sizes.dot) }),
12011
- /* @__PURE__ */ jsx("span", { className: "text-green-400", children: activeTeam })
12009
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "|" }),
12010
+ /* @__PURE__ */ jsx("span", { className: cn("rounded-full bg-success/20", sizes.dot) }),
12011
+ /* @__PURE__ */ jsx("span", { className: "text-success", children: activeTeam })
12012
12012
  ] })
12013
12013
  ]
12014
12014
  }
@@ -12027,10 +12027,10 @@ var init_TurnIndicator = __esm({
12027
12027
  }
12028
12028
  });
12029
12029
  function getComboIntensity(combo) {
12030
- if (combo >= 10) return "text-red-400 animate-pulse";
12031
- if (combo >= 7) return "text-orange-400";
12032
- if (combo >= 4) return "text-yellow-400";
12033
- return "text-[var(--color-foreground)]";
12030
+ if (combo >= 10) return "text-error animate-pulse";
12031
+ if (combo >= 7) return "text-warning";
12032
+ if (combo >= 4) return "text-warning";
12033
+ return "text-foreground";
12034
12034
  }
12035
12035
  function getComboScale(combo) {
12036
12036
  if (combo >= 10) return "scale-110";
@@ -12051,19 +12051,19 @@ function ComboCounter({
12051
12051
  {
12052
12052
  className: cn(
12053
12053
  "inline-flex flex-col items-center justify-center",
12054
- "rounded-xl bg-[var(--color-card)]/80 border border-gray-600 px-3 py-1.5",
12054
+ "rounded-container bg-card/80 border border-muted px-3 py-1.5",
12055
12055
  "transition-transform duration-200",
12056
12056
  getComboScale(combo),
12057
12057
  className
12058
12058
  ),
12059
12059
  children: [
12060
12060
  /* @__PURE__ */ jsx("span", { className: cn("font-black tabular-nums leading-none", sizes.combo, getComboIntensity(combo)), children: combo }),
12061
- /* @__PURE__ */ jsx("span", { className: cn("font-bold uppercase tracking-wider text-gray-400", sizes.label), children: "combo" }),
12062
- multiplier != null && multiplier > 1 && /* @__PURE__ */ jsxs("span", { className: cn("font-bold text-amber-400 tabular-nums", sizes.multiplier), children: [
12061
+ /* @__PURE__ */ jsx("span", { className: cn("font-bold uppercase tracking-wider text-muted-foreground", sizes.label), children: "combo" }),
12062
+ multiplier != null && multiplier > 1 && /* @__PURE__ */ jsxs("span", { className: cn("font-bold text-warning tabular-nums", sizes.multiplier), children: [
12063
12063
  "x",
12064
12064
  multiplier.toFixed(1)
12065
12065
  ] }),
12066
- streak != null && streak > 0 && /* @__PURE__ */ jsxs("span", { className: cn("text-gray-500 tabular-nums", sizes.label), children: [
12066
+ streak != null && streak > 0 && /* @__PURE__ */ jsxs("span", { className: cn("text-muted-foreground tabular-nums", sizes.label), children: [
12067
12067
  streak,
12068
12068
  " streak"
12069
12069
  ] })
@@ -12099,8 +12099,8 @@ function XPBar({
12099
12099
  "span",
12100
12100
  {
12101
12101
  className: cn(
12102
- "flex-shrink-0 rounded-md font-bold",
12103
- "bg-indigo-600 text-white border border-indigo-400",
12102
+ "flex-shrink-0 rounded-interactive font-bold",
12103
+ "bg-accent text-foreground border border-accent",
12104
12104
  sizes.badge
12105
12105
  ),
12106
12106
  children: [
@@ -12114,7 +12114,7 @@ function XPBar({
12114
12114
  "div",
12115
12115
  {
12116
12116
  className: cn(
12117
- "relative w-full overflow-hidden rounded-full bg-gray-700 border border-gray-600",
12117
+ "relative w-full overflow-hidden rounded-full bg-muted border border-muted",
12118
12118
  sizes.bar
12119
12119
  ),
12120
12120
  children: /* @__PURE__ */ jsx(
@@ -12122,7 +12122,7 @@ function XPBar({
12122
12122
  {
12123
12123
  className: cn(
12124
12124
  "absolute inset-y-0 left-0 rounded-full",
12125
- "bg-gradient-to-r from-indigo-600 to-purple-500",
12125
+ "bg-gradient-to-r from-accent to-info",
12126
12126
  animated && "transition-all duration-500 ease-out"
12127
12127
  ),
12128
12128
  style: { width: `${percentage}%` }
@@ -12130,7 +12130,7 @@ function XPBar({
12130
12130
  )
12131
12131
  }
12132
12132
  ),
12133
- showLabel && /* @__PURE__ */ jsxs("span", { className: cn("text-gray-400 tabular-nums", sizes.text), children: [
12133
+ showLabel && /* @__PURE__ */ jsxs("span", { className: cn("text-muted-foreground tabular-nums", sizes.text), children: [
12134
12134
  current,
12135
12135
  " / ",
12136
12136
  max,
@@ -12166,7 +12166,7 @@ function WaypointMarker({
12166
12166
  "div",
12167
12167
  {
12168
12168
  className: cn(
12169
- "absolute rounded-full border-2 border-blue-400 animate-ping opacity-50",
12169
+ "absolute rounded-full border-2 border-info animate-ping opacity-50",
12170
12170
  sizes.ring
12171
12171
  )
12172
12172
  }
@@ -12175,7 +12175,7 @@ function WaypointMarker({
12175
12175
  "div",
12176
12176
  {
12177
12177
  className: cn(
12178
- "absolute rounded-full border-2 border-blue-400",
12178
+ "absolute rounded-full border-2 border-info",
12179
12179
  sizes.ring
12180
12180
  )
12181
12181
  }
@@ -12186,9 +12186,9 @@ function WaypointMarker({
12186
12186
  className: cn(
12187
12187
  "relative flex items-center justify-center rounded-full transition-all duration-200",
12188
12188
  sizes.dot,
12189
- completed && "bg-green-500 text-white",
12190
- active && !completed && "bg-blue-500 text-white",
12191
- !active && !completed && "bg-gray-500"
12189
+ completed && "bg-success text-foreground",
12190
+ active && !completed && "bg-info text-foreground",
12191
+ !active && !completed && "bg-muted"
12192
12192
  ),
12193
12193
  children: completed ? checkIcon : icon
12194
12194
  }
@@ -12200,7 +12200,7 @@ function WaypointMarker({
12200
12200
  className: cn(
12201
12201
  "text-center whitespace-nowrap",
12202
12202
  sizes.label,
12203
- completed ? "text-green-400" : active ? "text-blue-400" : "text-gray-400"
12203
+ completed ? "text-success" : active ? "text-info" : "text-muted-foreground"
12204
12204
  ),
12205
12205
  children: label
12206
12206
  }
@@ -12241,7 +12241,7 @@ function StatusEffect({
12241
12241
  "div",
12242
12242
  {
12243
12243
  className: cn(
12244
- "relative flex items-center justify-center rounded border-2",
12244
+ "relative flex items-center justify-center rounded-interactive border-2",
12245
12245
  sizes.container,
12246
12246
  variantStyles7[variant]
12247
12247
  ),
@@ -12252,7 +12252,7 @@ function StatusEffect({
12252
12252
  "span",
12253
12253
  {
12254
12254
  className: cn(
12255
- "absolute bottom-0 left-0 right-0 text-center font-mono font-bold text-white bg-black/60 leading-tight",
12255
+ "absolute bottom-0 left-0 right-0 text-center font-mono font-bold text-foreground bg-background/60 leading-tight",
12256
12256
  sizes.timer
12257
12257
  ),
12258
12258
  children: formatDuration(duration)
@@ -12265,7 +12265,7 @@ function StatusEffect({
12265
12265
  "span",
12266
12266
  {
12267
12267
  className: cn(
12268
- "absolute flex items-center justify-center rounded-full bg-[var(--color-card)] text-[var(--color-foreground)] font-bold leading-none",
12268
+ "absolute flex items-center justify-center rounded-full bg-card text-foreground font-bold leading-none",
12269
12269
  sizes.badge
12270
12270
  ),
12271
12271
  children: stacks
@@ -12284,9 +12284,9 @@ var init_StatusEffect = __esm({
12284
12284
  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" }
12285
12285
  };
12286
12286
  variantStyles7 = {
12287
- buff: "border-green-500 bg-green-500/20",
12288
- debuff: "border-red-500 bg-red-500/20",
12289
- neutral: "border-gray-500 bg-gray-500/20"
12287
+ buff: "border-success bg-success/20",
12288
+ debuff: "border-error bg-error/20",
12289
+ neutral: "border-muted bg-muted/20"
12290
12290
  };
12291
12291
  StatusEffect.displayName = "StatusEffect";
12292
12292
  }
@@ -12325,10 +12325,10 @@ var init_DamageNumber = __esm({
12325
12325
  lg: "text-2xl"
12326
12326
  };
12327
12327
  typeStyles = {
12328
- damage: "text-red-500 font-bold",
12329
- heal: "text-green-500 font-bold",
12330
- crit: "text-orange-400 font-extrabold",
12331
- miss: "text-gray-400 italic"
12328
+ damage: "text-error font-bold",
12329
+ heal: "text-success font-bold",
12330
+ crit: "text-warning font-extrabold",
12331
+ miss: "text-muted-foreground italic"
12332
12332
  };
12333
12333
  floatKeyframes = `
12334
12334
  @keyframes damageFloat {
@@ -12351,12 +12351,12 @@ function DialogueBubble({
12351
12351
  "div",
12352
12352
  {
12353
12353
  className: cn(
12354
- "flex items-start gap-3 rounded-lg bg-black/80 backdrop-blur-sm px-4 py-3 border border-white/10",
12354
+ "flex items-start gap-3 rounded-container bg-background/80 backdrop-blur-sm px-4 py-3 border border-border/10",
12355
12355
  position === "top" ? "rounded-bl-none" : "rounded-tl-none",
12356
12356
  className
12357
12357
  ),
12358
12358
  children: [
12359
- portrait && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 w-12 h-12 rounded-full overflow-hidden border-2 border-yellow-400/60", children: /* @__PURE__ */ jsx(
12359
+ portrait && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 w-12 h-12 rounded-full overflow-hidden border-2 border-warning/60", children: /* @__PURE__ */ jsx(
12360
12360
  "img",
12361
12361
  {
12362
12362
  src: portrait,
@@ -12365,8 +12365,8 @@ function DialogueBubble({
12365
12365
  }
12366
12366
  ) }),
12367
12367
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1 min-w-0", children: [
12368
- speaker && /* @__PURE__ */ jsx("span", { className: "text-sm font-bold text-yellow-400", children: speaker }),
12369
- /* @__PURE__ */ jsx("span", { className: "text-sm text-[var(--color-foreground)] leading-relaxed", children: text })
12368
+ speaker && /* @__PURE__ */ jsx("span", { className: "text-sm font-bold text-warning", children: speaker }),
12369
+ /* @__PURE__ */ jsx("span", { className: "text-sm text-foreground leading-relaxed", children: text })
12370
12370
  ] })
12371
12371
  ]
12372
12372
  }
@@ -12393,7 +12393,7 @@ function ChoiceButton({
12393
12393
  disabled,
12394
12394
  onClick,
12395
12395
  className: cn(
12396
- "w-full text-left px-4 py-2.5 rounded-md border transition-all duration-150",
12396
+ "w-full text-left px-4 py-2.5 rounded-interactive border transition-all duration-150",
12397
12397
  "flex items-center gap-2",
12398
12398
  selected ? "bg-accent/15 border-accent text-foreground" : "bg-muted/40 border-border text-foreground hover:bg-muted hover:border-border",
12399
12399
  disabled && "opacity-40 cursor-not-allowed hover:bg-muted/40 hover:border-border",
@@ -12446,7 +12446,7 @@ function ActionButton({
12446
12446
  disabled: isDisabled,
12447
12447
  onClick,
12448
12448
  className: cn(
12449
- "relative inline-flex items-center gap-1.5 rounded-md border font-medium overflow-hidden transition-colors duration-150",
12449
+ "relative inline-flex items-center gap-1.5 rounded-interactive border font-medium overflow-hidden transition-colors duration-150",
12450
12450
  sizes.button,
12451
12451
  variantStyles8[variant],
12452
12452
  isDisabled && "opacity-60 cursor-not-allowed",
@@ -12489,9 +12489,9 @@ var init_ActionButton = __esm({
12489
12489
  init_cn();
12490
12490
  init_Icon();
12491
12491
  sizeMap13 = {
12492
- sm: { button: "px-3 py-1.5 text-xs", hotkey: "text-[9px] px-1", icon: "text-xs" },
12493
- md: { button: "px-4 py-2 text-sm", hotkey: "text-xs px-1.5", icon: "text-sm" },
12494
- lg: { button: "px-5 py-2.5 text-base", hotkey: "text-xs px-2", icon: "text-base" }
12492
+ sm: { button: "h-button-sm px-3 text-xs", hotkey: "text-[9px] px-1", icon: "text-xs" },
12493
+ md: { button: "h-button-md px-4 text-sm", hotkey: "text-xs px-1.5", icon: "text-sm" },
12494
+ lg: { button: "h-button-lg px-5 text-base", hotkey: "text-xs px-2", icon: "text-base" }
12495
12495
  };
12496
12496
  variantStyles8 = {
12497
12497
  primary: "bg-primary text-primary-foreground hover:bg-primary-hover border-primary",
@@ -12571,7 +12571,7 @@ function MiniMap({
12571
12571
  "div",
12572
12572
  {
12573
12573
  className: cn(
12574
- "relative inline-block border border-white/20 rounded",
12574
+ "relative inline-block border border-border/20 rounded-container",
12575
12575
  className
12576
12576
  ),
12577
12577
  children: /* @__PURE__ */ jsx(
@@ -15287,7 +15287,7 @@ function ActionTile({
15287
15287
  {
15288
15288
  display: "flex",
15289
15289
  className: cn(
15290
- "flex-col items-center gap-1 rounded-lg border-2 transition-all select-none",
15290
+ "flex-col items-center gap-1 rounded-container border-2 transition-all select-none",
15291
15291
  config.px,
15292
15292
  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",
15293
15293
  className
@@ -16631,12 +16631,12 @@ function IsometricCanvas({
16631
16631
  return /* @__PURE__ */ jsx(
16632
16632
  Box,
16633
16633
  {
16634
- className: cn("relative w-full overflow-hidden rounded-lg", className),
16634
+ className: cn("relative w-full overflow-hidden rounded-container", className),
16635
16635
  style: { height: viewportSize.height },
16636
16636
  "data-testid": "game-canvas-empty",
16637
- children: /* @__PURE__ */ jsx(Box, { className: "flex items-center justify-center h-full bg-[var(--color-card)] rounded-lg", children: /* @__PURE__ */ jsxs(Stack, { direction: "vertical", gap: "md", align: "center", children: [
16637
+ children: /* @__PURE__ */ jsx(Box, { className: "flex items-center justify-center h-full bg-[var(--color-card)] rounded-container", children: /* @__PURE__ */ jsxs(Stack, { direction: "vertical", gap: "md", align: "center", children: [
16638
16638
  /* @__PURE__ */ jsx(Icon, { name: "map", size: "xl" }),
16639
- /* @__PURE__ */ jsx(Typography, { variant: "body", className: "text-slate-400", children: t("canvas.emptyMessage") || "No map data loaded" })
16639
+ /* @__PURE__ */ jsx(Typography, { variant: "body", className: "text-muted-foreground", children: t("canvas.emptyMessage") || "No map data loaded" })
16640
16640
  ] }) })
16641
16641
  }
16642
16642
  );
@@ -17034,19 +17034,19 @@ function BattleBoard({
17034
17034
  }
17035
17035
  )
17036
17036
  ] }),
17037
- gameResult && (gameOverOverlay ? gameOverOverlay(ctx) : /* @__PURE__ */ jsx(Box, { className: "absolute inset-0 z-50 flex items-center justify-center bg-black/70 backdrop-blur-sm rounded-xl", children: /* @__PURE__ */ jsxs(VStack, { className: "text-center p-8", gap: "lg", children: [
17037
+ gameResult && (gameOverOverlay ? gameOverOverlay(ctx) : /* @__PURE__ */ jsx(Box, { className: "absolute inset-0 z-50 flex items-center justify-center bg-background/70 backdrop-blur-sm rounded-container", children: /* @__PURE__ */ jsxs(VStack, { className: "text-center p-8", gap: "lg", children: [
17038
17038
  /* @__PURE__ */ jsx(
17039
17039
  Typography,
17040
17040
  {
17041
17041
  variant: "h2",
17042
17042
  className: cn(
17043
17043
  "text-4xl font-black tracking-widest uppercase",
17044
- gameResult === "victory" ? "text-yellow-400" : "text-red-500"
17044
+ gameResult === "victory" ? "text-warning" : "text-error"
17045
17045
  ),
17046
17046
  children: gameResult === "victory" ? t("battle.victory") : t("battle.defeat")
17047
17047
  }
17048
17048
  ),
17049
- /* @__PURE__ */ jsxs(Typography, { variant: "body1", className: "text-gray-300", children: [
17049
+ /* @__PURE__ */ jsxs(Typography, { variant: "body1", className: "text-muted-foreground", children: [
17050
17050
  t("battle.turnsPlayed"),
17051
17051
  ": ",
17052
17052
  currentTurn
@@ -21092,7 +21092,7 @@ function BuilderBoard({
21092
21092
  backgroundPosition: "center"
21093
21093
  },
21094
21094
  children: /* @__PURE__ */ jsxs(VStack, { gap: "lg", className: "p-4", children: [
21095
- entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-lg", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-lg bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
21095
+ entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
21096
21096
  /* @__PURE__ */ jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
21097
21097
  /* @__PURE__ */ jsx(Typography, { variant: "h4", weight: "bold", children: entity.title }),
21098
21098
  /* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.description })
@@ -21130,7 +21130,7 @@ function BuilderBoard({
21130
21130
  {
21131
21131
  gap: "sm",
21132
21132
  align: "center",
21133
- className: `p-3 border-2 rounded ${result ? result.correct ? "border-green-500" : "border-red-500" : selectedComponent ? "border-dashed border-foreground cursor-pointer" : "border-border"}`,
21133
+ className: `p-3 border-2 rounded ${result ? result.correct ? "border-success" : "border-error" : selectedComponent ? "border-dashed border-foreground cursor-pointer" : "border-border"}`,
21134
21134
  onClick: () => handlePlaceComponent(slot.id),
21135
21135
  children: [
21136
21136
  /* @__PURE__ */ jsxs(VStack, { gap: "none", className: "flex-1", children: [
@@ -21145,7 +21145,7 @@ function BuilderBoard({
21145
21145
  ] }) : null,
21146
21146
  placedComp.label
21147
21147
  ] }),
21148
- result && /* @__PURE__ */ jsx(Icon, { icon: result.correct ? CheckCircle : XCircle, size: "sm", className: result.correct ? "text-green-600" : "text-red-600" })
21148
+ result && /* @__PURE__ */ jsx(Icon, { icon: result.correct ? CheckCircle : XCircle, size: "sm", className: result.correct ? "text-success" : "text-error" })
21149
21149
  ] }) : /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: t("builder.empty") })
21150
21150
  ]
21151
21151
  },
@@ -21154,10 +21154,10 @@ function BuilderBoard({
21154
21154
  }) })
21155
21155
  ] }) }),
21156
21156
  submitted && /* @__PURE__ */ jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", align: "center", children: [
21157
- /* @__PURE__ */ jsx(Icon, { icon: allCorrect ? CheckCircle : XCircle, size: "lg", className: allCorrect ? "text-green-600" : "text-red-600" }),
21157
+ /* @__PURE__ */ jsx(Icon, { icon: allCorrect ? CheckCircle : XCircle, size: "lg", className: allCorrect ? "text-success" : "text-error" }),
21158
21158
  /* @__PURE__ */ jsx(Typography, { variant: "body", weight: "bold", children: allCorrect ? entity.successMessage ?? t("builder.success") : entity.failMessage ?? t("builder.incorrect") })
21159
21159
  ] }) }),
21160
- showHint && entity.hint && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-yellow-500", children: /* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.hint }) }),
21160
+ showHint && entity.hint && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.hint }) }),
21161
21161
  /* @__PURE__ */ jsxs(HStack, { gap: "sm", justify: "center", children: [
21162
21162
  !submitted ? /* @__PURE__ */ jsxs(Button, { variant: "primary", onClick: handleSubmit, disabled: !allPlaced, children: [
21163
21163
  /* @__PURE__ */ jsx(Icon, { icon: Wrench, size: "sm" }),
@@ -22779,7 +22779,7 @@ function CanvasEffectEngine({
22779
22779
  flash && /* @__PURE__ */ jsx(
22780
22780
  Box,
22781
22781
  {
22782
- className: "absolute inset-0 z-20 pointer-events-none rounded-lg",
22782
+ className: "absolute inset-0 z-20 pointer-events-none rounded-container",
22783
22783
  style: { backgroundColor: flash.color, opacity: flash.alpha }
22784
22784
  }
22785
22785
  ),
@@ -22847,7 +22847,7 @@ function EmojiEffect({
22847
22847
  /* @__PURE__ */ jsx(
22848
22848
  Box,
22849
22849
  {
22850
- className: "absolute rounded-full animate-ping",
22850
+ className: "absolute rounded-pill animate-ping",
22851
22851
  style: {
22852
22852
  width: 48 * intensity,
22853
22853
  height: 48 * intensity,
@@ -24664,7 +24664,7 @@ function ClassifierBoard({
24664
24664
  backgroundPosition: "center"
24665
24665
  },
24666
24666
  children: /* @__PURE__ */ jsxs(VStack, { gap: "lg", className: "p-4", children: [
24667
- entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-lg", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-lg bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
24667
+ entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
24668
24668
  /* @__PURE__ */ jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
24669
24669
  /* @__PURE__ */ jsx(Typography, { variant: "h4", weight: "bold", children: entity.title }),
24670
24670
  /* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.description })
@@ -24679,7 +24679,7 @@ function ClassifierBoard({
24679
24679
  /* @__PURE__ */ jsx(VStack, { gap: "md", children: categories.map((cat) => {
24680
24680
  const catItems = items.filter((item) => assignments[item.id] === cat.id);
24681
24681
  return /* @__PURE__ */ jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
24682
- cat.imageUrl && /* @__PURE__ */ jsx(Box, { className: "w-full h-16 overflow-hidden rounded-md", children: /* @__PURE__ */ jsx("img", { src: cat.imageUrl, alt: "", className: "w-full h-full object-cover" }) }),
24682
+ cat.imageUrl && /* @__PURE__ */ jsx(Box, { className: "w-full h-16 overflow-hidden rounded-container", children: /* @__PURE__ */ jsx("img", { src: cat.imageUrl, alt: "", className: "w-full h-full object-cover" }) }),
24683
24683
  /* @__PURE__ */ jsxs(HStack, { justify: "between", align: "center", children: [
24684
24684
  /* @__PURE__ */ jsx(Typography, { variant: "body", weight: "bold", children: cat.label }),
24685
24685
  /* @__PURE__ */ jsx(Badge, { size: "sm", children: catItems.length })
@@ -24690,12 +24690,12 @@ function ClassifierBoard({
24690
24690
  Badge,
24691
24691
  {
24692
24692
  size: "sm",
24693
- 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" : ""}`,
24693
+ className: `cursor-pointer ${result ? result.correct ? "border-success bg-success/10" : "border-error bg-error/10" : ""}`,
24694
24694
  onClick: () => handleUnassign(item.id),
24695
24695
  children: [
24696
24696
  item.iconUrl && /* @__PURE__ */ jsx("img", { src: item.iconUrl, alt: "", className: "w-3 h-3 object-contain inline-block" }),
24697
24697
  item.label,
24698
- result && /* @__PURE__ */ jsx(Icon, { icon: result.correct ? CheckCircle : XCircle, size: "xs", className: result.correct ? "text-green-600" : "text-red-600" })
24698
+ result && /* @__PURE__ */ jsx(Icon, { icon: result.correct ? CheckCircle : XCircle, size: "xs", className: result.correct ? "text-success" : "text-error" })
24699
24699
  ]
24700
24700
  },
24701
24701
  item.id
@@ -24718,11 +24718,11 @@ function ClassifierBoard({
24718
24718
  ] }) }, cat.id);
24719
24719
  }) }),
24720
24720
  submitted && /* @__PURE__ */ jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", align: "center", children: [
24721
- /* @__PURE__ */ jsx(Icon, { icon: allCorrect ? CheckCircle : XCircle, size: "lg", className: allCorrect ? "text-green-600" : "text-red-600" }),
24721
+ /* @__PURE__ */ jsx(Icon, { icon: allCorrect ? CheckCircle : XCircle, size: "lg", className: allCorrect ? "text-success" : "text-error" }),
24722
24722
  /* @__PURE__ */ jsx(Typography, { variant: "body", weight: "bold", children: allCorrect ? entity.successMessage ?? t("classifier.allCorrect") : `${correctCount}/${items.length} ${t("classifier.correct")}` }),
24723
24723
  !allCorrect && entity.failMessage && /* @__PURE__ */ jsx(Typography, { variant: "body", className: "text-muted-foreground", children: entity.failMessage })
24724
24724
  ] }) }),
24725
- showHint && entity.hint && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-yellow-500", children: /* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.hint }) }),
24725
+ showHint && entity.hint && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.hint }) }),
24726
24726
  /* @__PURE__ */ jsxs(HStack, { gap: "sm", justify: "center", children: [
24727
24727
  !submitted ? /* @__PURE__ */ jsxs(Button, { variant: "primary", onClick: handleSubmit, disabled: !allAssigned, children: [
24728
24728
  /* @__PURE__ */ jsx(Icon, { icon: Send, size: "sm" }),
@@ -25770,7 +25770,7 @@ function CraftingRecipe({
25770
25770
  Box,
25771
25771
  {
25772
25772
  className: cn(
25773
- "flex flex-wrap items-center gap-3 rounded-lg bg-gray-800/50 border border-gray-700/50 p-3",
25773
+ "flex flex-wrap items-center gap-3 rounded-container bg-muted/50 border border-border/50 p-3",
25774
25774
  className
25775
25775
  ),
25776
25776
  children: [
@@ -25787,10 +25787,10 @@ function CraftingRecipe({
25787
25787
  className: cn(!hasSufficient && "opacity-50")
25788
25788
  }
25789
25789
  ) }),
25790
- index < inputs.length - 1 && /* @__PURE__ */ jsx(Icon, { name: "plus", size: "sm", className: "text-gray-500" })
25790
+ index < inputs.length - 1 && /* @__PURE__ */ jsx(Icon, { name: "plus", size: "sm", className: "text-muted-foreground" })
25791
25791
  ] }, index);
25792
25792
  }) }),
25793
- /* @__PURE__ */ jsx(Icon, { name: "arrow-right", size: "md", className: "text-gray-400" }),
25793
+ /* @__PURE__ */ jsx(Icon, { name: "arrow-right", size: "md", className: "text-muted-foreground" }),
25794
25794
  /* @__PURE__ */ jsx(
25795
25795
  ItemSlot,
25796
25796
  {
@@ -25878,7 +25878,7 @@ function DPad({
25878
25878
  createButton("up"),
25879
25879
  /* @__PURE__ */ jsx("div", {}),
25880
25880
  createButton("left"),
25881
- /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx("div", { className: "w-6 h-6 rounded-full bg-gray-700 border-2 border-gray-600" }) }),
25881
+ /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx("div", { className: "w-6 h-6 rounded-interactive bg-muted border-2 border-muted-foreground" }) }),
25882
25882
  createButton("right"),
25883
25883
  /* @__PURE__ */ jsx("div", {}),
25884
25884
  createButton("down"),
@@ -30063,7 +30063,7 @@ function StatBadge({
30063
30063
  "div",
30064
30064
  {
30065
30065
  className: cn(
30066
- "inline-flex items-center gap-2 rounded-lg border backdrop-blur-sm",
30066
+ "inline-flex items-center gap-2 rounded-container border backdrop-blur-sm",
30067
30067
  sizeMap17[size] ?? sizeMap17.md,
30068
30068
  variantMap2[variant] ?? variantMap2.default,
30069
30069
  className
@@ -30209,10 +30209,10 @@ function QuestTracker({
30209
30209
  Box,
30210
30210
  {
30211
30211
  className: cn(
30212
- "flex items-start gap-3 rounded-lg px-3 py-2 transition-colors",
30213
- isActive && !isCompleted && "bg-blue-900/20 border border-blue-800/50",
30214
- isCompleted && "bg-green-900/10 border border-green-800/30 opacity-70",
30215
- !isActive && !isCompleted && "bg-gray-800/30 border border-gray-700/30"
30212
+ "flex items-start gap-3 rounded-container px-3 py-2 transition-colors",
30213
+ isActive && !isCompleted && "bg-info/20 border border-info/50",
30214
+ isCompleted && "bg-success/10 border border-success/30 opacity-70",
30215
+ !isActive && !isCompleted && "bg-muted/30 border border-border/30"
30216
30216
  ),
30217
30217
  children: [
30218
30218
  /* @__PURE__ */ jsx(Box, { className: "flex-shrink-0 pt-0.5", children: /* @__PURE__ */ jsx(
@@ -30230,9 +30230,9 @@ function QuestTracker({
30230
30230
  variant: "body2",
30231
30231
  className: cn(
30232
30232
  "font-medium truncate",
30233
- isCompleted && "line-through text-gray-500",
30234
- isActive && !isCompleted && "text-blue-300",
30235
- !isActive && !isCompleted && "text-gray-300"
30233
+ isCompleted && "line-through text-muted-foreground",
30234
+ isActive && !isCompleted && "text-info",
30235
+ !isActive && !isCompleted && "text-muted-foreground"
30236
30236
  ),
30237
30237
  children: quest.title
30238
30238
  }
@@ -30250,7 +30250,7 @@ function QuestTracker({
30250
30250
  Typography,
30251
30251
  {
30252
30252
  variant: "caption",
30253
- className: "text-gray-500 mt-1",
30253
+ className: "text-muted-foreground mt-1",
30254
30254
  children: [
30255
30255
  quest.progress,
30256
30256
  " / ",
@@ -30307,14 +30307,14 @@ function PowerupSlots({
30307
30307
  {
30308
30308
  className: cn(
30309
30309
  "absolute -bottom-1 left-1/2 -translate-x-1/2",
30310
- "rounded px-1 py-px",
30311
- "bg-black/80 border border-gray-600"
30310
+ "rounded-interactive px-1 py-px",
30311
+ "bg-background/80 border border-border"
30312
30312
  ),
30313
30313
  children: /* @__PURE__ */ jsx(
30314
30314
  Typography,
30315
30315
  {
30316
30316
  variant: "caption",
30317
- className: "text-[9px] font-mono font-bold text-yellow-300 whitespace-nowrap",
30317
+ className: "text-[9px] font-mono font-bold text-warning whitespace-nowrap",
30318
30318
  children: formatTime2(powerup.remainingTime)
30319
30319
  }
30320
30320
  )
@@ -30436,7 +30436,7 @@ function HealthPanel({
30436
30436
  Box,
30437
30437
  {
30438
30438
  className: cn(
30439
- "rounded-lg bg-[var(--color-card)]/90 border border-gray-700 backdrop-blur-sm",
30439
+ "rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm",
30440
30440
  sizes.padding,
30441
30441
  className
30442
30442
  ),
@@ -30447,7 +30447,7 @@ function HealthPanel({
30447
30447
  {
30448
30448
  variant: "caption",
30449
30449
  weight: "bold",
30450
- className: "text-gray-300 uppercase tracking-wider",
30450
+ className: "text-muted-foreground uppercase tracking-wider",
30451
30451
  children: label
30452
30452
  }
30453
30453
  ),
@@ -30468,7 +30468,7 @@ function HealthPanel({
30468
30468
  as: "span",
30469
30469
  variant: "caption",
30470
30470
  weight: "bold",
30471
- className: "text-blue-400 ml-1",
30471
+ className: "text-info ml-1",
30472
30472
  children: [
30473
30473
  "+",
30474
30474
  shield
@@ -30493,14 +30493,14 @@ function HealthPanel({
30493
30493
  Box,
30494
30494
  {
30495
30495
  className: cn(
30496
- "relative overflow-hidden rounded-full bg-gray-700",
30496
+ "relative overflow-hidden rounded-container bg-muted",
30497
30497
  size === "sm" ? "h-1" : size === "md" ? "h-1.5" : "h-2",
30498
30498
  "w-full"
30499
30499
  ),
30500
30500
  children: /* @__PURE__ */ jsx(
30501
30501
  Box,
30502
30502
  {
30503
- className: "absolute inset-y-0 left-0 rounded-full bg-blue-500 transition-all duration-300",
30503
+ className: "absolute inset-y-0 left-0 rounded-container bg-info transition-all duration-300",
30504
30504
  style: { width: `${Math.min(100, shield / max * 100)}%` }
30505
30505
  }
30506
30506
  )
@@ -30559,7 +30559,7 @@ function ScoreBoard({
30559
30559
  Card,
30560
30560
  {
30561
30561
  className: cn(
30562
- "bg-[var(--color-card)]/90 border-gray-700 backdrop-blur-sm",
30562
+ "bg-[var(--color-card)]/90 border-border backdrop-blur-sm",
30563
30563
  className
30564
30564
  ),
30565
30565
  children: /* @__PURE__ */ jsx(CardContent, { className: "p-3", children: /* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-3 flex-wrap", children: [
@@ -30676,7 +30676,7 @@ function TurnPanel({
30676
30676
  Box,
30677
30677
  {
30678
30678
  className: cn(
30679
- "flex items-center gap-3 rounded-lg bg-[var(--color-card)]/90 border border-gray-700 backdrop-blur-sm px-3 py-2",
30679
+ "flex items-center gap-3 rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm px-3 py-2",
30680
30680
  className
30681
30681
  ),
30682
30682
  children: [
@@ -30728,7 +30728,7 @@ function EnemyPlate({
30728
30728
  Box,
30729
30729
  {
30730
30730
  className: cn(
30731
- "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",
30731
+ "inline-flex flex-col gap-1 rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm px-3 py-1.5",
30732
30732
  "min-w-[120px]",
30733
30733
  className
30734
30734
  ),
@@ -30822,7 +30822,7 @@ function UnitCommandBar({
30822
30822
  Box,
30823
30823
  {
30824
30824
  className: cn(
30825
- "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",
30825
+ "flex items-center gap-1.5 rounded-container bg-[var(--color-card)]/90 border border-border backdrop-blur-sm px-2 py-1.5",
30826
30826
  className
30827
30827
  ),
30828
30828
  children: commands.map((command, i) => /* @__PURE__ */ jsxs(Box, { className: "flex flex-col items-center gap-0.5", children: [
@@ -30907,8 +30907,8 @@ function GameHud({
30907
30907
  className: cn(
30908
30908
  "relative z-10",
30909
30909
  positionMap[position],
30910
- transparent && "bg-gradient-to-b from-black/50 to-transparent",
30911
- position === "bottom" && "bg-gradient-to-t from-black/50 to-transparent",
30910
+ transparent && "bg-gradient-to-b from-background/50 to-transparent",
30911
+ position === "bottom" && "bg-gradient-to-t from-background/50 to-transparent",
30912
30912
  className
30913
30913
  ),
30914
30914
  children: /* @__PURE__ */ jsx("div", { className: "flex gap-4", children: stats.map((stat, i) => /* @__PURE__ */ jsx(StatBadge, { ...stat, size }, i)) })
@@ -31066,8 +31066,8 @@ function DialogueBox({
31066
31066
  tabIndex: 0,
31067
31067
  role: "dialog",
31068
31068
  "aria-label": "Dialogue",
31069
- children: /* @__PURE__ */ 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__ */ jsxs("div", { className: "flex", children: [
31070
- dialogue.portrait && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 p-4 border-r border-gray-700", children: /* @__PURE__ */ jsx(
31069
+ children: /* @__PURE__ */ jsx("div", { className: "mx-4 my-4 bg-[var(--color-card)] bg-opacity-95 border-2 border-border rounded-container overflow-hidden", children: /* @__PURE__ */ jsxs("div", { className: "flex", children: [
31070
+ dialogue.portrait && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 p-4 border-r border-border", children: /* @__PURE__ */ jsx(
31071
31071
  "img",
31072
31072
  {
31073
31073
  src: dialogue.portrait,
@@ -31077,7 +31077,7 @@ function DialogueBox({
31077
31077
  }
31078
31078
  ) }),
31079
31079
  /* @__PURE__ */ jsxs("div", { className: "flex-1 p-4", children: [
31080
- /* @__PURE__ */ jsx("div", { className: "text-yellow-400 font-bold mb-2", children: dialogue.speaker }),
31080
+ /* @__PURE__ */ jsx("div", { className: "text-warning font-bold mb-2", children: dialogue.speaker }),
31081
31081
  /* @__PURE__ */ jsxs("div", { className: "text-[var(--color-foreground)] text-lg leading-relaxed min-h-[60px]", children: [
31082
31082
  displayedText,
31083
31083
  isTyping && /* @__PURE__ */ jsx("span", { className: "animate-pulse", children: "\u258C" })
@@ -31087,9 +31087,9 @@ function DialogueBox({
31087
31087
  {
31088
31088
  type: "button",
31089
31089
  className: cn(
31090
- "block w-full text-left px-4 py-2 rounded transition-colors",
31091
- "hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-yellow-400",
31092
- selectedChoice === index ? "bg-[var(--color-surface,#374151)] text-yellow-400" : "bg-[var(--color-card)] text-[var(--color-foreground)]"
31090
+ "block w-full text-left px-4 py-2 rounded-interactive transition-colors",
31091
+ "hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-warning",
31092
+ selectedChoice === index ? "bg-[var(--color-surface,#374151)] text-warning" : "bg-[var(--color-card)] text-[var(--color-foreground)]"
31093
31093
  ),
31094
31094
  onClick: (e) => {
31095
31095
  e.stopPropagation();
@@ -31097,7 +31097,7 @@ function DialogueBox({
31097
31097
  onChoice?.(choice);
31098
31098
  },
31099
31099
  children: [
31100
- /* @__PURE__ */ jsxs("span", { className: "text-gray-500 mr-2", children: [
31100
+ /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground mr-2", children: [
31101
31101
  index + 1,
31102
31102
  "."
31103
31103
  ] }),
@@ -31106,7 +31106,7 @@ function DialogueBox({
31106
31106
  },
31107
31107
  index
31108
31108
  )) }),
31109
- !isTyping && !dialogue.choices?.length && /* @__PURE__ */ jsx("div", { className: "mt-4 text-gray-500 text-sm animate-pulse", children: "Press SPACE or click to continue..." })
31109
+ !isTyping && !dialogue.choices?.length && /* @__PURE__ */ jsx("div", { className: "mt-4 text-muted-foreground text-sm animate-pulse", children: "Press SPACE or click to continue..." })
31110
31110
  ] })
31111
31111
  ] }) })
31112
31112
  }
@@ -31209,7 +31209,7 @@ function InventoryPanel({
31209
31209
  /* @__PURE__ */ jsx(
31210
31210
  "div",
31211
31211
  {
31212
- className: "grid gap-1 bg-[var(--color-card)] p-2 rounded-lg border border-gray-700",
31212
+ className: "grid gap-1 bg-[var(--color-card)] p-2 rounded-container border border-border",
31213
31213
  style: {
31214
31214
  gridTemplateColumns: `repeat(${safeColumns}, ${slotSize}px)`,
31215
31215
  gridTemplateRows: `repeat(${rows}, ${slotSize}px)`
@@ -31221,8 +31221,8 @@ function InventoryPanel({
31221
31221
  className: cn(
31222
31222
  "relative flex items-center justify-center",
31223
31223
  "bg-[var(--color-card)] border rounded transition-colors",
31224
- "hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-blue-500",
31225
- selectedSlot === index ? "border-yellow-400 bg-[var(--color-surface,#374151)]" : "border-gray-600"
31224
+ "hover:bg-[var(--color-surface,#374151)] focus:outline-none focus:ring-2 focus:ring-info",
31225
+ selectedSlot === index ? "border-warning bg-[var(--color-surface,#374151)]" : "border-muted"
31226
31226
  ),
31227
31227
  style: { width: slotSize, height: slotSize },
31228
31228
  onClick: () => handleSlotClick(index),
@@ -31241,8 +31241,8 @@ function InventoryPanel({
31241
31241
  className: "w-8 h-8 object-contain",
31242
31242
  style: { imageRendering: "pixelated" }
31243
31243
  }
31244
- ) : /* @__PURE__ */ 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() }),
31245
- item.quantity > 1 && /* @__PURE__ */ jsx("span", { className: "absolute bottom-0 right-0 bg-black bg-opacity-70 text-white text-xs px-1 rounded-tl", children: item.quantity })
31244
+ ) : /* @__PURE__ */ 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() }),
31245
+ item.quantity > 1 && /* @__PURE__ */ jsx("span", { className: "absolute bottom-0 right-0 bg-background/70 text-foreground text-xs px-1 rounded-tl", children: item.quantity })
31246
31246
  ] })
31247
31247
  },
31248
31248
  index
@@ -31252,7 +31252,7 @@ function InventoryPanel({
31252
31252
  showTooltips && hoveredItem && /* @__PURE__ */ jsxs(
31253
31253
  "div",
31254
31254
  {
31255
- className: "fixed z-50 bg-[var(--color-card)] border border-gray-600 rounded-lg p-2 shadow-lg pointer-events-none",
31255
+ className: "fixed z-50 bg-[var(--color-card)] border border-border rounded-container p-2 shadow-elevation-card pointer-events-none",
31256
31256
  style: {
31257
31257
  left: tooltipPosition.x,
31258
31258
  top: tooltipPosition.y,
@@ -31260,8 +31260,8 @@ function InventoryPanel({
31260
31260
  },
31261
31261
  children: [
31262
31262
  /* @__PURE__ */ jsx("div", { className: "font-semibold text-[var(--color-foreground)]", children: hoveredItem.name || hoveredItem.type }),
31263
- hoveredItem.description && /* @__PURE__ */ jsx("div", { className: "text-sm text-gray-400 mt-1", children: hoveredItem.description }),
31264
- /* @__PURE__ */ jsxs("div", { className: "text-xs text-gray-500 mt-1", children: [
31263
+ hoveredItem.description && /* @__PURE__ */ jsx("div", { className: "text-sm text-muted-foreground mt-1", children: hoveredItem.description }),
31264
+ /* @__PURE__ */ jsxs("div", { className: "text-xs text-muted-foreground mt-1", children: [
31265
31265
  "Quantity: ",
31266
31266
  hoveredItem.quantity
31267
31267
  ] })
@@ -31339,7 +31339,7 @@ function GameMenu({
31339
31339
  children: title
31340
31340
  }
31341
31341
  ),
31342
- subtitle && /* @__PURE__ */ jsx("p", { className: "mt-2 text-lg text-gray-400 tracking-widest uppercase", children: subtitle })
31342
+ subtitle && /* @__PURE__ */ jsx("p", { className: "mt-2 text-lg text-muted-foreground tracking-widest uppercase", children: subtitle })
31343
31343
  ] }),
31344
31344
  /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4 w-full max-w-md", children: resolvedOptions.map((option, index) => /* @__PURE__ */ jsx(
31345
31345
  "button",
@@ -31347,10 +31347,10 @@ function GameMenu({
31347
31347
  onClick: () => handleOptionClick(option),
31348
31348
  disabled: option.disabled,
31349
31349
  className: cn(
31350
- "w-full py-4 px-8 rounded-xl border-2 font-bold text-lg",
31350
+ "w-full py-4 px-8 rounded-container border-2 font-bold text-lg",
31351
31351
  "transition-all duration-200 transform",
31352
31352
  "hover:scale-105 active:scale-95",
31353
- "focus:outline-none focus:ring-4 focus:ring-white/25",
31353
+ "focus:outline-none focus:ring-4 focus:ring-foreground/25",
31354
31354
  variantMap3[option.variant ?? "secondary"] ?? variantMap3.secondary,
31355
31355
  option.disabled && "opacity-50 cursor-not-allowed hover:scale-100"
31356
31356
  ),
@@ -31362,8 +31362,8 @@ function GameMenu({
31362
31362
  index
31363
31363
  )) }),
31364
31364
  /* @__PURE__ */ jsxs("div", { className: "absolute inset-0 pointer-events-none overflow-hidden", children: [
31365
- /* @__PURE__ */ jsx("div", { className: "absolute top-1/4 left-1/4 w-64 h-64 bg-blue-500/10 rounded-full blur-3xl" }),
31366
- /* @__PURE__ */ jsx("div", { className: "absolute bottom-1/4 right-1/4 w-96 h-96 bg-purple-500/10 rounded-full blur-3xl" })
31365
+ /* @__PURE__ */ jsx("div", { className: "absolute top-1/4 left-1/4 w-64 h-64 bg-info/10 rounded-container blur-3xl" }),
31366
+ /* @__PURE__ */ jsx("div", { className: "absolute bottom-1/4 right-1/4 w-96 h-96 bg-accent/10 rounded-container blur-3xl" })
31367
31367
  ] })
31368
31368
  ]
31369
31369
  }
@@ -31376,9 +31376,9 @@ var init_GameMenu = __esm({
31376
31376
  init_cn();
31377
31377
  init_useEventBus();
31378
31378
  variantMap3 = {
31379
- primary: "bg-[var(--color-primary)] hover:bg-blue-500 text-[var(--color-primary-foreground)] border-blue-400 shadow-lg shadow-blue-500/25",
31380
- secondary: "bg-[var(--color-surface,#374151)] hover:bg-gray-600 text-[var(--color-foreground)] border-gray-500",
31381
- ghost: "bg-transparent hover:bg-white/10 text-[var(--color-foreground)] border-white/20"
31379
+ primary: "bg-[var(--color-primary)] hover:bg-info text-[var(--color-primary-foreground)] border-info shadow-lg shadow-info/25",
31380
+ secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
31381
+ ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
31382
31382
  };
31383
31383
  GameMenu.displayName = "GameMenu";
31384
31384
  }
@@ -31446,13 +31446,13 @@ function GameOverScreen({
31446
31446
  children: title
31447
31447
  }
31448
31448
  ),
31449
- message && /* @__PURE__ */ jsx("p", { className: "text-xl text-gray-300 mb-8 text-center max-w-md", children: message }),
31450
- isNewHighScore && /* @__PURE__ */ jsx("div", { className: "mb-6 px-6 py-2 bg-yellow-500/20 border-2 border-yellow-500 rounded-full animate-pulse", children: /* @__PURE__ */ jsx("span", { className: "text-yellow-400 font-bold text-lg tracking-wide", children: "\u{1F3C6} NEW HIGH SCORE! \u{1F3C6}" }) }),
31449
+ message && /* @__PURE__ */ jsx("p", { className: "text-xl text-muted-foreground mb-8 text-center max-w-md", children: message }),
31450
+ isNewHighScore && /* @__PURE__ */ jsx("div", { className: "mb-6 px-6 py-2 bg-warning/20 border-2 border-warning rounded-container animate-pulse", children: /* @__PURE__ */ jsx("span", { className: "text-warning font-bold text-lg tracking-wide", children: "\u{1F3C6} NEW HIGH SCORE! \u{1F3C6}" }) }),
31451
31451
  stats.length > 0 && /* @__PURE__ */ jsx(
31452
31452
  "div",
31453
31453
  {
31454
31454
  className: cn(
31455
- "mb-8 p-6 rounded-xl border-2 bg-black/30",
31455
+ "mb-8 p-6 rounded-container border-2 bg-background/30",
31456
31456
  colors.accent
31457
31457
  ),
31458
31458
  children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 md:grid-cols-3 gap-4", children: stats.map((stat, index) => {
@@ -31461,7 +31461,7 @@ function GameOverScreen({
31461
31461
  displayValue = formatTime3(displayValue);
31462
31462
  }
31463
31463
  return /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
31464
- /* @__PURE__ */ jsx("div", { className: "text-gray-400 text-sm mb-1", children: stat.label }),
31464
+ /* @__PURE__ */ jsx("div", { className: "text-muted-foreground text-sm mb-1", children: stat.label }),
31465
31465
  /* @__PURE__ */ jsxs("div", { className: "text-[var(--color-foreground)] text-2xl font-bold flex items-center justify-center gap-2", children: [
31466
31466
  stat.icon && /* @__PURE__ */ jsx("span", { children: stat.icon }),
31467
31467
  /* @__PURE__ */ jsx("span", { className: "tabular-nums", children: displayValue })
@@ -31475,10 +31475,10 @@ function GameOverScreen({
31475
31475
  {
31476
31476
  onClick: () => handleActionClick(action),
31477
31477
  className: cn(
31478
- "px-8 py-4 rounded-xl border-2 font-bold text-lg",
31478
+ "px-8 py-4 rounded-container border-2 font-bold text-lg",
31479
31479
  "transition-all duration-200",
31480
31480
  "hover:scale-105 active:scale-95",
31481
- "focus:outline-none focus:ring-4 focus:ring-white/25",
31481
+ "focus:outline-none focus:ring-4 focus:ring-foreground/25",
31482
31482
  buttonVariants[action.variant ?? "secondary"]
31483
31483
  ),
31484
31484
  children: action.label
@@ -31497,25 +31497,25 @@ var init_GameOverScreen = __esm({
31497
31497
  init_useEventBus();
31498
31498
  variantColors = {
31499
31499
  victory: {
31500
- bg: "from-green-900/90 to-emerald-950/90",
31501
- title: "text-green-400",
31502
- accent: "border-green-500"
31500
+ bg: "from-success/90 to-success/90",
31501
+ title: "text-success",
31502
+ accent: "border-success"
31503
31503
  },
31504
31504
  defeat: {
31505
- bg: "from-red-900/90 to-gray-950/90",
31506
- title: "text-red-400",
31507
- accent: "border-red-500"
31505
+ bg: "from-error/90 to-background/90",
31506
+ title: "text-error",
31507
+ accent: "border-error"
31508
31508
  },
31509
31509
  neutral: {
31510
- bg: "from-gray-900/90 to-gray-950/90",
31511
- title: "text-white",
31512
- accent: "border-gray-500"
31510
+ bg: "from-muted/90 to-background/90",
31511
+ title: "text-foreground",
31512
+ accent: "border-muted"
31513
31513
  }
31514
31514
  };
31515
31515
  buttonVariants = {
31516
- primary: "bg-[var(--color-primary)] hover:bg-blue-500 text-[var(--color-primary-foreground)] border-blue-400",
31517
- secondary: "bg-[var(--color-surface,#374151)] hover:bg-gray-600 text-[var(--color-foreground)] border-gray-500",
31518
- ghost: "bg-transparent hover:bg-white/10 text-[var(--color-foreground)] border-white/20"
31516
+ primary: "bg-[var(--color-primary)] hover:bg-info text-[var(--color-primary-foreground)] border-info",
31517
+ secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
31518
+ ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
31519
31519
  };
31520
31520
  GameOverScreen.displayName = "GameOverScreen";
31521
31521
  }
@@ -31749,7 +31749,7 @@ function PlatformerCanvas({
31749
31749
  {
31750
31750
  ref: canvasRef,
31751
31751
  style: { width: canvasWidth, height: canvasHeight },
31752
- className: cn("block rounded-lg border border-white/10", className),
31752
+ className: cn("block rounded-container border border-border/10", className),
31753
31753
  "data-testid": "platformer-canvas",
31754
31754
  tabIndex: 0
31755
31755
  }
@@ -38889,7 +38889,7 @@ function DebuggerBoard({
38889
38889
  backgroundPosition: "center"
38890
38890
  },
38891
38891
  children: /* @__PURE__ */ jsxs(VStack, { gap: "lg", className: "p-4", children: [
38892
- entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-lg", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-lg bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
38892
+ entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
38893
38893
  /* @__PURE__ */ jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
38894
38894
  /* @__PURE__ */ jsxs(HStack, { gap: "xs", align: "center", children: [
38895
38895
  /* @__PURE__ */ jsx(Icon, { icon: Bug, size: "sm" }),
@@ -38902,11 +38902,11 @@ function DebuggerBoard({
38902
38902
  const isFlagged = flaggedLines.has(line.id);
38903
38903
  let lineStyle = "";
38904
38904
  if (submitted) {
38905
- if (line.isBug && isFlagged) lineStyle = "bg-green-50 dark:bg-green-950";
38906
- else if (line.isBug && !isFlagged) lineStyle = "bg-yellow-50 dark:bg-yellow-950";
38907
- else if (!line.isBug && isFlagged) lineStyle = "bg-red-50 dark:bg-red-950";
38905
+ if (line.isBug && isFlagged) lineStyle = "bg-success/10";
38906
+ else if (line.isBug && !isFlagged) lineStyle = "bg-warning/10";
38907
+ else if (!line.isBug && isFlagged) lineStyle = "bg-error/10";
38908
38908
  } else if (isFlagged) {
38909
- lineStyle = "bg-red-50 dark:bg-red-950";
38909
+ lineStyle = "bg-error/10";
38910
38910
  }
38911
38911
  return /* @__PURE__ */ jsxs(
38912
38912
  HStack,
@@ -38919,8 +38919,8 @@ function DebuggerBoard({
38919
38919
  /* @__PURE__ */ jsx(Box, { className: "w-10 flex-shrink-0 flex items-center justify-center border-r border-border text-muted-foreground", children: /* @__PURE__ */ jsx(Typography, { variant: "caption", children: i + 1 }) }),
38920
38920
  /* @__PURE__ */ jsx(Box, { className: "flex-1 px-3 py-1.5 font-mono text-sm whitespace-pre", children: /* @__PURE__ */ jsx(Typography, { variant: "body", className: "font-mono text-sm", children: line.content }) }),
38921
38921
  /* @__PURE__ */ jsxs(Box, { className: "w-8 flex-shrink-0 flex items-center justify-center", children: [
38922
- isFlagged && /* @__PURE__ */ jsx(Icon, { icon: Bug, size: "xs", className: "text-red-600" }),
38923
- submitted && line.isBug && !isFlagged && /* @__PURE__ */ jsx(Icon, { icon: Bug, size: "xs", className: "text-yellow-600" })
38922
+ isFlagged && /* @__PURE__ */ jsx(Icon, { icon: Bug, size: "xs", className: "text-error" }),
38923
+ submitted && line.isBug && !isFlagged && /* @__PURE__ */ jsx(Icon, { icon: Bug, size: "xs", className: "text-warning" })
38924
38924
  ] })
38925
38925
  ]
38926
38926
  },
@@ -38935,7 +38935,7 @@ function DebuggerBoard({
38935
38935
  {
38936
38936
  icon: flaggedLines.has(line.id) ? CheckCircle : XCircle,
38937
38937
  size: "xs",
38938
- className: flaggedLines.has(line.id) ? "text-green-600 mt-0.5" : "text-yellow-600 mt-0.5"
38938
+ className: flaggedLines.has(line.id) ? "text-success mt-0.5" : "text-warning mt-0.5"
38939
38939
  }
38940
38940
  ),
38941
38941
  /* @__PURE__ */ jsxs(VStack, { gap: "none", children: [
@@ -38944,7 +38944,7 @@ function DebuggerBoard({
38944
38944
  ] })
38945
38945
  ] }, line.id))
38946
38946
  ] }) }),
38947
- showHint && entity.hint && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-yellow-500", children: /* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.hint }) }),
38947
+ showHint && entity.hint && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.hint }) }),
38948
38948
  /* @__PURE__ */ jsxs(HStack, { gap: "sm", justify: "center", children: [
38949
38949
  !submitted ? /* @__PURE__ */ jsxs(Button, { variant: "primary", onClick: handleSubmit, disabled: flaggedLines.size === 0, children: [
38950
38950
  /* @__PURE__ */ jsx(Icon, { icon: Send, size: "sm" }),
@@ -39667,7 +39667,7 @@ function LinearView({
39667
39667
  className
39668
39668
  }) {
39669
39669
  const currentIdx = trait.states.indexOf(trait.currentState);
39670
- return /* @__PURE__ */ jsxs(VStack, { className: cn("p-3 rounded-lg bg-card border border-border", className), gap: "sm", children: [
39670
+ return /* @__PURE__ */ jsxs(VStack, { className: cn("p-3 rounded-container bg-card border border-border", className), gap: "sm", children: [
39671
39671
  trait.description && /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: trait.description }),
39672
39672
  /* @__PURE__ */ jsx(HStack, { className: "flex-wrap items-center", gap: "xs", children: trait.states.map((state, i) => {
39673
39673
  const isDone = i < currentIdx;
@@ -39689,10 +39689,10 @@ function LinearView({
39689
39689
  {
39690
39690
  display: "inline-flex",
39691
39691
  className: cn(
39692
- "items-center justify-center rounded-full px-3 py-1 border-2 transition-all",
39692
+ "items-center justify-center rounded-pill px-3 py-1 border-2 transition-all",
39693
39693
  SIZE_CONFIG2[size || "md"].fontSize,
39694
39694
  isDone && "bg-success/20 border-success text-success",
39695
- isCurrent && "bg-primary/20 border-primary text-primary font-bold shadow-md shadow-primary/20",
39695
+ isCurrent && "bg-primary/20 border-primary text-primary font-bold shadow-elevation-card shadow-primary/20",
39696
39696
  !isDone && !isCurrent && "bg-muted border-border text-muted-foreground"
39697
39697
  ),
39698
39698
  children: [
@@ -39714,7 +39714,7 @@ function CompactView({
39714
39714
  const { t } = useTranslate();
39715
39715
  const config = SIZE_CONFIG2[size || "md"];
39716
39716
  const currentTransitions = trait.transitions.filter((t2) => t2.from === trait.currentState);
39717
- return /* @__PURE__ */ jsxs(VStack, { className: cn("p-3 rounded-lg bg-card border border-border", className), gap: "sm", children: [
39717
+ return /* @__PURE__ */ jsxs(VStack, { className: cn("p-3 rounded-container bg-card border border-border", className), gap: "sm", children: [
39718
39718
  /* @__PURE__ */ jsxs(HStack, { className: "items-center justify-between", children: [
39719
39719
  /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-foreground font-bold", children: trait.name }),
39720
39720
  /* @__PURE__ */ jsx(StateIndicator, { state: trait.currentState, size: "sm", stateStyles })
@@ -39750,7 +39750,7 @@ function FullView({
39750
39750
  const { t } = useTranslate();
39751
39751
  const config = SIZE_CONFIG2[size || "md"];
39752
39752
  const currentTransitions = trait.transitions.filter((t2) => t2.from === trait.currentState);
39753
- return /* @__PURE__ */ jsxs(VStack, { className: cn("p-3 rounded-lg bg-card border border-border", className), gap: "sm", children: [
39753
+ return /* @__PURE__ */ jsxs(VStack, { className: cn("p-3 rounded-container bg-card border border-border", className), gap: "sm", children: [
39754
39754
  /* @__PURE__ */ jsxs(HStack, { className: "items-center justify-between", children: [
39755
39755
  /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-foreground font-bold", children: trait.name }),
39756
39756
  /* @__PURE__ */ jsx(StateIndicator, { state: trait.currentState, size: "sm", stateStyles })
@@ -39764,9 +39764,9 @@ function FullView({
39764
39764
  {
39765
39765
  display: "flex",
39766
39766
  className: cn(
39767
- "items-center justify-center rounded-md border-2 transition-all px-2",
39767
+ "items-center justify-center rounded-container border-2 transition-all px-2",
39768
39768
  config.nodeSize,
39769
- isCurrent && "bg-primary/20 border-primary shadow-md shadow-primary/20",
39769
+ isCurrent && "bg-primary/20 border-primary shadow-elevation-card shadow-primary/20",
39770
39770
  !isCurrent && hasOutgoing && "bg-muted border-border hover:border-muted-foreground",
39771
39771
  !isCurrent && !hasOutgoing && "bg-background border-border opacity-60",
39772
39772
  onStateClick && "cursor-pointer"
@@ -40196,7 +40196,7 @@ function EventHandlerBoard({
40196
40196
  backgroundPosition: "center"
40197
40197
  },
40198
40198
  children: [
40199
- entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-lg", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-lg bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
40199
+ entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
40200
40200
  /* @__PURE__ */ jsxs(VStack, { gap: "xs", children: [
40201
40201
  /* @__PURE__ */ jsx(Typography, { variant: "h4", className: "text-foreground", children: entity.title }),
40202
40202
  /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-muted-foreground", children: entity.description }),
@@ -40211,7 +40211,7 @@ function EventHandlerBoard({
40211
40211
  Box,
40212
40212
  {
40213
40213
  className: cn(
40214
- "p-3 rounded-lg border-2 cursor-pointer transition-all hover:scale-105",
40214
+ "p-3 rounded-container border-2 cursor-pointer transition-all hover:scale-105",
40215
40215
  selectedObjectId === obj.id ? "border-primary bg-primary/10" : "border-border bg-card hover:border-muted-foreground"
40216
40216
  ),
40217
40217
  onClick: () => setSelectedObjectId(obj.id),
@@ -40233,10 +40233,10 @@ function EventHandlerBoard({
40233
40233
  }
40234
40234
  ),
40235
40235
  eventLog.length > 0 && /* @__PURE__ */ jsx(EventLog, { entries: eventLog }),
40236
- playState === "success" && /* @__PURE__ */ jsx(Box, { className: "p-4 rounded-lg bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("eventHandler.chainComplete") }) }),
40236
+ playState === "success" && /* @__PURE__ */ jsx(Box, { className: "p-4 rounded-container bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("eventHandler.chainComplete") }) }),
40237
40237
  playState === "fail" && /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
40238
- /* @__PURE__ */ jsx(Box, { className: "p-4 rounded-lg bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "body1", className: "text-foreground font-medium", children: t(encourageKey) }) }),
40239
- showHint && /* @__PURE__ */ jsx(Box, { className: "p-3 rounded-lg bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxs(HStack, { className: "items-start", gap: "xs", children: [
40238
+ /* @__PURE__ */ jsx(Box, { className: "p-4 rounded-container bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "body1", className: "text-foreground font-medium", children: t(encourageKey) }) }),
40239
+ showHint && /* @__PURE__ */ jsx(Box, { className: "p-3 rounded-container bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxs(HStack, { className: "items-start", gap: "xs", children: [
40240
40240
  /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-accent font-bold shrink-0", children: "\u{1F4A1} " + t("game.hint") + ":" }),
40241
40241
  /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-foreground", children: entity.hint })
40242
40242
  ] }) })
@@ -43409,7 +43409,7 @@ function NegotiatorBoard({
43409
43409
  backgroundPosition: "center"
43410
43410
  },
43411
43411
  children: /* @__PURE__ */ jsxs(VStack, { gap: "lg", className: "p-4", children: [
43412
- entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-lg", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-lg bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
43412
+ entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
43413
43413
  /* @__PURE__ */ jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
43414
43414
  /* @__PURE__ */ jsx(Typography, { variant: "h4", weight: "bold", children: entity.title }),
43415
43415
  /* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.description }),
@@ -43455,7 +43455,7 @@ function NegotiatorBoard({
43455
43455
  /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: "vs" }),
43456
43456
  /* @__PURE__ */ jsx(Typography, { variant: "caption", children: getActionLabel(round.opponentAction) }),
43457
43457
  /* @__PURE__ */ jsx(Icon, { icon: ArrowRight, size: "xs" }),
43458
- /* @__PURE__ */ jsxs(Typography, { variant: "caption", weight: "bold", className: "text-green-600", children: [
43458
+ /* @__PURE__ */ jsxs(Typography, { variant: "caption", weight: "bold", className: "text-success", children: [
43459
43459
  "+",
43460
43460
  round.playerPayoff
43461
43461
  ] }),
@@ -43466,7 +43466,7 @@ function NegotiatorBoard({
43466
43466
  ] }, round.round))
43467
43467
  ] }) }),
43468
43468
  isComplete && /* @__PURE__ */ jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", align: "center", children: [
43469
- /* @__PURE__ */ jsx(Icon, { icon: CheckCircle, size: "lg", className: won ? "text-green-600" : "text-red-600" }),
43469
+ /* @__PURE__ */ jsx(Icon, { icon: CheckCircle, size: "lg", className: won ? "text-success" : "text-error" }),
43470
43470
  /* @__PURE__ */ jsx(Typography, { variant: "body", weight: "bold", children: won ? entity.successMessage ?? t("negotiator.success") : entity.failMessage ?? t("negotiator.failed") }),
43471
43471
  /* @__PURE__ */ jsxs(Typography, { variant: "caption", className: "text-muted-foreground", children: [
43472
43472
  t("negotiator.finalScore"),
@@ -43476,7 +43476,7 @@ function NegotiatorBoard({
43476
43476
  entity.targetScore
43477
43477
  ] })
43478
43478
  ] }) }),
43479
- showHint && entity.hint && !won && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-yellow-500", children: /* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.hint }) }),
43479
+ showHint && entity.hint && !won && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.hint }) }),
43480
43480
  isComplete && !won && /* @__PURE__ */ jsx(HStack, { justify: "center", children: /* @__PURE__ */ jsx(Button, { variant: "primary", onClick: handleReset, children: t("negotiator.playAgain") }) })
43481
43481
  ] })
43482
43482
  }
@@ -46080,7 +46080,7 @@ function TraitSlot({
46080
46080
  display: "flex",
46081
46081
  position: "relative",
46082
46082
  className: cn(
46083
- "items-center justify-center rounded-lg transition-all duration-200",
46083
+ "items-center justify-center rounded-container transition-all duration-200 bg-card/50",
46084
46084
  !locked && "cursor-pointer",
46085
46085
  locked && "cursor-not-allowed opacity-50",
46086
46086
  isEmpty && !locked && "border-2 border-dashed border-border hover:border-muted-foreground",
@@ -46096,7 +46096,7 @@ function TraitSlot({
46096
46096
  style: {
46097
46097
  width: config.box,
46098
46098
  height: config.box,
46099
- backgroundColor: catColor?.bg || "rgba(30,41,59,0.5)",
46099
+ backgroundColor: catColor?.bg || void 0,
46100
46100
  borderColor: isDragOver ? void 0 : feedback === "correct" ? "var(--color-success)" : feedback === "wrong" ? "var(--color-error)" : catColor?.border || void 0
46101
46101
  },
46102
46102
  onClick: handleClick,
@@ -46125,7 +46125,7 @@ function TraitSlot({
46125
46125
  Box,
46126
46126
  {
46127
46127
  position: "absolute",
46128
- 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",
46128
+ 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",
46129
46129
  onClick: handleRemove,
46130
46130
  children: /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-foreground text-xs leading-none", children: "\xD7" })
46131
46131
  }
@@ -46135,14 +46135,14 @@ function TraitSlot({
46135
46135
  Box,
46136
46136
  {
46137
46137
  position: "absolute",
46138
- className: "-bottom-1 -left-1 w-4 h-4 bg-card rounded-full flex items-center justify-center border border-border",
46138
+ className: "-bottom-1 -left-1 w-4 h-4 bg-card rounded-pill flex items-center justify-center border border-border",
46139
46139
  children: /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-muted-foreground text-xs", children: slotNumber })
46140
46140
  }
46141
46141
  ),
46142
46142
  showTooltip && isHovered && itemMachine && !isEmpty && equippedItem && /* @__PURE__ */ jsxs(
46143
46143
  Box,
46144
46144
  {
46145
- className: "p-3 bg-background border border-border rounded-lg shadow-xl",
46145
+ className: "p-3 bg-background border border-border rounded-container shadow-xl",
46146
46146
  style: {
46147
46147
  ...getTooltipStyle(),
46148
46148
  minWidth: 200,
@@ -46392,12 +46392,12 @@ function SequencerBoard({
46392
46392
  backgroundPosition: "center"
46393
46393
  },
46394
46394
  children: [
46395
- entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-lg", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-lg bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
46395
+ entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
46396
46396
  /* @__PURE__ */ jsxs(VStack, { gap: "xs", children: [
46397
46397
  /* @__PURE__ */ jsx(Typography, { variant: "h4", className: "text-foreground", children: entity.title }),
46398
46398
  /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-muted-foreground", children: entity.description })
46399
46399
  ] }),
46400
- showHint && /* @__PURE__ */ jsx(Box, { className: "p-3 rounded-lg bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxs(HStack, { className: "items-start", gap: "xs", children: [
46400
+ showHint && /* @__PURE__ */ jsx(Box, { className: "p-3 rounded-container bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxs(HStack, { className: "items-start", gap: "xs", children: [
46401
46401
  /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-accent font-bold shrink-0", children: "\u{1F4A1} " + t("game.hint") + ":" }),
46402
46402
  /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-foreground", children: entity.hint })
46403
46403
  ] }) }),
@@ -46435,8 +46435,8 @@ function SequencerBoard({
46435
46435
  label: t("sequencer.dragActions")
46436
46436
  }
46437
46437
  ),
46438
- hasFeedback && playState === "idle" && attempts > 0 && /* @__PURE__ */ jsx(Box, { className: "p-3 rounded-lg bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-foreground", children: t(encourageKey) }) }),
46439
- playState === "success" && /* @__PURE__ */ jsx(Box, { className: "p-4 rounded-lg bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("sequencer.levelComplete") }) }),
46438
+ hasFeedback && playState === "idle" && attempts > 0 && /* @__PURE__ */ jsx(Box, { className: "p-3 rounded-container bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-foreground", children: t(encourageKey) }) }),
46439
+ playState === "success" && /* @__PURE__ */ jsx(Box, { className: "p-4 rounded-container bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("sequencer.levelComplete") }) }),
46440
46440
  /* @__PURE__ */ jsxs(HStack, { gap: "sm", children: [
46441
46441
  /* @__PURE__ */ jsx(
46442
46442
  Button,
@@ -47112,7 +47112,7 @@ function SimulationCanvas({
47112
47112
  ref: canvasRef,
47113
47113
  width,
47114
47114
  height,
47115
- className: "rounded-md block max-w-full h-auto"
47115
+ className: "rounded-container block max-w-full h-auto"
47116
47116
  }
47117
47117
  ) });
47118
47118
  }
@@ -47320,7 +47320,7 @@ function SimulatorBoard({
47320
47320
  backgroundPosition: "center"
47321
47321
  },
47322
47322
  children: /* @__PURE__ */ jsxs(VStack, { gap: "lg", className: "p-4", children: [
47323
- entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-lg", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-lg bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
47323
+ entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
47324
47324
  /* @__PURE__ */ jsx(Card, { className: "p-4", children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
47325
47325
  /* @__PURE__ */ jsx(Typography, { variant: "h4", weight: "bold", children: entity.title }),
47326
47326
  /* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.description })
@@ -47371,8 +47371,8 @@ function SimulatorBoard({
47371
47371
  entity.outputUnit
47372
47372
  ] }),
47373
47373
  submitted && /* @__PURE__ */ jsxs(HStack, { gap: "xs", align: "center", children: [
47374
- /* @__PURE__ */ jsx(Icon, { icon: isCorrect ? CheckCircle : XCircle, size: "sm", className: isCorrect ? "text-green-600" : "text-red-600" }),
47375
- /* @__PURE__ */ jsx(Typography, { variant: "body", className: isCorrect ? "text-green-600" : "text-red-600", children: isCorrect ? entity.successMessage ?? t("simulator.correct") : entity.failMessage ?? t("simulator.incorrect") })
47374
+ /* @__PURE__ */ jsx(Icon, { icon: isCorrect ? CheckCircle : XCircle, size: "sm", className: isCorrect ? "text-success" : "text-error" }),
47375
+ /* @__PURE__ */ jsx(Typography, { variant: "body", className: isCorrect ? "text-success" : "text-error", children: isCorrect ? entity.successMessage ?? t("simulator.correct") : entity.failMessage ?? t("simulator.incorrect") })
47376
47376
  ] }),
47377
47377
  /* @__PURE__ */ jsxs(Typography, { variant: "caption", className: "text-muted-foreground", children: [
47378
47378
  t("simulator.target"),
@@ -47385,7 +47385,7 @@ function SimulatorBoard({
47385
47385
  ")"
47386
47386
  ] })
47387
47387
  ] }) }),
47388
- showHint && entity.hint && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-yellow-500", children: /* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.hint }) }),
47388
+ showHint && entity.hint && /* @__PURE__ */ jsx(Card, { className: "p-4 border-l-4 border-l-warning", children: /* @__PURE__ */ jsx(Typography, { variant: "body", children: entity.hint }) }),
47389
47389
  /* @__PURE__ */ jsxs(HStack, { gap: "sm", justify: "center", children: [
47390
47390
  !submitted ? /* @__PURE__ */ jsxs(Button, { variant: "primary", onClick: handleSubmit, children: [
47391
47391
  /* @__PURE__ */ jsx(Icon, { icon: Play, size: "sm" }),
@@ -47786,7 +47786,7 @@ function StateNode2({
47786
47786
  position: "absolute",
47787
47787
  display: "flex",
47788
47788
  className: cn(
47789
- "items-center justify-center rounded-full border-3 transition-all cursor-pointer select-none",
47789
+ "items-center justify-center rounded-pill border-3 transition-all cursor-pointer select-none",
47790
47790
  "min-w-[80px] h-[80px] px-3",
47791
47791
  isCurrent && "bg-primary/20 border-primary shadow-lg shadow-primary/30 scale-110",
47792
47792
  isSelected && !isCurrent && "bg-accent/20 border-accent ring-2 ring-accent/50",
@@ -48099,7 +48099,7 @@ function StateArchitectBoard({
48099
48099
  backgroundPosition: "center"
48100
48100
  },
48101
48101
  children: [
48102
- entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-lg", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-lg bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
48102
+ entity.headerImage && !headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 overflow-hidden rounded-container", children: /* @__PURE__ */ jsx("img", { src: entity.headerImage, alt: "", onError: () => setHeaderError(true), className: "w-full h-full object-cover" }) }) : entity.headerImage && headerError ? /* @__PURE__ */ jsx(Box, { className: "w-full h-32 rounded-container bg-gradient-to-br from-muted to-accent opacity-60" }) : null,
48103
48103
  /* @__PURE__ */ jsxs(VStack, { gap: "xs", children: [
48104
48104
  /* @__PURE__ */ jsx(Typography, { variant: "h4", className: "text-foreground", children: entity.title }),
48105
48105
  /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-muted-foreground", children: entity.description }),
@@ -48118,7 +48118,7 @@ function StateArchitectBoard({
48118
48118
  Box,
48119
48119
  {
48120
48120
  position: "relative",
48121
- className: "rounded-lg border border-border bg-background overflow-hidden",
48121
+ className: "rounded-container border border-border bg-background overflow-hidden",
48122
48122
  style: { width: GRAPH_W, height: GRAPH_H },
48123
48123
  children: [
48124
48124
  /* @__PURE__ */ jsxs(
@@ -48177,7 +48177,7 @@ function StateArchitectBoard({
48177
48177
  children: selectedState ? t("stateArchitect.addTransition", { state: selectedState }) : t("stateArchitect.addTransitionPrompt")
48178
48178
  }
48179
48179
  ) }),
48180
- transitions.length > 0 && /* @__PURE__ */ jsxs(VStack, { gap: "xs", className: "p-3 rounded-lg bg-muted/50 border border-border", children: [
48180
+ transitions.length > 0 && /* @__PURE__ */ jsxs(VStack, { gap: "xs", className: "p-3 rounded-container bg-muted/50 border border-border", children: [
48181
48181
  /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-muted-foreground font-medium", children: t("stateArchitect.transitions", { count: transitions.length }) + ":" }),
48182
48182
  transitions.map((t2) => /* @__PURE__ */ jsxs(HStack, { className: "items-center text-xs", gap: "xs", children: [
48183
48183
  /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-foreground", children: t2.from }),
@@ -48211,7 +48211,7 @@ function StateArchitectBoard({
48211
48211
  variables
48212
48212
  }
48213
48213
  ),
48214
- testResults.length > 0 && /* @__PURE__ */ jsxs(VStack, { className: "p-3 rounded-lg bg-card border border-border", gap: "xs", children: [
48214
+ testResults.length > 0 && /* @__PURE__ */ jsxs(VStack, { className: "p-3 rounded-container bg-card border border-border", gap: "xs", children: [
48215
48215
  /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-muted-foreground font-medium", children: t("stateArchitect.testResults") + ":" }),
48216
48216
  testResults.map((r2, i) => /* @__PURE__ */ jsxs(HStack, { className: "items-center text-xs", gap: "xs", children: [
48217
48217
  /* @__PURE__ */ jsx(Typography, { variant: "caption", className: r2.passed ? "text-success" : "text-error", children: r2.passed ? "\u2714" : "\u2717" }),
@@ -48222,10 +48222,10 @@ function StateArchitectBoard({
48222
48222
  entity.showCodeView !== false && /* @__PURE__ */ jsx(CodeView, { data: codeData, label: "View Code" })
48223
48223
  ] })
48224
48224
  ] }),
48225
- playState === "success" && /* @__PURE__ */ jsx(Box, { className: "p-4 rounded-lg bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("stateArchitect.allPassed") }) }),
48225
+ playState === "success" && /* @__PURE__ */ jsx(Box, { className: "p-4 rounded-container bg-success/20 border border-success text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "h5", className: "text-success", children: entity.successMessage || t("stateArchitect.allPassed") }) }),
48226
48226
  playState === "fail" && /* @__PURE__ */ jsxs(VStack, { gap: "sm", children: [
48227
- /* @__PURE__ */ jsx(Box, { className: "p-4 rounded-lg bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "body1", className: "text-foreground font-medium", children: t(ENCOURAGEMENT_KEYS3[Math.min(attempts - 1, ENCOURAGEMENT_KEYS3.length - 1)] ?? ENCOURAGEMENT_KEYS3[0]) }) }),
48228
- attempts >= 3 && entity.hint && /* @__PURE__ */ jsx(Box, { className: "p-3 rounded-lg bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxs(HStack, { className: "items-start", gap: "xs", children: [
48227
+ /* @__PURE__ */ jsx(Box, { className: "p-4 rounded-container bg-warning/10 border border-warning/30 text-center", children: /* @__PURE__ */ jsx(Typography, { variant: "body1", className: "text-foreground font-medium", children: t(ENCOURAGEMENT_KEYS3[Math.min(attempts - 1, ENCOURAGEMENT_KEYS3.length - 1)] ?? ENCOURAGEMENT_KEYS3[0]) }) }),
48228
+ attempts >= 3 && entity.hint && /* @__PURE__ */ jsx(Box, { className: "p-3 rounded-container bg-accent/10 border border-accent/30", children: /* @__PURE__ */ jsxs(HStack, { className: "items-start", gap: "xs", children: [
48229
48229
  /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-accent font-bold shrink-0", children: "\u{1F4A1} " + t("game.hint") + ":" }),
48230
48230
  /* @__PURE__ */ jsx(Typography, { variant: "body2", className: "text-foreground", children: entity.hint })
48231
48231
  ] }) })
@@ -60853,6 +60853,40 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
60853
60853
  };
60854
60854
  }
60855
60855
 
60856
+ // runtime/orbitalsByTrait.ts
60857
+ function buildOrbitalsByTrait(schema, resolvedPages = []) {
60858
+ const map = {};
60859
+ if (!schema?.orbitals) return map;
60860
+ const pagePathToOrbital = {};
60861
+ for (const orb of schema.orbitals) {
60862
+ for (const traitRef of orb.traits ?? []) {
60863
+ let traitName;
60864
+ if (typeof traitRef === "string") {
60865
+ const parts = traitRef.split(".");
60866
+ traitName = parts[parts.length - 1];
60867
+ } else if (typeof traitRef.ref === "string") {
60868
+ const parts = traitRef.ref.split(".");
60869
+ traitName = traitRef.name ?? parts[parts.length - 1];
60870
+ } else if (typeof traitRef.name === "string") {
60871
+ traitName = traitRef.name;
60872
+ }
60873
+ if (traitName) map[traitName] = orb.name;
60874
+ }
60875
+ for (const pg of orb.pages ?? []) {
60876
+ const path = typeof pg === "string" ? pg : pg?.path;
60877
+ if (path) pagePathToOrbital[path] = orb.name;
60878
+ }
60879
+ }
60880
+ for (const page of resolvedPages) {
60881
+ const orbital = page.path ? pagePathToOrbital[page.path] : void 0;
60882
+ if (!orbital) continue;
60883
+ for (const traitName of page.traitNames) {
60884
+ if (traitName && !(traitName in map)) map[traitName] = orbital;
60885
+ }
60886
+ }
60887
+ return map;
60888
+ }
60889
+
60856
60890
  // runtime/OrbPreview.tsx
60857
60891
  init_EntitySchemaContext();
60858
60892
 
@@ -61611,27 +61645,16 @@ function SchemaRunner({ schema, serverUrl, transport, mockData, pageName, onNavi
61611
61645
  if (!orbitals) return [];
61612
61646
  return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
61613
61647
  }, [schema]);
61614
- const orbitalsByTrait = useMemo(() => {
61615
- const map = {};
61616
- const parsed = schema;
61617
- if (!parsed?.orbitals) return map;
61618
- for (const orb of parsed.orbitals) {
61619
- for (const traitRef of orb.traits) {
61620
- let traitName;
61621
- if (typeof traitRef === "string") {
61622
- const parts = traitRef.split(".");
61623
- traitName = parts[parts.length - 1];
61624
- } else if ("ref" in traitRef && typeof traitRef.ref === "string") {
61625
- const parts = traitRef.ref.split(".");
61626
- traitName = traitRef.name ?? parts[parts.length - 1];
61627
- } else if ("name" in traitRef && typeof traitRef.name === "string") {
61628
- traitName = traitRef.name;
61629
- }
61630
- if (traitName) map[traitName] = orb.name;
61631
- }
61632
- }
61633
- return map;
61634
- }, [schema]);
61648
+ const orbitalsByTrait = useMemo(
61649
+ () => buildOrbitalsByTrait(
61650
+ schema,
61651
+ ir ? Array.from(ir.pages.values()).map((p2) => ({
61652
+ path: p2.path,
61653
+ traitNames: p2.traits.map((b) => b.trait.name)
61654
+ })) : []
61655
+ ),
61656
+ [schema, ir]
61657
+ );
61635
61658
  const traitLinkedEntitiesMap = useMemo(() => {
61636
61659
  const map = /* @__PURE__ */ new Map();
61637
61660
  if (ir) {