Appearance

Personalize your experience

Mode
Accent Color
Direction
All Docs/QuaScript//
QuaScript logo

QuaScript Documentation

Language guide, engine API, 601 builtins and the preset library · v3.0.0-phase1

color

Palette explorer

Click sets
50
100
200
300
400
500
600
700
800
900
950
red
tomato
coral
brown
bronze
copper
coffee
orange
sand
amber
yellow
gold
chartreuse
olive
lime
green
emerald
mint
teal
aqua
cyan
sky
navy
slate
blue
indigo
violet
lavender
purple
plum
fuchsia
magenta
pink
ruby
crimson
rose
neutral
zinc
stone
sage
gray
charcoal
mauve
silver
color.sky.400#38bdf8
namecolor.sky.400hex#38bdf8rgb56, 189, 248hsl198°, 93%, 60%
Aa 123.45
on black: 9.80 · AAA
Aa 123.45
on white: 2.14 · fail
Transparency (color.translucent(c, t), 0 = opaque)
Gradient A → Bcolor.sky.400 → color.rose.500
Use the selection
selection.qs
analysis "Palette: sky" { overlay = false }

m = ta.rsi(close, 14) - 50
heat = color.gradient(m, -20, 20, color.rose.500, color.sky.400)
render.histogram(m, "Momentum", color = heat)
render.line(ta.ema(m, 9), "Signal", color = color.sky.400, width = 2)
render.area(m, "Area", base = 0, color = color.translucent(color.sky.400, 85))
Rainbow at shade
rainbow_ribbon.qs
analysis "Rainbow ribbon" { overlay = true }

// one moving average per family, in rainbow order
render.line(ta.ema(close, 8), "EMA 8", color = color.red.400)
render.line(ta.ema(close, 14), "EMA 14", color = color.coral.400)
render.line(ta.ema(close, 20), "EMA 20", color = color.bronze.400)
render.line(ta.ema(close, 26), "EMA 26", color = color.coffee.400)
render.line(ta.ema(close, 32), "EMA 32", color = color.sand.400)
render.line(ta.ema(close, 38), "EMA 38", color = color.yellow.400)
render.line(ta.ema(close, 44), "EMA 44", color = color.chartreuse.400)
render.line(ta.ema(close, 50), "EMA 50", color = color.lime.400)

Generated from the engine catalog by tools/gen-docs.mjs; do not edit.

Palette constants: color.<family>.<shade> for 44 families (slate, gray, zinc, neutral, stone, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose, gold, silver, bronze, copper, navy, charcoal, brown, coffee, sand, olive, sage, mint, chartreuse, aqua, coral, tomato, crimson, ruby, magenta, plum, lavender, mauve) and shades 50, 100, 200 … 900, 950.

The palette
The palette

Palette values

