SPB Git

spb/worthdoing Public

Autonomous investigation agent that discovers, challenges, and ranks things genuinely worth doing — Claude + Firecrawl, Next.js 16, PostgreSQL

TypeScript 91.5% SQL 5.8% CSS 2.2%
4.9 KB · 176 lines css
Raw Blame History
1/*2 * WorthDoing.ai3 * Author: Simon-Pierre Boucher4 * Contact: contact@spboucher.ai5 * File: src/app/globals.css6 * Description: Design token system — light-first palette, type scale, motion; shadcn variables mapped to WorthDoing tokens.7 */8@import "tailwindcss";9@import "tw-animate-css";10@import "shadcn/tailwind.css";1112@custom-variant dark (&:is(.dark *));1314@theme inline {15  --color-background: var(--background);16  --color-foreground: var(--foreground);17  --font-sans: var(--font-body);18  --font-mono: var(--font-tele);19  --font-heading: var(--font-display);2021  /* WorthDoing named tokens — every component derives from these. */22  --color-paper: var(--wd-paper);23  --color-ink: var(--wd-ink);24  --color-ink-soft: var(--wd-ink-soft);25  --color-line: var(--wd-line);26  --color-verdict: var(--wd-verdict);27  --color-signal: var(--wd-signal);28  --color-rust: var(--wd-rust);29  --color-tele: var(--wd-tele);3031  --color-sidebar-ring: var(--sidebar-ring);32  --color-sidebar-border: var(--sidebar-border);33  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);34  --color-sidebar-accent: var(--sidebar-accent);35  --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);36  --color-sidebar-primary: var(--sidebar-primary);37  --color-sidebar-foreground: var(--sidebar-foreground);38  --color-sidebar: var(--sidebar);39  --color-chart-5: var(--chart-5);40  --color-chart-4: var(--chart-4);41  --color-chart-3: var(--chart-3);42  --color-chart-2: var(--chart-2);43  --color-chart-1: var(--chart-1);44  --color-ring: var(--ring);45  --color-input: var(--input);46  --color-border: var(--border);47  --color-destructive: var(--destructive);48  --color-accent-foreground: var(--accent-foreground);49  --color-accent: var(--accent);50  --color-muted-foreground: var(--muted-foreground);51  --color-muted: var(--muted);52  --color-secondary-foreground: var(--secondary-foreground);53  --color-secondary: var(--secondary);54  --color-primary-foreground: var(--primary-foreground);55  --color-primary: var(--primary);56  --color-popover-foreground: var(--popover-foreground);57  --color-popover: var(--popover);58  --color-card-foreground: var(--card-foreground);59  --color-card: var(--card);60  --radius-sm: calc(var(--radius) * 0.6);61  --radius-md: calc(var(--radius) * 0.8);62  --radius-lg: var(--radius);63  --radius-xl: calc(var(--radius) * 1.4);64  --radius-2xl: calc(var(--radius) * 1.8);65  --radius-3xl: calc(var(--radius) * 2.2);66  --radius-4xl: calc(var(--radius) * 2.6);67}6869:root {70  /* WorthDoing palette — light-first, validated for contrast on paper. */71  --wd-paper: #faf7f1;72  --wd-ink: #191510;73  --wd-ink-soft: #6b6355;74  --wd-line: #e6dfd2;75  --wd-verdict: #166b49; /* evidence support, validated, primary accent */76  --wd-signal: #b57a1e;  /* uncertainty, skeptic phase, medium confidence */77  --wd-rust: #a63d2a;    /* contradiction, rejected, risk */78  --wd-tele: #3d5a80;    /* telemetry, searching, links to sources */7980  --background: var(--wd-paper);81  --foreground: var(--wd-ink);82  --card: #ffffff;83  --card-foreground: var(--wd-ink);84  --popover: #ffffff;85  --popover-foreground: var(--wd-ink);86  --primary: var(--wd-ink);87  --primary-foreground: var(--wd-paper);88  --secondary: #f1ece1;89  --secondary-foreground: var(--wd-ink);90  --muted: #f1ece1;91  --muted-foreground: var(--wd-ink-soft);92  --accent: #eef3ef;93  --accent-foreground: var(--wd-verdict);94  --destructive: var(--wd-rust);95  --border: var(--wd-line);96  --input: var(--wd-line);97  --ring: var(--wd-verdict);98  --chart-1: var(--wd-verdict);99  --chart-2: var(--wd-tele);100  --chart-3: var(--wd-signal);101  --chart-4: var(--wd-rust);102  --chart-5: var(--wd-ink-soft);103  --radius: 0.5rem;104  --sidebar: #ffffff;105  --sidebar-foreground: var(--wd-ink);106  --sidebar-primary: var(--wd-ink);107  --sidebar-primary-foreground: var(--wd-paper);108  --sidebar-accent: #f1ece1;109  --sidebar-accent-foreground: var(--wd-ink);110  --sidebar-border: var(--wd-line);111  --sidebar-ring: var(--wd-verdict);112}113114@layer base {115  * {116    @apply border-border outline-ring/50;117  }118  body {119    @apply bg-background text-foreground;120    font-feature-settings: "ss01", "cv05";121  }122  html {123    @apply font-sans;124  }125  ::selection {126    background: color-mix(in oklab, var(--wd-verdict) 22%, transparent);127  }128}129130/* ---- Motion, tied to real agent events; respects reduced motion ---- */131132@keyframes wd-enter {133  from {134    opacity: 0;135    transform: translateY(6px);136  }137  to {138    opacity: 1;139    transform: translateY(0);140  }141}142143@keyframes wd-pulse {144  0%,145  100% {146    opacity: 1;147  }148  50% {149    opacity: 0.35;150  }151}152153.wd-enter {154  animation: wd-enter 0.35s cubic-bezier(0.2, 0.8, 0.2, 1) both;155}156157.wd-live-dot {158  animation: wd-pulse 1.6s ease-in-out infinite;159}160161.wd-bar {162  transition: width 0.6s cubic-bezier(0.2, 0.8, 0.2, 1), background-color 0.4s ease;163}164165@media (prefers-reduced-motion: reduce) {166  .wd-enter {167    animation: none;168  }169  .wd-live-dot {170    animation: none;171  }172  .wd-bar {173    transition: none;174  }175}176