@function --get-digit(--x <integer>, --place <integer>: 1, --base <integer>: 10) returns <integer> {
  result: mod(round(down, var(--x) / var(--place)), var(--base));
}

@function --get-bit(--x <integer>, --k <integer>: 0) returns <integer> {
  result: --get-digit(var(--x), pow(2, var(--k)), 2);
}

@function --len(--num <integer>) returns <integer> {
  result: if(
    style(--num: 0): 1;
    else: calc(1 + round(down, log(abs(var(--num)), 10)));
  );
}

@function --random(--range <number>, --num <number>, --seed <number>: 0) returns <number> {
  result: mod(524287 * sin(999983 * (var(--num) + 5007)) * (91 + 29 * cos(524287 * (var(--seed) + 130))), var(--range));
}

@function --comma(--value:) {
  result: if(
    style(--value:):;
    else: var(--value) ,;
  );
}

@counter-style decimal-abs {
  system: extends decimal;
  negative: '';
}

@counter-style -none {
  system: cyclic;
  symbols: '';
}