Family50100200300400500600700800900950
slate#f8fafc#f1f5f9#e2e8f0#cbd5e1#94a3b8#64748b#475569#334155#1e293b#0f172a#020617
gray#f9fafb#f3f4f6#e5e7eb#d1d5db#9ca3af#6b7280#4b5563#374151#1f2937#111827#030712
zinc#fafafa#f4f4f5#e4e4e7#d4d4d8#a1a1aa#71717a#52525b#3f3f46#27272a#18181b#09090b
neutral#fafafa#f5f5f5#e5e5e5#d4d4d4#a3a3a3#737373#525252#404040#262626#171717#0a0a0a
stone#fafaf9#f5f5f4#e7e5e4#d6d3d1#a8a29e#78716c#57534e#44403c#292524#1c1917#0c0a09
red#fef2f2#fee2e2#fecaca#fca5a5#f87171#ef4444#dc2626#b91c1c#991b1b#7f1d1d#450a0a
orange#fff7ed#ffedd5#fed7aa#fdba74#fb923c#f97316#ea580c#c2410c#9a3412#7c2d12#431407
amber#fffbeb#fef3c7#fde68a#fcd34d#fbbf24#f59e0b#d97706#b45309#92400e#78350f#451a03
yellow#fefce8#fef9c3#fef08a#fde047#facc15#eab308#ca8a04#a16207#854d0e#713f12#422006
lime#f7fee7#ecfccb#d9f99d#bef264#a3e635#84cc16#65a30d#4d7c0f#3f6212#365314#1a2e05
green#f0fdf4#dcfce7#bbf7d0#86efac#4ade80#22c55e#16a34a#15803d#166534#14532d#052e16
emerald#ecfdf5#d1fae5#a7f3d0#6ee7b7#34d399#10b981#059669#047857#065f46#064e3b#022c22
teal#f0fdfa#ccfbf1#99f6e4#5eead4#2dd4bf#14b8a6#0d9488#0f766e#115e59#134e4a#042f2e
cyan#ecfeff#cffafe#a5f3fc#67e8f9#22d3ee#06b6d4#0891b2#0e7490#155e75#164e63#083344
sky#f0f9ff#e0f2fe#bae6fd#7dd3fc#38bdf8#0ea5e9#0284c7#0369a1#075985#0c4a6e#082f49
blue#eff6ff#dbeafe#bfdbfe#93c5fd#60a5fa#3b82f6#2563eb#1d4ed8#1e40af#1e3a8a#172554
indigo#eef2ff#e0e7ff#c7d2fe#a5b4fc#818cf8#6366f1#4f46e5#4338ca#3730a3#312e81#1e1b4b
violet#f5f3ff#ede9fe#ddd6fe#c4b5fd#a78bfa#8b5cf6#7c3aed#6d28d9#5b21b6#4c1d95#2e1065
purple#faf5ff#f3e8ff#e9d5ff#d8b4fe#c084fc#a855f7#9333ea#7e22ce#6b21a8#581c87#3b0764
fuchsia#fdf4ff#fae8ff#f5d0fe#f0abfc#e879f9#d946ef#c026d3#a21caf#86198f#701a75#4a044e
pink#fdf2f8#fce7f3#fbcfe8#f9a8d4#f472b6#ec4899#db2777#be185d#9d174d#831843#500724
rose#fff1f2#ffe4e6#fecdd3#fda4af#fb7185#f43f5e#e11d48#be123c#9f1239#881337#4c0519
gold#fffbeb#fef08a#fde047#facc15#eab308#d4af37#b8860b#996515#78510d#54390b#332205
silver#f8f9fa#f1f3f5#e9ecef#dee2e6#ced4da#adb5bd#868e96#495057#343a40#212529#121416
bronze#fdf8f6#f2e8e5#e4d2cc#d1b4ab#ba9285#a17464#8c5e50#72493e#5c3a31#4d3129#2a1914
copper#fdf7f4#f8ede6#f0d9cb#e3beaa#cf997f#b87355#a15d40#834a33#6b3c29#573223#32190f
navy#f0f4f8#d9e2ec#bcccdc#9fb3c8#627d98#334e68#243b53#102a43#0b1f33#061424#030a14
charcoal#f5f5f6#e5e6e8#cdcfd3#a9adb5#7d828e#5b616e#464a55#383b44#2a2c33#1d1e23#0f0f12
brown#fdf8f6#f2e8e5#eaddd7#d0b8ac#b08974#8d5b4c#77493b#623b2f#523228#442a22#281712
coffee#fbf8f6#f4ece7#e6d6cd#d2b8a8#b3917c#8d6750#734f3b#5e3e2d#4e3325#422c20#26170f
sand#fcfbf9#f6f3ee#ede6dc#ded2c2#c7b59f#a8947c#8f7a63#73614e#5e4f41#4e4238#2e261f
olive#fbfcf8#f4f6ec#e7ebda#d4dcbe#b5c496#8f9e6d#728052#596440#474f34#3d432e#202417
sage#f6f7f6#e3e7e4#c8d1cb#a9b7ad#8b9c90#6e7f73#57655b#46514a#3a423d#323834#1b1f1d
mint#f0fdf9#ccfbef#99f6df#5eead0#2dd4b7#14b89d#0d947e#0f7665#115e52#134e44#042f29
chartreuse#fbfee7#f5fec2#ecfd8a#dcfb49#c4f114#a3d900#7fae00#5f8300#4c6606#40550a#213000
aqua#f0fdff#dcf8fc#b5f0f8#7ee3f1#3ecfe5#00bcd4#009cb3#007d91#046474#085360#02353f
coral#fff7f5#ffeee9#fed8ce#fcbda9#f99576#f06a4b#db4d2c#b63a1e#93301a#792b1a#431309
tomato#fff5f3#ffe7e2#fed2c8#fdb1a2#f8816a#ef4f30#d93315#b4250c#92200d#791f11#440b03
crimson#fff1f2#ffe1e4#fecdd3#fda4af#f7556d#dc143c#b90e31#960926#77071d#5a0415#38020c
ruby#fff0f3#ffccd5#ffb3c1#ff8fa3#ff4d6d#c9184a#a4133c#800f2f#590d22#3c0817#24040d
magenta#fdf2f9#fce7f3#f9cee5#f4a4cd#eb67a9#d92683#bd166b#9c1055#7e1144#67133a#3e041f
plum#fbf7fc#f5ebf8#ebd6f2#dcb8e7#c490d6#a665be#8c4da3#733c85#5f336d#4f2c59#33173c
lavender#faf7fe#f2ebfd#e6d8fb#d3bbf7#b895f0#9b6ee5#824fd4#6e3bbe#5b2f9f#4b2881#2e1454
mauve#faf8f9#f2edf0#e4dae0#d0c1cb#b5a1ae#998392#7e6977#665460#554650#483c44#2c2229

