a programming education platform
www.hypercommit.com
education
1@import "tailwindcss";
2@import "tw-animate-css";
3@import "shadcn/tailwind.css";
4
5@custom-variant dark (&:is(.dark *));
6@source "../../../apps/**/*.{ts,tsx}";
7@source "../../../components/**/*.{ts,tsx}";
8@source "../**/*.{ts,tsx}";
9
10@theme inline {
11 --font-heading: var(--font-sans);
12 --color-sidebar-ring: var(--sidebar-ring);
13 --color-sidebar-border: var(--sidebar-border);
14 --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
15 --color-sidebar-accent: var(--sidebar-accent);
16 --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
17 --color-sidebar-primary: var(--sidebar-primary);
18 --color-sidebar-foreground: var(--sidebar-foreground);
19 --color-sidebar: var(--sidebar);
20 --color-chart-5: var(--chart-5);
21 --color-chart-4: var(--chart-4);
22 --color-chart-3: var(--chart-3);
23 --color-chart-2: var(--chart-2);
24 --color-chart-1: var(--chart-1);
25 --color-ring: var(--ring);
26 --color-input: var(--input);
27 --color-border: var(--border);
28 --color-destructive: var(--destructive);
29 --color-accent-foreground: var(--accent-foreground);
30 --color-accent: var(--accent);
31 --color-muted-foreground: var(--muted-foreground);
32 --color-muted: var(--muted);
33 --color-secondary-foreground: var(--secondary-foreground);
34 --color-secondary: var(--secondary);
35 --color-primary-foreground: var(--primary-foreground);
36 --color-primary: var(--primary);
37 --color-popover-foreground: var(--popover-foreground);
38 --color-popover: var(--popover);
39 --color-card-foreground: var(--card-foreground);
40 --color-card: var(--card);
41 --color-foreground: var(--foreground);
42 --color-background: var(--background);
43 --radius-sm: calc(var(--radius) * 0.6);
44 --radius-md: calc(var(--radius) * 0.8);
45 --radius-lg: var(--radius);
46 --radius-xl: calc(var(--radius) * 1.4);
47 --radius-2xl: calc(var(--radius) * 1.8);
48 --radius-3xl: calc(var(--radius) * 2.2);
49 --radius-4xl: calc(var(--radius) * 2.6);
50 --font-sans: var(--font-sans);
51}
52
53:root {
54 color-scheme: light;
55 --background: oklch(1 0 0);
56 --foreground: oklch(0.145 0 0);
57 --card: oklch(1 0 0);
58 --card-foreground: oklch(0.145 0 0);
59 --popover: oklch(1 0 0);
60 --popover-foreground: oklch(0.145 0 0);
61 --primary: oklch(0.588 0.158 241.966);
62 --primary-foreground: oklch(0.977 0.014 236.062);
63 --secondary: oklch(0.967 0.001 286.375);
64 --secondary-foreground: oklch(0.21 0.006 285.885);
65 --muted: oklch(0.97 0 0);
66 --muted-foreground: oklch(0.556 0 0);
67 --accent: oklch(0.97 0 0);
68 --accent-foreground: oklch(0.205 0 0);
69 --destructive: oklch(0.577 0.245 27.325);
70 --border: oklch(0.922 0 0);
71 --input: oklch(0.922 0 0);
72 --ring: oklch(0.708 0 0);
73 --chart-1: oklch(0.823 0.12 346.018);
74 --chart-2: oklch(0.656 0.241 354.308);
75 --chart-3: oklch(0.592 0.249 0.584);
76 --chart-4: oklch(0.525 0.223 3.958);
77 --chart-5: oklch(0.459 0.187 3.815);
78 --radius: 0.45rem;
79 --sidebar: oklch(0.985 0 0);
80 --sidebar-foreground: oklch(0.145 0 0);
81 --sidebar-primary: oklch(0.592 0.249 0.584);
82 --sidebar-primary-foreground: oklch(0.971 0.014 343.198);
83 --sidebar-accent: oklch(0.97 0 0);
84 --sidebar-accent-foreground: oklch(0.205 0 0);
85 --sidebar-border: oklch(0.922 0 0);
86 --sidebar-ring: oklch(0.708 0 0);
87}
88
89file-tree-container {
90 --trees-padding-inline-override: 4px;
91}
92
93:root file-tree-container {
94 color-scheme: light;
95 --trees-bg-override: var(--card);
96 --trees-fg-override: #79797F;
97 --trees-fg-muted-override: #A0A0A6;
98 --trees-border-color-override: #e4e4e7;
99}
100
101.dark file-tree-container {
102 color-scheme: dark;
103 --trees-bg-override: var(--card);
104 --trees-fg-override: #ADADB1;
105 --trees-fg-muted-override: #84848A;
106 --trees-border-color-override: #232326;
107}
108
109.dark {
110 color-scheme: dark;
111 --background: oklch(0.145 0 0);
112 --foreground: oklch(0.985 0 0);
113 --card: oklch(0.205 0 0);
114 --card-foreground: oklch(0.985 0 0);
115 --popover: oklch(0.205 0 0);
116 --popover-foreground: oklch(0.985 0 0);
117 --primary: oklch(0.746 0.16 232.661);
118 --primary-foreground: oklch(0.293 0.066 243.157);
119 --secondary: oklch(0.274 0.006 286.033);
120 --secondary-foreground: oklch(0.985 0 0);
121 --muted: oklch(0.269 0 0);
122 --muted-foreground: oklch(0.708 0 0);
123 --accent: oklch(0.269 0 0);
124 --accent-foreground: oklch(0.985 0 0);
125 --destructive: oklch(0.704 0.191 22.216);
126 --border: oklch(1 0 0 / 10%);
127 --input: oklch(1 0 0 / 15%);
128 --ring: oklch(0.556 0 0);
129 --chart-1: oklch(0.823 0.12 346.018);
130 --chart-2: oklch(0.656 0.241 354.308);
131 --chart-3: oklch(0.592 0.249 0.584);
132 --chart-4: oklch(0.525 0.223 3.958);
133 --chart-5: oklch(0.459 0.187 3.815);
134 --sidebar: oklch(0.205 0 0);
135 --sidebar-foreground: oklch(0.985 0 0);
136 --sidebar-primary: oklch(0.656 0.241 354.308);
137 --sidebar-primary-foreground: oklch(0.971 0.014 343.198);
138 --sidebar-accent: oklch(0.269 0 0);
139 --sidebar-accent-foreground: oklch(0.985 0 0);
140 --sidebar-border: oklch(1 0 0 / 10%);
141 --sidebar-ring: oklch(0.556 0 0);
142}
143
144@layer base {
145 * {
146 @apply border-border outline-ring/50;
147 }
148 body {
149 @apply bg-background text-foreground;
150 }
151 button:not(:disabled), [role="button"]:not(:disabled) {
152 cursor: pointer;
153 }
154}
155
156/* Shiki dual-theme syntax highlighting (rehype-pretty-code) */
157code[data-theme*=" "],
158code[data-theme*=" "] span {
159 color: var(--shiki-light);
160 font-style: var(--shiki-light-font-style);
161 font-weight: var(--shiki-light-font-weight);
162 text-decoration: var(--shiki-light-text-decoration);
163}
164
165.dark code[data-theme*=" "],
166.dark code[data-theme*=" "] span {
167 color: var(--shiki-dark);
168 font-style: var(--shiki-dark-font-style);
169 font-weight: var(--shiki-dark-font-weight);
170 text-decoration: var(--shiki-dark-text-decoration);
171}
172
173figure[data-rehype-pretty-code-figure] pre code {
174 display: grid;
175 counter-reset: line;
176}
177
178figure[data-rehype-pretty-code-figure] code[data-line-numbers] > [data-line]::before {
179 counter-increment: line;
180 content: counter(line);
181 display: inline-block;
182 width: 1.75rem;
183 margin-right: 1rem;
184 text-align: right;
185 color: var(--color-muted-foreground);
186}
187
188figure[data-rehype-pretty-code-figure] [data-line] {
189 padding: 0 0.25rem;
190}
191
192figure[data-rehype-pretty-code-figure] [data-highlighted-line] {
193 background-color: color-mix(in oklch, var(--color-primary) 8%, transparent);
194 border-left: 2px solid var(--color-primary);
195 padding-left: calc(0.25rem - 2px);
196}
197
198figure[data-rehype-pretty-code-figure] [data-highlighted-chars] {
199 background-color: color-mix(in oklch, var(--color-primary) 12%, transparent);
200 border-radius: 0.25rem;
201 padding: 0 0.125rem;
202}
203
204figure[data-rehype-pretty-code-figure] figcaption[data-rehype-pretty-code-title] {
205 font-size: 0.75rem;
206 color: var(--color-muted-foreground);
207 padding: 0.5rem 1rem;
208 border-bottom: 1px solid var(--color-border);
209 font-family: var(--font-mono);
210}
211
212figure[data-rehype-pretty-code-figure]:has(figcaption[data-rehype-pretty-code-title]) pre {
213 border-top-left-radius: 0;
214 border-top-right-radius: 0;
215 border-top: 0;
216}
217
218figure[data-rehype-pretty-code-figure]:has(figcaption[data-rehype-pretty-code-title]) {
219 border: 1px solid var(--color-border);
220 border-radius: var(--radius-lg);
221 overflow: hidden;
222 background: var(--color-card);
223}
224
225figure[data-rehype-pretty-code-figure]:has(figcaption[data-rehype-pretty-code-title]) pre {
226 border: 0;
227 border-radius: 0;
228 box-shadow: none;
229}