phase 0: token foundation

This commit is contained in:
Richard R 2026-05-31 19:22:08 -06:00
parent 3d0367bc5b
commit 7bd798b9d1
2 changed files with 93 additions and 0 deletions

View file

@ -201,6 +201,56 @@ html.custom {
);
}
:root {
--shadow-rgb: 15 23 42;
--surface: var(--base);
--surface-solid: color-mix(in srgb, var(--base) 96%, var(--background));
--surface-sunken: color-mix(in srgb, var(--base) 80%, var(--background));
--line: color-mix(in srgb, var(--offbase) 70%, transparent);
--line-soft: color-mix(in srgb, var(--offbase) 45%, transparent);
--line-strong: var(--offbase);
--soft: color-mix(in srgb, var(--foreground) 74%, var(--muted));
--faint: color-mix(in srgb, var(--foreground) 52%, var(--muted));
--accent-wash: color-mix(in srgb, var(--accent) 12%, transparent);
--accent-line: color-mix(in srgb, var(--accent) 40%, transparent);
--accent-strong: color-mix(in srgb, var(--accent) 88%, var(--foreground));
--danger: #dc2626;
--danger-wash: color-mix(in srgb, var(--danger) 12%, transparent);
--elev-1: 0 1px 2px rgb(var(--shadow-rgb) / 0.10);
--elev-2: 0 6px 16px rgb(var(--shadow-rgb) / 0.16);
--elev-3: 0 18px 45px rgb(var(--shadow-rgb) / 0.22);
--dur-fast: 120ms;
--dur-base: 180ms;
--dur-slow: 260ms;
--ease: cubic-bezier(0.22, 0.61, 0.36, 1);
}
html.light,
html.lavender,
html.rose,
html.sand,
html.sky,
html.slate {
--shadow-rgb: 15 23 42;
}
html.dark,
html.ocean,
html.forest,
html.sunset,
html.sea,
html.mint,
html.custom {
--shadow-rgb: 0 0 0;
}
body {
color: var(--foreground);
background: var(--background);
@ -248,6 +298,17 @@ h1, h2, h3, h4, h5, h6 {
to { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 1ms !important;
animation-iteration-count: 1 !important;
scroll-behavior: auto !important;
transition-duration: 1ms !important;
}
}
/* Hide react-pdf's default tiny "Loading page..." placeholder to avoid jarring layout shifts. */
.pdf-viewer .react-pdf__message {
display: none !important;

View file

@ -18,6 +18,38 @@ export default {
accent: "var(--accent)",
"secondary-accent": "var(--secondary-accent)",
muted: "var(--muted)",
surface: "var(--surface)",
"surface-solid": "var(--surface-solid)",
"surface-sunken": "var(--surface-sunken)",
line: "var(--line)",
"line-soft": "var(--line-soft)",
"line-strong": "var(--line-strong)",
soft: "var(--soft)",
faint: "var(--faint)",
"accent-wash": "var(--accent-wash)",
"accent-line": "var(--accent-line)",
"accent-strong": "var(--accent-strong)",
danger: "var(--danger)",
"danger-wash": "var(--danger-wash)",
},
boxShadow: {
"elev-1": "var(--elev-1)",
"elev-2": "var(--elev-2)",
"elev-3": "var(--elev-3)",
},
borderRadius: {
sm: "6px",
md: "10px",
lg: "14px",
pill: "999px",
},
transitionDuration: {
fast: "var(--dur-fast)",
base: "var(--dur-base)",
slow: "var(--dur-slow)",
},
transitionTimingFunction: {
standard: "var(--ease)",
},
animation: {
'spin-slow': 'spin 2s linear infinite',