opaline 0.4.1

A token-based theme engine for Rust applications
Documentation
# SilkCircuit Dawn — Light theme elegance
# A light variant with purple accents on a soft lavender-white background

[meta]
name = "SilkCircuit Dawn"
author = "hyperb1iss"
variant = "light"
version = "1.0"
description = "Light theme with purple accents on lavender-white backgrounds"

# ═══════════════════════════════════════════════════════════════════════════════
# Palette — Raw color primitives
# ═══════════════════════════════════════════════════════════════════════════════

[palette]
# Core brand colors (darker for light theme)
purple_500 = "#7e2bd5"
cyan_400 = "#007f8e"
coral_400 = "#b40077"
yellow_400 = "#a88600"
green_400 = "#1f8752"
red_400 = "#c1272d"

# Extended palette
purple_400 = "#9e4df3"
purple_600 = "#5c1a9e"
cyan_500 = "#00666e"
magenta_400 = "#c04a8f"
purple_300 = "#b87aee"
pink_400 = "#d3549a"
pink_300 = "#e07bb5"

# Backgrounds (light lavender)
gray_950 = "#faf8ff"
gray_900 = "#f1ecff"
gray_850 = "#efeaff"
gray_800 = "#e1daf7"
gray_750 = "#d9d2f2"
gray_700 = "#d0c8eb"
gray_600 = "#c5bce0"

# Text colors (darker for light backgrounds)
gray_50 = "#2b2540"
gray_200 = "#3d3558"
gray_400 = "#5a4d78"
gray_500 = "#8b6ab8"

# ═══════════════════════════════════════════════════════════════════════════════
# Tokens — Semantic color assignments
# ═══════════════════════════════════════════════════════════════════════════════

[tokens]
# Text hierarchy (darker text on light)
"text.primary" = "gray_50"
"text.secondary" = "gray_200"
"text.muted" = "gray_400"
"text.dim" = "gray_500"

# Backgrounds (light)
"bg.base" = "gray_950"
"bg.panel" = "gray_900"
"bg.code" = "gray_850"
"bg.highlight" = "gray_800"
"bg.elevated" = "gray_750"
"bg.active" = "gray_700"
"bg.selection" = "gray_600"

# Accent colors
"accent.primary" = "purple_500"
"accent.secondary" = "cyan_400"
"accent.tertiary" = "coral_400"
"accent.deep" = "purple_400"

# Semantic colors
success = "green_400"
error = "red_400"
warning = "yellow_400"
info = "#2952cc"

# UI elements
"border.focused" = "purple_500"
"border.unfocused" = "gray_500"

# Code elements
"code.keyword" = "purple_500"
"code.function" = "cyan_400"
"code.string" = "pink_400"
"code.number" = "coral_400"
"code.comment" = "gray_500"
"code.type" = "yellow_400"
"code.line_number" = "gray_500"

# ═══════════════════════════════════════════════════════════════════════════════
# Styles — Composed styles with modifiers
# ═══════════════════════════════════════════════════════════════════════════════

[styles]
# Keywords and importance
keyword = { fg = "accent.primary", bold = true }

# Line numbers
line_number = { fg = "code.line_number" }

# Cursor line
cursor_line = { bg = "bg.highlight" }

# Selection states
selected = { fg = "accent.secondary", bg = "bg.highlight" }
active_selected = { fg = "accent.primary", bg = "bg.active", bold = true }

# Borders
focused_border = { fg = "border.focused" }
unfocused_border = { fg = "border.unfocused" }

# Status messages
success_style = { fg = "success" }
error_style = { fg = "error" }
warning_style = { fg = "warning" }
info_style = { fg = "info" }

# Text styles
dimmed = { fg = "text.dim" }
muted = { fg = "text.muted" }

# Inline code
inline_code = { fg = "purple_500", bg = "bg.code" }

# ═══════════════════════════════════════════════════════════════════════════════
# Gradients — Color transitions
# ═══════════════════════════════════════════════════════════════════════════════

[gradients]
# Primary brand gradient: Deep Purple -> Teal
primary = ["purple_500", "cyan_400"]

# Warm accent gradient: Magenta -> Amber
warm = ["coral_400", "yellow_400"]

# Success gradient: Forest Green -> Teal
success_gradient = ["green_400", "cyan_400"]

# Error gradient: Dark Red -> Magenta
error_gradient = ["red_400", "coral_400"]

# Aurora gradient (5-stop): Dawn spectrum
aurora = ["purple_500", "#9e4df3", "#c04a8f", "#007f8e", "cyan_400"]