|
34 | 34 | --sidebar-accent-foreground: rgba(23, 23, 23, 1); |
35 | 35 | --sidebar-border: rgba(229, 229, 229, 1); |
36 | 36 | --sidebar-ring: rgba(163, 163, 163, 1); |
| 37 | + /* Status (overridable per theme) */ |
| 38 | + --status-default: #737373; |
| 39 | + --status-neutral: #0ea5e9; |
| 40 | + --status-completed: #22c55e; |
| 41 | + --status-attention: #f59e0b; |
| 42 | + --status-danger: #ef4444; |
| 43 | + /* Elevation (wired through @theme; override per Tailor palettes) */ |
| 44 | + --semantic-shadow-xs: 0 1px 2px 0 rgb(15 23 42 / 0.06); |
| 45 | + --semantic-shadow-sm: 0 1px 3px 0 rgb(15 23 42 / 0.08), 0 1px 2px -1px rgb(15 23 42 / 0.08); |
| 46 | + --semantic-shadow-md: 0 4px 6px -1px rgb(15 23 42 / 0.09), 0 2px 4px -2px rgb(15 23 42 / 0.06); |
| 47 | + --semantic-shadow-lg: 0 10px 15px -3px rgb(15 23 42 / 0.12), 0 4px 6px -4px rgb(15 23 42 / 0.09); |
37 | 48 | } |
38 | 49 |
|
39 | 50 | .dark { |
|
62 | 73 | --chart-3: rgba(245, 158, 11, 1); |
63 | 74 | --chart-4: rgba(168, 85, 247, 1); |
64 | 75 | --chart-5: rgba(244, 63, 94, 1); |
65 | | - --sidebar: rgba(23, 23, 23, 1); |
| 76 | + /* Match --background so sidebar blends with the app surface. */ |
| 77 | + --sidebar: rgba(10, 10, 10, 1); |
66 | 78 | --sidebar-foreground: rgba(250, 250, 250, 1); |
67 | 79 | --sidebar-primary: rgba(29, 78, 216, 1); |
68 | 80 | --sidebar-primary-foreground: rgba(250, 250, 250, 1); |
69 | 81 | --sidebar-accent: rgba(38, 38, 38, 1); |
70 | 82 | --sidebar-accent-foreground: rgba(250, 250, 250, 1); |
71 | 83 | --sidebar-border: rgba(255, 255, 255, 0.10000000149011612); |
72 | 84 | --sidebar-ring: rgba(82, 82, 82, 1); |
| 85 | + --semantic-shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.35); |
| 86 | + --semantic-shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.38), 0 1px 2px -1px rgb(0 0 0 / 0.32); |
| 87 | + --semantic-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.35), 0 2px 4px -2px rgb(0 0 0 / 0.28); |
| 88 | + --semantic-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.42), 0 4px 6px -4px rgb(0 0 0 / 0.35); |
| 89 | +} |
| 90 | + |
| 91 | +/** |
| 92 | + * Tailor brand — light palette (Tailor brand guidelines). |
| 93 | + * Primary: #535AE8 · Text: #10122B · White: #FFFFFF |
| 94 | + * Secondary: Deep Cyan #00979C · Dark Green #013742 · Off-White #F8F3E4 · Neutral #EEEEEE · Light Violet #E2D4FE |
| 95 | + */ |
| 96 | +html[data-theme="cream"] { |
| 97 | + color-scheme: light; |
| 98 | + /* Off-white app shell; white cards for elevation */ |
| 99 | + --background: rgba(248, 243, 228, 1); |
| 100 | + /* Shell gradient stops (globals.css): light cream tint at top → white at bottom. */ |
| 101 | + --shell-gradient-start: color-mix(in srgb, var(--background) 55%, rgb(255, 255, 255)); |
| 102 | + --shell-gradient-end: rgb(255, 255, 255); |
| 103 | + --foreground: rgba(16, 18, 43, 1); |
| 104 | + --card: rgba(255, 255, 255, 1); |
| 105 | + --card-foreground: rgba(16, 18, 43, 1); |
| 106 | + --popover: rgba(255, 255, 255, 1); |
| 107 | + --popover-foreground: rgba(16, 18, 43, 1); |
| 108 | + --primary: rgba(83, 90, 232, 1); |
| 109 | + --primary-foreground: rgba(255, 255, 255, 1); |
| 110 | + /* Light violet surfaces; near-black text (match bloom; drop the brand dark-green pairing). */ |
| 111 | + --secondary: rgba(226, 212, 254, 1); |
| 112 | + --secondary-foreground: rgba(16, 18, 43, 1); |
| 113 | + /* Row hovers / `bg-muted`: subtle neutral lift (same alpha family as `--border`), not a second brand tint. */ |
| 114 | + --muted: rgba(0, 0, 0, 0.08); |
| 115 | + --muted-foreground: rgba(16, 18, 43, 0.72); |
| 116 | + --accent: rgba(226, 212, 254, 1); |
| 117 | + --accent-foreground: rgba(16, 18, 43, 1); |
| 118 | + /* Destructive matches default light theme so the brand red stays consistent across light/cream/bloom. */ |
| 119 | + --destructive: rgba(220, 38, 38, 1); |
| 120 | + --destructive-foreground: rgba(254, 242, 242, 1); |
| 121 | + --border: rgba(0, 0, 0, 0.08); |
| 122 | + --input: rgba(0, 0, 0, 0.08); |
| 123 | + --ring: rgba(83, 90, 232, 0.45); |
| 124 | + --chart-1: rgba(83, 90, 232, 1); |
| 125 | + --chart-2: rgba(0, 151, 156, 1); |
| 126 | + --chart-3: rgba(1, 55, 66, 1); |
| 127 | + --chart-4: rgba(110, 95, 195, 1); |
| 128 | + --chart-5: rgba(217, 119, 6, 1); |
| 129 | + /* Larger corner scale; squircle overlays via globals.css where supported */ |
| 130 | + --radius: 1rem; |
| 131 | + --sidebar: rgba(248, 243, 228, 1); |
| 132 | + --sidebar-foreground: rgba(16, 18, 43, 1); |
| 133 | + --sidebar-primary: rgba(83, 90, 232, 1); |
| 134 | + --sidebar-primary-foreground: rgba(255, 255, 255, 1); |
| 135 | + --sidebar-accent: rgba(226, 212, 254, 1); |
| 136 | + --sidebar-accent-foreground: rgba(16, 18, 43, 1); |
| 137 | + --sidebar-border: rgba(0, 0, 0, 0.08); |
| 138 | + --sidebar-ring: rgba(83, 90, 232, 0.45); |
| 139 | + --status-default: rgba(16, 18, 43, 0.55); |
| 140 | + --status-neutral: #00979c; |
| 141 | + --status-completed: #00979c; |
| 142 | + --status-attention: #d97706; |
| 143 | + --status-danger: #dc2626; |
| 144 | + --semantic-shadow-xs: 0 1px 2px 0 rgb(16 18 43 / 0.07); |
| 145 | + --semantic-shadow-sm: 0 1px 3px 0 rgb(16 18 43 / 0.08), 0 1px 2px -1px rgb(16 18 43 / 0.06); |
| 146 | + --semantic-shadow-md: 0 4px 6px -1px rgb(16 18 43 / 0.1), 0 2px 4px -2px rgb(16 18 43 / 0.08); |
| 147 | + --semantic-shadow-lg: 0 10px 15px -3px rgb(16 18 43 / 0.12), 0 4px 6px -4px rgb(83 90 232 / 0.1); |
| 148 | +} |
| 149 | + |
| 150 | +/** |
| 151 | + * Bloom — light lavender app shell; cream secondary/accent surfaces (inverse of Tailor light). |
| 152 | + */ |
| 153 | +html[data-theme="bloom"] { |
| 154 | + color-scheme: light; |
| 155 | + --background: rgba(239, 232, 255, 1); |
| 156 | + /* Shell gradient stops (globals.css): light lavender tint at top → white at bottom. */ |
| 157 | + --shell-gradient-start: color-mix(in srgb, var(--background) 55%, rgb(255, 255, 255)); |
| 158 | + --shell-gradient-end: rgb(255, 255, 255); |
| 159 | + --foreground: rgba(16, 18, 43, 1); |
| 160 | + --card: rgba(255, 255, 255, 1); |
| 161 | + --card-foreground: rgba(16, 18, 43, 1); |
| 162 | + --popover: rgba(255, 255, 255, 1); |
| 163 | + --popover-foreground: rgba(16, 18, 43, 1); |
| 164 | + --primary: rgba(83, 90, 232, 1); |
| 165 | + --primary-foreground: rgba(255, 255, 255, 1); |
| 166 | + /* Match light theme — neutral pale grey reads as a soft pill on the lavender shell. */ |
| 167 | + --secondary: rgba(245, 245, 245, 1); |
| 168 | + --secondary-foreground: rgba(23, 23, 23, 1); |
| 169 | + /* Row hovers / `bg-muted`: subtle neutral lift (same alpha family as `--border`). */ |
| 170 | + --muted: rgba(0, 0, 0, 0.08); |
| 171 | + --muted-foreground: rgba(16, 18, 43, 0.72); |
| 172 | + --accent: rgba(248, 243, 228, 1); |
| 173 | + --accent-foreground: rgba(16, 18, 43, 1); |
| 174 | + /* Destructive matches default light theme so the brand red stays consistent across light/cream/bloom. */ |
| 175 | + --destructive: rgba(220, 38, 38, 1); |
| 176 | + --destructive-foreground: rgba(254, 242, 242, 1); |
| 177 | + --border: rgba(0, 0, 0, 0.08); |
| 178 | + --input: rgba(0, 0, 0, 0.08); |
| 179 | + --ring: rgba(83, 90, 232, 0.45); |
| 180 | + --chart-1: rgba(83, 90, 232, 1); |
| 181 | + --chart-2: rgba(0, 151, 156, 1); |
| 182 | + --chart-3: rgba(1, 55, 66, 1); |
| 183 | + --chart-4: rgba(110, 95, 195, 1); |
| 184 | + --chart-5: rgba(217, 119, 6, 1); |
| 185 | + --radius: 1rem; |
| 186 | + --sidebar: rgba(239, 232, 255, 1); |
| 187 | + --sidebar-foreground: rgba(16, 18, 43, 1); |
| 188 | + --sidebar-primary: rgba(83, 90, 232, 1); |
| 189 | + --sidebar-primary-foreground: rgba(255, 255, 255, 1); |
| 190 | + /* White elevated row on lavender shell (readable vs lavender-on-lavender) */ |
| 191 | + --sidebar-accent: rgba(255, 255, 255, 1); |
| 192 | + --sidebar-accent-foreground: rgba(16, 18, 43, 1); |
| 193 | + --sidebar-border: rgba(0, 0, 0, 0.08); |
| 194 | + --sidebar-ring: rgba(83, 90, 232, 0.45); |
| 195 | + --status-default: rgba(16, 18, 43, 0.55); |
| 196 | + /* Bloom: teal + violet-tint foregrounds; amber + dusty rose harmonize with shell */ |
| 197 | + --status-neutral: #0b8c9a; |
| 198 | + --status-completed: #0d7668; |
| 199 | + --status-attention: #ae6f12; |
| 200 | + --status-danger: #ae2438; |
| 201 | + --semantic-shadow-xs: 0 1px 2px 0 rgb(16 18 43 / 0.07); |
| 202 | + --semantic-shadow-sm: 0 1px 3px 0 rgb(16 18 43 / 0.08), 0 1px 2px -1px rgb(16 18 43 / 0.06); |
| 203 | + --semantic-shadow-md: 0 4px 6px -1px rgb(16 18 43 / 0.1), 0 2px 4px -2px rgb(16 18 43 / 0.08); |
| 204 | + --semantic-shadow-lg: 0 10px 15px -3px rgb(16 18 43 / 0.12), 0 4px 6px -4px rgb(83 90 232 / 0.1); |
73 | 205 | } |
74 | 206 |
|
75 | 207 | @theme inline { |
|
110 | 242 | --color-sidebar-border: var(--sidebar-border); |
111 | 243 | --color-sidebar-ring: var(--sidebar-ring); |
112 | 244 |
|
113 | | - /* Statuses */ |
114 | | - --color-status-default: #737373; |
115 | | - --color-status-neutral: #0ea5e9; |
116 | | - --color-status-completed: #22c55e; |
117 | | - --color-status-attention: #f59e0b; |
118 | | - --color-status-danger: #ef4444; |
| 245 | + --color-status-default: var(--status-default); |
| 246 | + --color-status-neutral: var(--status-neutral); |
| 247 | + --color-status-completed: var(--status-completed); |
| 248 | + --color-status-attention: var(--status-attention); |
| 249 | + --color-status-danger: var(--status-danger); |
| 250 | + |
| 251 | + --shadow-xs: var(--semantic-shadow-xs); |
| 252 | + --shadow-sm: var(--semantic-shadow-sm); |
| 253 | + --shadow-md: var(--semantic-shadow-md); |
| 254 | + --shadow-lg: var(--semantic-shadow-lg); |
119 | 255 | } |
0 commit comments