| 238 |
238 |
|
/* === NEOBRUTE DESIGN SYSTEM === */
|
| 239 |
239 |
|
/* Clean neobrutalism: bold borders, flat by default, offset shadows on actions + floats */
|
| 240 |
240 |
|
|
| 241 |
|
- |
/* Neo-brutalist color palette */
|
| 242 |
|
- |
/* Themeable: mapped by js/themes.js. Defaults below are the "goingson" (GoingsOn) theme. */
|
| 243 |
|
- |
--bg-primary: #E0E4FA; /* themeable: background.primary */
|
| 244 |
|
- |
--bg-secondary: #CDD3F0; /* themeable: background.secondary */
|
| 245 |
|
- |
--bg-tertiary: #BAC2E6; /* themeable: background.tertiary */
|
| 246 |
|
- |
--bg-card: #FFFFFF; /* themeable: background.surface */
|
| 247 |
|
- |
|
| 248 |
|
- |
--text-primary: #000000; /* themeable: foreground.primary */
|
| 249 |
|
- |
--text-secondary: #2D2D2D; /* themeable: foreground.secondary */
|
| 250 |
|
- |
--text-muted: #6B6B6B; /* themeable: foreground.muted (WCAG AA 5.7:1 on white) */
|
| 251 |
|
- |
|
| 252 |
|
- |
--accent-yellow: #F7D154; /* themeable: accent.yellow */
|
| 253 |
|
- |
--accent-green: #5CB85C; /* themeable: accent.green */
|
| 254 |
|
- |
--accent-blue: #6196FF; /* themeable: accent.blue */
|
| 255 |
|
- |
--accent-purple: #7B68EE; /* themeable: accent.purple */
|
| 256 |
|
- |
--accent-red: #DC3545; /* themeable: accent.red */
|
| 257 |
|
- |
--accent-cyan: #17A2B8; /* themeable: accent.cyan */
|
| 258 |
|
- |
|
| 259 |
|
- |
--border-color: #000000; /* themeable: border.default */
|
|
241 |
+ |
/* === INTENT LAYER (themeable) ===
|
|
242 |
+ |
Resolved intent tokens, applied at runtime by js/themes.js (setProperty
|
|
243 |
+ |
on :root). Defaults below are the "goingson" titular theme for first
|
|
244 |
+ |
paint; theme-common resolves every theme — including the derived states
|
|
245 |
+ |
(action-hover/active, selection, row-stripe, status surfaces) — so this
|
|
246 |
+ |
is one shared mapping across audiofiles / Balanced Breakfast / MNW. */
|
|
247 |
+ |
--surface-page: #E0E4FA;
|
|
248 |
+ |
--surface-raised: #FFFFFF;
|
|
249 |
+ |
--surface-sunken: #BAC2E6;
|
|
250 |
+ |
--surface-overlay: #CDD3F0;
|
|
251 |
+ |
--content: #000000;
|
|
252 |
+ |
--content-secondary: #2D2D2D;
|
|
253 |
+ |
--content-muted: #6B6B6B;
|
|
254 |
+ |
--content-on-action: #000000;
|
|
255 |
+ |
--action: #6196FF;
|
|
256 |
+ |
--action-hover: #71a1ff;
|
|
257 |
+ |
--action-active: #5787e6;
|
|
258 |
+ |
--danger: #DC3545;
|
|
259 |
+ |
--success: #5CB85C;
|
|
260 |
+ |
--warning: #F7D154;
|
|
261 |
+ |
--info: #17A2B8;
|
|
262 |
+ |
--danger-surface: #e0cfe4;
|
|
263 |
+ |
--success-surface: #d0dfe7;
|
|
264 |
+ |
--warning-surface: #e3e2e6;
|
|
265 |
+ |
--info-surface: #c8dcf2;
|
|
266 |
+ |
--border: #000000;
|
|
267 |
+ |
--border-strong: #000000;
|
|
268 |
+ |
--focus-ring: #6196ff;
|
|
269 |
+ |
--selection: #bacdfc;
|
|
270 |
+ |
--row-stripe: #dadff7;
|
|
271 |
+ |
--hover-surface: #bac2e6;
|
|
272 |
+ |
--category-one: #DC3545;
|
|
273 |
+ |
--category-two: #5CB85C;
|
|
274 |
+ |
--category-three: #6196FF;
|
|
275 |
+ |
--category-four: #F7D154;
|
|
276 |
+ |
--category-five: #7B68EE;
|
|
277 |
+ |
--category-six: #17A2B8;
|
|
278 |
+ |
|
|
279 |
+ |
/* === BRAND ALIASES — GoingsOn vocabulary over the intent layer ===
|
|
280 |
+ |
Kept so existing component selectors stay valid. Accent hues map to the
|
|
281 |
+ |
categorical ramp (preserves all six distinct badge colors). */
|
|
282 |
+ |
--bg-primary: var(--surface-page);
|
|
283 |
+ |
--bg-secondary: var(--surface-overlay);
|
|
284 |
+ |
--bg-tertiary: var(--surface-sunken);
|
|
285 |
+ |
--bg-card: var(--surface-raised);
|
|
286 |
+ |
--text-primary: var(--content);
|
|
287 |
+ |
--text-secondary: var(--content-secondary);
|
|
288 |
+ |
--text-muted: var(--content-muted);
|
|
289 |
+ |
--accent-red: var(--category-one);
|
|
290 |
+ |
--accent-green: var(--category-two);
|
|
291 |
+ |
--accent-blue: var(--category-three);
|
|
292 |
+ |
--accent-yellow: var(--category-four);
|
|
293 |
+ |
--accent-purple: var(--category-five);
|
|
294 |
+ |
--accent-cyan: var(--category-six);
|
|
295 |
+ |
--border-color: var(--border);
|
| 260 |
296 |
|
--border-width: 2px; /* theme-invariant */
|
| 261 |
297 |
|
--border-width-sm: 2px; /* theme-invariant */
|
| 262 |
|
- |
|
| 263 |
|
- |
/* Derived aliases — automatically follow their upstream tokens, so themes don't need to override them. */
|
| 264 |
|
- |
--accent-color: var(--accent-blue); /* derived from --accent-blue */
|
| 265 |
|
- |
--accent-primary: var(--accent-blue); /* derived from --accent-blue */
|
| 266 |
|
- |
--bg-hover: var(--bg-tertiary); /* derived from --bg-tertiary */
|
| 267 |
|
- |
--border-light: var(--bg-tertiary); /* derived from --bg-tertiary */
|
| 268 |
|
- |
--text-on-accent: var(--bg-card); /* derived: relies on accents being saturated mid-tones; review on theme switch */
|
|
298 |
+ |
--accent-color: var(--action);
|
|
299 |
+ |
--accent-primary: var(--action);
|
|
300 |
+ |
--bg-hover: var(--hover-surface);
|
|
301 |
+ |
--border-light: var(--surface-sunken);
|
|
302 |
+ |
--text-on-accent: var(--surface-raised); /* GO's white-on-accent hack; see theming audit */
|
| 269 |
303 |
|
|
| 270 |
304 |
|
/* Shadow offset scale (used by 3D action elements only) */
|
| 271 |
305 |
|
--shadow-offset-xs: 1px;
|