/* ══════════════════════════════════════════════════════════════
   LOGIFUNGE syntax colors for Ace
   Layered on top of ace/theme/tomorrow_night; only recolors the
   token classes emitted by ace/mode/logifunge. Palette picked to
   read clearly against #111/tomorrow_night while keeping the
   site's amber (#fa0) accent reserved for movement — the "flow"
   of the IP is the most important thing to track at a glance.
   ══════════════════════════════════════════════════════════════ */

/* Movement: > < ^ v ? #  — amber, matches the site accent color
   used for direction indicator + the active-cell IP highlight */
.ace_support.ace_function.ace_movement.ace_logifunge {
  color: #ffaa00;
  font-weight: bold;
}

/* Logic gates: & | ~ @ N R X — cyan, the "core compute" of the language */
.ace_keyword.ace_operator.ace_logic.ace_logifunge {
  color: #5ce1e6;
  font-weight: bold;
}

/* Exponents: P Q — teal, close cousin of logic/math but distinct */
.ace_keyword.ace_operator.ace_exponent.ace_logifunge {
  color: #3fb8af;
}

/* Elbow redirect: E — same family as movement but a conditional
   variant, so amber hue with a magenta tint to flag "conditional" */
.ace_support.ace_function.ace_redirect.ace_logifunge {
  color: #ff8fd6;
  font-weight: bold;
}

/* Memory: M S L — violet */
.ace_variable.ace_parameter.ace_memory.ace_logifunge {
  color: #b48ead;
}

/* Output: . = , ' — green, matches the site's text-output color (#0f8) */
.ace_constant.ace_character.ace_output.ace_logifunge {
  color: #33ff99;
}

/* Control flow / end: _ ! g p % — red-orange, these alter or halt execution */
.ace_keyword.ace_control.ace_flow.ace_logifunge {
  color: #ff6b6b;
  font-weight: bold;
}

/* Subroutines: D[name] C[name] r — blue */
.ace_keyword.ace_control.ace_subroutine.ace_logifunge {
  color: #6ab0f3;
  font-weight: bold;
}

/* Loops: {[name] }[name] — yellow-green */
.ace_keyword.ace_control.ace_loop.ace_logifunge {
  color: #b5e061;
  font-weight: bold;
}

/* For-loops: ([name] )[name] G — lime, closely related to loops
   but visually distinguishable */
.ace_keyword.ace_control.ace_forloop.ace_logifunge {
  color: #a8e066;
  font-weight: bold;
}

/* Bracket punctuation around labels/numeric literals — dim gray so
   the name/value inside pops instead of the brackets themselves */
.ace_paren.ace_logifunge {
  color: #666;
}

/* Label names inside D[..] C[..] {[..] }[..] ([..] )[..] — bright
   white with underline so multi-char names read as identifiers */
.ace_entity.ace_name.ace_label.ace_logifunge {
  color: #f5f5f5;
  text-decoration: underline;
  text-decoration-color: #444;
}

/* Numeric literals: bare digits 0-9 and [n] — gold */
.ace_constant.ace_numeric.ace_logifunge {
  color: #ffcc66;
}

/* Stack manipulation: : \ $ W + - * / l U — muted blue-gray */
.ace_keyword.ace_operator.ace_stack.ace_logifunge {
  color: #7a9cc6;
}

/* String mode contents: " ... " — standard string green-yellow */
.ace_string.ace_logifunge {
  color: #d4d47a;
  font-style: italic;
}

/* Author comment convention: lines starting with ; — dim italic gray */
.ace_comment.ace_line.ace_logifunge {
  color: #fff;
  font-style: italic;
}

/* Any character outside the defined ISA — flagged so typos in a
   dense 2D grid don't silently blend in as a no-op */
.ace_invalid.ace_illegal.ace_logifunge {
  color: #ff3860;
  background: rgba(255, 56, 96, 0.15);
}