Constants

NameValueMeaning
color.black0Black.
color.transparent16777216Fully transparent.
color.white16777215White.

color.alpha

script.qs
color.alpha(color) -> num

Transparency of the color (0..100).

ArgumentKindDefaultNotes
colorcolorrequired

color.complement

script.qs
color.complement(color) -> color

Complementary hue.

ArgumentKindDefaultNotes
colorcolorrequired

color.contrast

script.qs
color.contrast(color1, color2) -> num

Contrast ratio of two colors (1 .. 21).

ArgumentKindDefaultNotes
color1colorrequired
color2colorrequired

color.darken

script.qs
color.darken(color, amount = 50) -> color

Mix towards black by amount percent.

ArgumentKindDefaultNotes
colorcolorrequired
amountnum50

color.gradient

script.qs
color.gradient(x, min, max, color1, color2) -> color

Blend from color1 (x <= min) to color2 (x >= max).

ArgumentKindDefaultNotes
xnumrequired
minnumrequired
maxnumrequired
color1colorrequired
color2colorrequired

color.grayscale

script.qs
color.grayscale(color) -> color

Luminance-preserving gray.

ArgumentKindDefaultNotes
colorcolorrequired

color.harmonics

script.qs
color.harmonics(color, scheme = 0) -> color

Harmonic partner hue (0 triad, 1 analogous, 2 split complement, 3 tetrad).

ArgumentKindDefaultNotes
colorcolorrequired
schemeint0

color.hsv

script.qs
color.hsv(h, s, v) -> color

Color from hue (0..360), saturation and value (0..1).

ArgumentKindDefaultNotes
hnumrequired
snumrequired
vnumrequired

color.invert

script.qs
color.invert(color) -> color

Inverted channels.

ArgumentKindDefaultNotes
colorcolorrequired

color.lighten

script.qs
color.lighten(color, amount = 50) -> color

Mix towards white by amount percent.

ArgumentKindDefaultNotes
colorcolorrequired
amountnum50

color.ramp

script.qs
color.ramp(x, min, max, palette = viridis, transparency = 0) -> color

Color of x on a multi-stop palette, scaled from min (first stop) to max (last stop). Swap min and max to reverse it.

ArgumentKindDefaultNotes
xnumrequired
minnumrequired
maxnumrequired
palettetextviridisone of viridis, magma, inferno, plasma, cividis, turbo, spectral, coolwarm, terrain, pnl
transparencynum0
script.qs
render.histogram(z, "Z", color = color.ramp(z, -3, 3, "coolwarm"))

color.readable

script.qs
color.readable(color) -> color

Black or white, whichever reads better on the color.

ArgumentKindDefaultNotes
colorcolorrequired

color.rgb

script.qs
color.rgb(r, g, b, transparency = 0) -> color

Color from 0..255 channels and 0..100 transparency.

ArgumentKindDefaultNotes
rnumrequired
gnumrequired
bnumrequired
transparencynum0

color.translucent

script.qs
color.translucent(color, transparency) -> color

The color with a transparency of 0 (opaque) .. 100 (invisible).

ArgumentKindDefaultNotes
colorcolorrequired
transparencynumrequired

© 2026 Quatick Technologies. All rights reserved.