Skip to content
File

Blob: worker/src/client/styles.css

css117 lines
1@import 'tailwindcss';
2@import '@fontsource/ibm-plex-sans/400.css';
3@import '@fontsource/ibm-plex-sans/500.css';
4@import '@fontsource/ibm-plex-mono/400.css';
5 
6@theme {
7 --font-sans: 'IBM Plex Sans', 'Segoe UI', sans-serif;
8 --font-mono: 'IBM Plex Mono', 'SFMono-Regular', Consolas, monospace;
9 --color-paper: oklch(96.4% 0.009 100);
10 --color-ink: oklch(28% 0.025 156);
11 --color-ink-hover: oklch(39% 0.045 155);
12 --color-muted: oklch(49% 0.018 154);
13 --color-line: oklch(83% 0.014 133);
14 --color-panel: oklch(94.2% 0.012 112);
15 --color-surface: oklch(97.5% 0.008 106);
16 --color-leaf: oklch(98.5% 0.006 106);
17 --color-core: oklch(91.5% 0.018 133);
18 --color-audio: oklch(50% 0.112 246);
19 --color-spectrum: oklch(49% 0.085 168);
20 --color-robot: oklch(51% 0.119 44);
21 --color-error: oklch(46% 0.15 30);
22 --color-cloud: oklch(95% 0.033 76);
23 --color-cloud-hover: oklch(92.5% 0.056 76);
24 --color-cloud-line: oklch(77% 0.06 66);
25 --color-cloud-pale: oklch(97% 0.018 86);
26 --color-cloud-ink: oklch(62% 0.156 51);
27 --color-cloud-dark: oklch(45% 0.082 52);
28}
29 
30@layer base {
31 body {
32 @apply min-w-80 bg-paper font-sans text-ink antialiased;
33 }
34 button {
35 @apply cursor-pointer disabled:cursor-not-allowed disabled:opacity-45 aria-disabled:cursor-not-allowed aria-disabled:opacity-45;
36 }
37 button,
38 a,
39 input {
40 @apply focus-visible:outline-3 focus-visible:outline-offset-4 focus-visible:outline-audio;
41 }
42 button svg {
43 @apply size-[18px] shrink-0;
44 }
45}
46 
47/* SVG board markings and signal transport animation are drawing primitives. */
48.pcb-brand {
49 font: 10px var(--font-sans);
50 fill: #334a3c;
51 letter-spacing: 1px;
52}
53.pcb-chip {
54 font: 500 17px var(--font-sans);
55 fill: #2b4234;
56}
57.pcb-model {
58 font: 7px var(--font-mono);
59 fill: #506557;
60}
61.pcb-label {
62 font: 7px var(--font-mono);
63 fill: #c0d1b8;
64}
65.led-lit {
66 filter: drop-shadow(0 0 5px var(--led-color));
67}
68.wires {
69 @apply pointer-events-none absolute inset-0 z-0 size-full overflow-visible;
70}
71.wire path {
72 fill: none;
73 stroke: currentColor;
74 stroke-width: 1.25px;
75}
76.wire-audio {
77 color: var(--color-audio);
78}
79.wire-spectrum {
80 color: var(--color-spectrum);
81}
82.wire-robot {
83 color: var(--color-robot);
84}
85.wire-wifi {
86 color: var(--color-muted);
87}
88.wire-track {
89 opacity: 0.4;
90}
91.wire-dim {
92 opacity: 0.22;
93}
94.wire .wire-flow {
95 stroke-dasharray: 5 22;
96 stroke-width: 2px;
97 animation: signal-travel 2s linear infinite;
98}
99.wire .wire-return {
100 animation-direction: reverse;
101 stroke-dasharray: 7 12;
102}
103@keyframes signal-travel {
104 to {
105 stroke-dashoffset: -108;
106 }
107}
108@media (prefers-reduced-motion: reduce) {
109 *,
110 *::before,
111 *::after {
112 animation: none !important;
113 transition: none !important;
114 scroll-behavior: auto !important;
115 }
116}