Monorepo for Tangled
tangled.org
1@tailwind base;
2@tailwind components;
3@tailwind utilities;
4@layer base {
5 @font-face {
6 font-family: "InterVariable";
7 src: url("/static/fonts/InterVariable.woff2") format("woff2-variations");
8 font-weight: 100 600;
9 font-style: normal;
10 font-display: swap;
11 }
12
13 @font-face {
14 font-family: "InterVariable";
15 src: url("/static/fonts/InterVariable-Italic.woff2")
16 format("woff2-variations");
17 font-weight: 100 600;
18 font-style: italic;
19 font-display: swap;
20 }
21
22 @font-face {
23 font-family: "InterVariable";
24 src: url("/static/fonts/InterDisplay-Bold.woff2") format("woff2");
25 font-weight: bold;
26 font-style: normal;
27 font-display: swap;
28 }
29
30 @font-face {
31 font-family: "InterVariable";
32 src: url("/static/fonts/InterDisplay-BoldItalic.woff2") format("woff2");
33 font-weight: bold;
34 font-style: italic;
35 font-display: swap;
36 }
37
38 @font-face {
39 font-family: "IBMPlexMono";
40 src: url("/static/fonts/IBMPlexMono-Regular.woff2") format("woff2");
41 font-weight: normal;
42 font-style: normal;
43 font-display: swap;
44 }
45
46 @font-face {
47 font-family: "IBMPlexMono";
48 src: url("/static/fonts/IBMPlexMono-Italic.woff2") format("woff2");
49 font-weight: normal;
50 font-style: italic;
51 font-display: swap;
52 }
53
54 @font-face {
55 font-family: "IBMPlexMono";
56 src: url("/static/fonts/IBMPlexMono-Bold.woff2") format("woff2");
57 font-weight: bold;
58 font-style: normal;
59 font-display: swap;
60 }
61
62 @font-face {
63 font-family: "IBMPlexMono";
64 src: url("/static/fonts/IBMPlexMono-BoldItalic.woff2") format("woff2");
65 font-weight: bold;
66 font-style: italic;
67 font-display: swap;
68 }
69
70 ::selection {
71 @apply bg-yellow-400 text-black bg-opacity-30 dark:bg-yellow-600 dark:bg-opacity-50 dark:text-white;
72 }
73
74 @layer base {
75 html {
76 font-size: 14px;
77 scrollbar-gutter: stable;
78 }
79 @supports (font-variation-settings: normal) {
80 html {
81 font-feature-settings:
82 "kern" 1,
83 "liga" 1,
84 "cv05" 1,
85 "tnum" 1;
86 }
87 }
88
89 a {
90 @apply no-underline text-black hover:underline hover:text-gray-800 dark:text-white dark:hover:text-gray-300;
91 }
92
93 label {
94 @apply block text-gray-900 text-sm py-2 dark:text-gray-100;
95 }
96
97 input,
98 textarea {
99 @apply block rounded p-3
100 bg-gray-50 dark:bg-gray-800 dark:text-white
101 border border-gray-300 dark:border-gray-600
102 focus:outline-none focus:ring-1 focus:ring-gray-400 dark:focus:ring-gray-500;
103 }
104
105 input[type="checkbox"] {
106 @apply appearance-none size-4 p-0 rounded
107 bg-transparent border border-gray-200
108 hover:bg-gray-100
109 checked:bg-gray-900 checked:border-transparent
110 checked:hover:bg-gray-800
111 indeterminate:bg-gray-900 indeterminate:border-transparent
112 disabled:cursor-not-allowed disabled:bg-gray-100 disabled:border-gray-200
113 disabled:checked:bg-gray-300 disabled:checked:border-transparent
114 disabled:indeterminate:bg-gray-100 disabled:indeterminate:border-gray-200
115 dark:border-gray-600
116 dark:hover:bg-gray-700
117 dark:checked:bg-gray-100
118 dark:checked:hover:bg-gray-200
119 dark:checked:border-gray-400
120 dark:indeterminate:bg-gray-100 dark:indeterminate:border-transparent
121 dark:disabled:bg-gray-700 dark:disabled:border-gray-600
122 dark:disabled:checked:bg-gray-500 dark:disabled:checked:border-transparent
123 dark:disabled:indeterminate:bg-gray-700 dark:disabled:indeterminate:border-gray-600
124 focus:outline-none focus:ring-1 focus:ring-gray-400 dark:focus:ring-gray-500;
125 background-position: center;
126 background-repeat: no-repeat;
127 background-size: 12px;
128 }
129 input[type="checkbox"]:checked {
130 background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'><path d='M10 3 4.5 8.5 2 6' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
131 }
132 input[type="checkbox"]:indeterminate {
133 background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'><path d='M2.5 6h7' stroke='white' stroke-width='1.5' stroke-linecap='round'/></svg>");
134 }
135 input[type="checkbox"]:disabled:indeterminate {
136 background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'><path d='M2.5 6h7' stroke='rgb(156,163,175)' stroke-width='1.5' stroke-linecap='round'/></svg>");
137 }
138 @media (prefers-color-scheme: dark) {
139 input[type="checkbox"]:checked {
140 background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'><path d='M10 3 4.5 8.5 2 6' stroke='rgb(17,24,39)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
141 }
142 input[type="checkbox"]:indeterminate {
143 background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'><path d='M2.5 6h7' stroke='rgb(17,24,39)' stroke-width='1.5' stroke-linecap='round'/></svg>");
144 }
145 input[type="checkbox"]:disabled:indeterminate {
146 background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'><path d='M2.5 6h7' stroke='rgb(107,114,128)' stroke-width='1.5' stroke-linecap='round'/></svg>");
147 }
148 }
149
150 input[type="radio"] {
151 @apply appearance-none size-4 p-0 rounded-full bg-transparent border
152
153 border-gray-400 hover:border-gray-900
154 hover:bg-gray-200
155
156 disabled:cursor-not-allowed
157 disabled:border-gray-300
158 disabled:checked:border-gray-300
159 disabled:hover:bg-inherit
160
161 dark:border-gray-400 dark:hover:border-gray-100
162
163 dark:hover:bg-gray-600
164
165 dark:checked:border-gray-400
166
167 dark:disabled:border-gray-500
168 dark:disabled:checked:border-gray-500
169
170 focus:outline-none focus:ring-1
171 focus:ring-gray-400 dark:focus:ring-gray-500;
172
173 background-position: center;
174 background-repeat: no-repeat;
175 background-size: 8px;
176 }
177 input[type="radio"]:checked {
178 background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><circle cx='6' cy='6' r='4.5' fill='rgb(17,24,39)'/></svg>");
179 }
180 input[type="radio"]:disabled:checked {
181 background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><circle cx='6' cy='6' r='4.5' fill='rgb(209,213,219)'/></svg>");
182 }
183 @media (prefers-color-scheme: dark) {
184 input[type="radio"]:checked {
185 background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><circle cx='6' cy='6' r='4.5' fill='rgb(243,244,246)'/></svg>");
186 }
187 input[type="radio"]:disabled:checked {
188 background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><circle cx='6' cy='6' r='4.5' fill='rgb(107,114,128)'/></svg>");
189 }
190 }
191
192 details summary::-webkit-details-marker {
193 display: none;
194 }
195
196 code {
197 @apply font-mono rounded bg-gray-100 dark:bg-gray-700 text-black dark:text-white;
198 }
199 }
200
201 @layer components {
202 .btn {
203 @apply relative z-10 inline-flex overflow-hidden items-center justify-center
204 min-h-[32px] px-2 py-[6px] gap-1.5
205 rounded border border-gray-200 dark:border-gray-700
206 bg-white dark:bg-gray-800
207 text-sm text-gray-900 dark:text-gray-100
208 transition-colors duration-150 ease-in-out
209 outline-transparent cursor-pointer
210 focus-visible:outline focus-visible:outline-2 focus-visible:outline-gray-400 dark:focus-visible:outline-gray-600
211 no-underline hover:no-underline;
212
213 @apply before:absolute before:inset-0 before:-z-10 before:block before:rounded-sm before:content-['']
214 before:transition-all before:duration-150 before:ease-in-out
215 before:shadow-[inset_0_-2px_0_0_theme(colors.gray.200)] dark:before:shadow-[inset_0_-2px_0_0_theme(colors.gray.900)];
216
217 @apply hover:bg-gray-50 dark:hover:bg-gray-700
218 hover:before:shadow-[inset_0_-2px_0_0_theme(colors.gray.300)] dark:hover:before:shadow-[inset_0_-2px_0_0_theme(colors.gray.800)]
219 active:before:shadow-[inset_0_2px_2px_0_theme(colors.gray.200)] dark:active:before:shadow-[inset_0_2px_2px_0_theme(colors.gray.900)]
220 active:translate-y-0.5
221 disabled:cursor-not-allowed disabled:opacity-50;
222 }
223
224 .btn-flat {
225 @apply inline-flex items-center justify-center
226 min-h-[32px] px-2 py-[6px]
227 rounded
228 text-sm text-gray-900 dark:text-gray-100 cursor-pointer
229 transition-colors duration-150 ease-in-out
230 focus:outline-none
231 focus-visible:outline focus-visible:outline-2 focus-visible:outline-gray-400
232 hover:bg-gray-100
233 dark:hover:text-gray-100 dark:hover:bg-gray-700
234 disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:text-inherit disabled:hover:bg-inherit;
235 }
236
237 .btn-create {
238 @apply btn text-white
239 bg-green-600 hover:bg-green-700 dark:bg-green-700 dark:hover:bg-green-800
240 border border-green-700 hover:border-green-800
241 focus-visible:outline-green-500
242 disabled:bg-green-400 dark:disabled:bg-green-600
243 before:shadow-[inset_0_-2px_0_0_theme(colors.gray.900/25%)]
244 hover:before:shadow-[inset_0_-2px_0_0_theme(colors.gray.900/25%)]
245 active:before:shadow-[inset_0_2px_2px_0_theme(colors.gray.900/50%)];
246 }
247
248 .btn-create-flat {
249 @apply btn-create
250 before:shadow-none
251 hover:before:shadow-none
252 active:before:shadow-none;
253 }
254
255 .btn-primary {
256 @apply btn text-white
257 bg-indigo-600 hover:bg-indigo-700 dark:bg-indigo-500 dark:hover:bg-indigo-600
258 border border-indigo-700 hover:border-indigo-800 dark:border-indigo-600 dark:hover:border-indigo-700
259 focus-visible:outline-indigo-500
260 disabled:bg-indigo-400 dark:disabled:bg-indigo-400
261 before:shadow-[inset_0_-2px_0_0_theme(colors.gray.900/25%)]
262 hover:before:shadow-[inset_0_-2px_0_0_theme(colors.gray.900/25%)]
263 active:before:shadow-[inset_0_2px_2px_0_theme(colors.gray.900/50%)];
264 }
265
266 .btn-cancel {
267 @apply btn text-white
268 bg-red-600 hover:bg-red-700 dark:bg-red-700 dark:hover:bg-red-800
269 border border-red-700 hover:border-red-800
270 focus-visible:outline-red-500
271 disabled:bg-red-400 dark:disabled:bg-red-600;
272 }
273
274 .btn-cancel-flat {
275 @apply btn-cancel
276 before:shadow-none
277 hover:before:shadow-none
278 active:before:shadow-none;
279 }
280
281 .btn-group {
282 @apply inline-flex items-stretch
283 max-h-[32px]
284 rounded border border-gray-200 dark:border-gray-700
285 divide-x divide-gray-200 dark:divide-gray-700
286 overflow-clip;
287 }
288
289 .btn-group-item {
290 @apply btn-flat min-h-[30px] gap-1.5
291 bg-gray-50 dark:bg-gray-900
292 rounded-none border-y-0
293 no-underline hover:no-underline
294 hover:text-gray-600 dark:hover:text-gray-400;
295 }
296
297 .btn-group-item.active {
298 @apply btn min-h-[30px] rounded-none border-y-0
299 before:border-none before:rounded-none before:bg-inherit;
300
301 &:first-child {
302 @apply border-none before:rounded-l-sm;
303 }
304 &:last-child {
305 @apply border-y-0 border-r-0 border-l before:rounded-r-sm;
306 }
307 }
308
309 .prose {
310 overflow-wrap: anywhere;
311 }
312
313 .prose td,
314 .prose th {
315 overflow-wrap: normal;
316 }
317
318 .prose hr {
319 @apply my-2;
320 }
321
322 .prose li:has(input) {
323 @apply list-none;
324 }
325
326 .prose ul:has(input) {
327 @apply pl-2;
328 }
329
330 .prose .heading .anchor {
331 @apply no-underline mx-2 opacity-0;
332 }
333
334 .prose .heading:hover .anchor {
335 @apply opacity-70;
336 }
337
338 .prose .heading .anchor:hover {
339 @apply opacity-70;
340 }
341
342 .prose h1:target,
343 .prose h2:target,
344 .prose h3:target,
345 .prose h4:target,
346 .prose h5:target,
347 .prose h6:target {
348 @apply bg-yellow-200/30 dark:bg-yellow-600/30;
349 }
350
351 .prose a.footnote-backref {
352 @apply no-underline;
353 }
354
355 .prose a.mention {
356 @apply no-underline hover:underline font-bold;
357 }
358
359 .prose li {
360 @apply my-0 py-0;
361 }
362
363 .prose ul,
364 .prose ol {
365 @apply my-1 py-0;
366 }
367
368 .prose img {
369 display: inline;
370 margin: 0;
371 vertical-align: middle;
372 }
373
374 .prose input {
375 @apply inline-block my-0 mt-1 mx-1;
376 }
377
378 /* Mermaid diagrams */
379 .prose pre.mermaid {
380 @apply flex justify-center my-4 overflow-x-auto bg-transparent border-0;
381 }
382
383 /* Base callout */
384 details[data-callout] {
385 @apply border-l-4 pl-3 py-2 text-gray-800 dark:text-gray-200 my-4;
386 }
387
388 details[data-callout] > summary {
389 @apply font-bold cursor-pointer mb-1;
390 }
391
392 details[data-callout] > .callout-content {
393 @apply text-sm leading-snug;
394 }
395
396 /* Note (blue) */
397 details[data-callout="note" i] {
398 @apply border-blue-400 dark:border-blue-500;
399 }
400 details[data-callout="note" i] > summary {
401 @apply text-blue-700 dark:text-blue-400;
402 }
403
404 /* Important (purple) */
405 details[data-callout="important" i] {
406 @apply border-purple-400 dark:border-purple-500;
407 }
408 details[data-callout="important" i] > summary {
409 @apply text-purple-700 dark:text-purple-400;
410 }
411
412 /* Warning (yellow) */
413 details[data-callout="warning" i] {
414 @apply border-yellow-400 dark:border-yellow-500;
415 }
416 details[data-callout="warning" i] > summary {
417 @apply text-yellow-700 dark:text-yellow-400;
418 }
419
420 /* Caution (red) */
421 details[data-callout="caution" i] {
422 @apply border-red-400 dark:border-red-500;
423 }
424 details[data-callout="caution" i] > summary {
425 @apply text-red-700 dark:text-red-400;
426 }
427
428 /* Tip (green) */
429 details[data-callout="tip" i] {
430 @apply border-green-400 dark:border-green-500;
431 }
432 details[data-callout="tip" i] > summary {
433 @apply text-green-700 dark:text-green-400;
434 }
435
436 /* Optional: hide the disclosure arrow like GitHub */
437 details[data-callout] > summary::-webkit-details-marker {
438 display: none;
439 }
440 }
441 @layer utilities {
442 .error {
443 @apply py-1 text-red-400 dark:text-red-300;
444 }
445 .success {
446 @apply py-1 text-gray-900 dark:text-gray-100;
447 }
448
449 @keyframes scroll {
450 0% {
451 transform: translateX(0);
452 }
453 100% {
454 transform: translateX(-50%);
455 }
456 }
457
458 .animate-marquee {
459 animation: scroll 60s linear infinite;
460 }
461
462 .animate-marquee:hover {
463 animation-play-state: paused;
464 }
465
466 @media (prefers-reduced-motion: reduce) {
467 .animate-marquee {
468 animation: none;
469 transform: none;
470 }
471 }
472
473 @keyframes progress {
474 from {
475 width: 0%;
476 }
477 to {
478 width: 100%;
479 }
480 }
481
482 .animate-progress {
483 animation: progress 10s linear forwards;
484 }
485
486 @keyframes fadeIn {
487 from {
488 opacity: 0;
489 }
490 to {
491 opacity: 1;
492 }
493 }
494
495 @keyframes fadeOut {
496 from {
497 opacity: 1;
498 }
499 to {
500 opacity: 0;
501 }
502 }
503
504 .animate-fadein {
505 animation: fadeIn 0.25s ease-in forwards;
506 }
507
508 .animate-fadeout {
509 animation: fadeOut 0.25s ease-out forwards;
510 }
511 }
512}
513
514/* Background */
515.bg {
516 color: #4c4f69;
517 background-color: #eff1f5;
518}
519/* PreWrapper */
520.chroma {
521 color: #4c4f69;
522}
523/* Error */
524.chroma .err {
525 color: #d20f39;
526}
527/* LineLink */
528.chroma .lnlinks {
529 outline: none;
530 text-decoration: none;
531 color: inherit;
532}
533/* LineTableTD */
534.chroma .lntd {
535 vertical-align: top;
536 padding: 0;
537 margin: 0;
538 border: 0;
539}
540/* LineTable */
541.chroma .lntable {
542 border-spacing: 0;
543 padding: 0;
544 margin: 0;
545 border: 0;
546}
547/* LineHighlight */
548.chroma .hl {
549 @apply bg-amber-400/30 dark:bg-amber-500/20;
550}
551
552.line-quote-hl,
553.line-range-hl {
554 @apply !bg-yellow-200/30 dark:!bg-yellow-700/30;
555}
556
557.chunk-match-hl {
558 @apply rounded-sm !bg-yellow-300/70 dark:!bg-yellow-600/60;
559}
560
561:is(.line-quote-hl, .line-range-hl) > .min-w-\[3\.5rem\] {
562 @apply !bg-yellow-200/30 dark:!bg-yellow-700/30;
563}
564
565:is(.line-quote-hl, .line-range-hl) > .min-w-\[3\.5rem\] a {
566 @apply !text-black dark:!text-white;
567}
568
569/* LineNumbersTable */
570.chroma .lnt {
571 white-space: pre;
572 -webkit-user-select: none;
573 user-select: none;
574 margin-right: 0.4em;
575 padding: 0 0.4em 0 0.4em;
576 color: #8c8fa1;
577}
578/* LineNumbers */
579.chroma .ln {
580 white-space: pre;
581 -webkit-user-select: none;
582 user-select: none;
583 margin-right: 0.4em;
584 padding: 0 0.4em 0 0.4em;
585 color: #8c8fa1;
586}
587/* Line */
588.chroma .line {
589 display: flex;
590}
591/* Keyword */
592.chroma .k {
593 color: #8839ef;
594}
595/* KeywordConstant */
596.chroma .kc {
597 color: #fe640b;
598}
599/* KeywordDeclaration */
600.chroma .kd {
601 color: #d20f39;
602}
603/* KeywordNamespace */
604.chroma .kn {
605 color: #179299;
606}
607/* KeywordPseudo */
608.chroma .kp {
609 color: #8839ef;
610}
611/* KeywordReserved */
612.chroma .kr {
613 color: #8839ef;
614}
615/* KeywordType */
616.chroma .kt {
617 color: #d20f39;
618}
619/* NameAttribute */
620.chroma .na {
621 color: #1e66f5;
622}
623/* NameBuiltin */
624.chroma .nb {
625 color: #04a5e5;
626}
627/* NameBuiltinPseudo */
628.chroma .bp {
629 color: #04a5e5;
630}
631/* NameClass */
632.chroma .nc {
633 color: #df8e1d;
634}
635/* NameConstant */
636.chroma .no {
637 color: #df8e1d;
638}
639/* NameDecorator */
640.chroma .nd {
641 color: #1e66f5;
642 font-weight: bold;
643}
644/* NameEntity */
645.chroma .ni {
646 color: #179299;
647}
648/* NameException */
649.chroma .ne {
650 color: #fe640b;
651}
652/* NameFunction */
653.chroma .nf {
654 color: #1e66f5;
655}
656/* NameFunctionMagic */
657.chroma .fm {
658 color: #1e66f5;
659}
660/* NameLabel */
661.chroma .nl {
662 color: #04a5e5;
663}
664/* NameNamespace */
665.chroma .nn {
666 color: #fe640b;
667}
668/* NameProperty */
669.chroma .py {
670 color: #fe640b;
671}
672/* NameTag */
673.chroma .nt {
674 color: #8839ef;
675}
676/* NameVariable */
677.chroma .nv {
678 color: #dc8a78;
679}
680/* NameVariableClass */
681.chroma .vc {
682 color: #dc8a78;
683}
684/* NameVariableGlobal */
685.chroma .vg {
686 color: #dc8a78;
687}
688/* NameVariableInstance */
689.chroma .vi {
690 color: #dc8a78;
691}
692/* NameVariableMagic */
693.chroma .vm {
694 color: #dc8a78;
695}
696/* LiteralString */
697.chroma .s {
698 color: #40a02b;
699}
700/* LiteralStringAffix */
701.chroma .sa {
702 color: #d20f39;
703}
704/* LiteralStringBacktick */
705.chroma .sb {
706 color: #40a02b;
707}
708/* LiteralStringChar */
709.chroma .sc {
710 color: #40a02b;
711}
712/* LiteralStringDelimiter */
713.chroma .dl {
714 color: #1e66f5;
715}
716/* LiteralStringDoc */
717.chroma .sd {
718 color: #9ca0b0;
719}
720/* LiteralStringDouble */
721.chroma .s2 {
722 color: #40a02b;
723}
724/* LiteralStringEscape */
725.chroma .se {
726 color: #1e66f5;
727}
728/* LiteralStringHeredoc */
729.chroma .sh {
730 color: #9ca0b0;
731}
732/* LiteralStringInterpol */
733.chroma .si {
734 color: #40a02b;
735}
736/* LiteralStringOther */
737.chroma .sx {
738 color: #40a02b;
739}
740/* LiteralStringRegex */
741.chroma .sr {
742 color: #179299;
743}
744/* LiteralStringSingle */
745.chroma .s1 {
746 color: #40a02b;
747}
748/* LiteralStringSymbol */
749.chroma .ss {
750 color: #40a02b;
751}
752/* LiteralNumber */
753.chroma .m {
754 color: #fe640b;
755}
756/* LiteralNumberBin */
757.chroma .mb {
758 color: #fe640b;
759}
760/* LiteralNumberFloat */
761.chroma .mf {
762 color: #fe640b;
763}
764/* LiteralNumberHex */
765.chroma .mh {
766 color: #fe640b;
767}
768/* LiteralNumberInteger */
769.chroma .mi {
770 color: #fe640b;
771}
772/* LiteralNumberIntegerLong */
773.chroma .il {
774 color: #fe640b;
775}
776/* LiteralNumberOct */
777.chroma .mo {
778 color: #fe640b;
779}
780/* Operator */
781.chroma .o {
782 color: #04a5e5;
783 font-weight: bold;
784}
785/* OperatorWord */
786.chroma .ow {
787 color: #04a5e5;
788 font-weight: bold;
789}
790/* Comment */
791.chroma .c {
792 color: #9ca0b0;
793 font-style: italic;
794}
795/* CommentHashbang */
796.chroma .ch {
797 color: #9ca0b0;
798 font-style: italic;
799}
800/* CommentMultiline */
801.chroma .cm {
802 color: #9ca0b0;
803 font-style: italic;
804}
805/* CommentSingle */
806.chroma .c1 {
807 color: #9ca0b0;
808 font-style: italic;
809}
810/* CommentSpecial */
811.chroma .cs {
812 color: #9ca0b0;
813 font-style: italic;
814}
815/* CommentPreproc */
816.chroma .cp {
817 color: #9ca0b0;
818 font-style: italic;
819}
820/* CommentPreprocFile */
821.chroma .cpf {
822 color: #9ca0b0;
823 font-weight: bold;
824 font-style: italic;
825}
826/* GenericDeleted */
827.chroma .gd {
828 color: #d20f39;
829 background-color: oklch(93.6% 0.032 17.717);
830}
831/* GenericEmph */
832.chroma .ge {
833 font-style: italic;
834}
835/* GenericError */
836.chroma .gr {
837 color: #d20f39;
838}
839/* GenericHeading */
840.chroma .gh {
841 color: #fe640b;
842 font-weight: bold;
843}
844/* GenericInserted */
845.chroma .gi {
846 color: #40a02b;
847 background-color: oklch(96.2% 0.044 156.743);
848}
849/* GenericStrong */
850.chroma .gs {
851 font-weight: bold;
852}
853/* GenericSubheading */
854.chroma .gu {
855 color: #fe640b;
856 font-weight: bold;
857}
858/* GenericTraceback */
859.chroma .gt {
860 color: #d20f39;
861}
862/* GenericUnderline */
863.chroma .gl {
864 text-decoration: underline;
865}
866
867@media (prefers-color-scheme: dark) {
868 /* Background */
869 .bg {
870 color: #cad3f5;
871 background-color: #24273a;
872 }
873 /* PreWrapper */
874 .chroma {
875 color: #cad3f5;
876 }
877 /* Error */
878 .chroma .err {
879 color: #ed8796;
880 }
881 /* LineLink */
882 .chroma .lnlinks {
883 outline: none;
884 text-decoration: none;
885 color: inherit;
886 }
887 /* LineTableTD */
888 .chroma .lntd {
889 vertical-align: top;
890 padding: 0;
891 margin: 0;
892 border: 0;
893 }
894 /* LineTable */
895 .chroma .lntable {
896 border-spacing: 0;
897 padding: 0;
898 margin: 0;
899 border: 0;
900 }
901 /* LineHighlight */
902 .chroma .hl {
903 background-color: #494d64;
904 }
905 /* LineNumbersTable */
906 .chroma .lnt {
907 white-space: pre;
908 -webkit-user-select: none;
909 user-select: none;
910 margin-right: 0.4em;
911 padding: 0 0.4em 0 0.4em;
912 color: #8087a2;
913 }
914 /* LineNumbers */
915 .chroma .ln {
916 white-space: pre;
917 -webkit-user-select: none;
918 user-select: none;
919 margin-right: 0.4em;
920 padding: 0 0.4em 0 0.4em;
921 color: #8087a2;
922 }
923 /* Line */
924 .chroma .line {
925 display: flex;
926 }
927 /* Keyword */
928 .chroma .k {
929 color: #c6a0f6;
930 }
931 /* KeywordConstant */
932 .chroma .kc {
933 color: #f5a97f;
934 }
935 /* KeywordDeclaration */
936 .chroma .kd {
937 color: #ed8796;
938 }
939 /* KeywordNamespace */
940 .chroma .kn {
941 color: #8bd5ca;
942 }
943 /* KeywordPseudo */
944 .chroma .kp {
945 color: #c6a0f6;
946 }
947 /* KeywordReserved */
948 .chroma .kr {
949 color: #c6a0f6;
950 }
951 /* KeywordType */
952 .chroma .kt {
953 color: #ed8796;
954 }
955 /* NameAttribute */
956 .chroma .na {
957 color: #8aadf4;
958 }
959 /* NameBuiltin */
960 .chroma .nb {
961 color: #91d7e3;
962 }
963 /* NameBuiltinPseudo */
964 .chroma .bp {
965 color: #91d7e3;
966 }
967 /* NameClass */
968 .chroma .nc {
969 color: #eed49f;
970 }
971 /* NameConstant */
972 .chroma .no {
973 color: #eed49f;
974 }
975 /* NameDecorator */
976 .chroma .nd {
977 color: #8aadf4;
978 font-weight: bold;
979 }
980 /* NameEntity */
981 .chroma .ni {
982 color: #8bd5ca;
983 }
984 /* NameException */
985 .chroma .ne {
986 color: #f5a97f;
987 }
988 /* NameFunction */
989 .chroma .nf {
990 color: #8aadf4;
991 }
992 /* NameFunctionMagic */
993 .chroma .fm {
994 color: #8aadf4;
995 }
996 /* NameLabel */
997 .chroma .nl {
998 color: #91d7e3;
999 }
1000 /* NameNamespace */
1001 .chroma .nn {
1002 color: #f5a97f;
1003 }
1004 /* NameProperty */
1005 .chroma .py {
1006 color: #f5a97f;
1007 }
1008 /* NameTag */
1009 .chroma .nt {
1010 color: #c6a0f6;
1011 }
1012 /* NameVariable */
1013 .chroma .nv {
1014 color: #f4dbd6;
1015 }
1016 /* NameVariableClass */
1017 .chroma .vc {
1018 color: #f4dbd6;
1019 }
1020 /* NameVariableGlobal */
1021 .chroma .vg {
1022 color: #f4dbd6;
1023 }
1024 /* NameVariableInstance */
1025 .chroma .vi {
1026 color: #f4dbd6;
1027 }
1028 /* NameVariableMagic */
1029 .chroma .vm {
1030 color: #f4dbd6;
1031 }
1032 /* LiteralString */
1033 .chroma .s {
1034 color: #a6da95;
1035 }
1036 /* LiteralStringAffix */
1037 .chroma .sa {
1038 color: #ed8796;
1039 }
1040 /* LiteralStringBacktick */
1041 .chroma .sb {
1042 color: #a6da95;
1043 }
1044 /* LiteralStringChar */
1045 .chroma .sc {
1046 color: #a6da95;
1047 }
1048 /* LiteralStringDelimiter */
1049 .chroma .dl {
1050 color: #8aadf4;
1051 }
1052 /* LiteralStringDoc */
1053 .chroma .sd {
1054 color: #6e738d;
1055 }
1056 /* LiteralStringDouble */
1057 .chroma .s2 {
1058 color: #a6da95;
1059 }
1060 /* LiteralStringEscape */
1061 .chroma .se {
1062 color: #8aadf4;
1063 }
1064 /* LiteralStringHeredoc */
1065 .chroma .sh {
1066 color: #6e738d;
1067 }
1068 /* LiteralStringInterpol */
1069 .chroma .si {
1070 color: #a6da95;
1071 }
1072 /* LiteralStringOther */
1073 .chroma .sx {
1074 color: #a6da95;
1075 }
1076 /* LiteralStringRegex */
1077 .chroma .sr {
1078 color: #8bd5ca;
1079 }
1080 /* LiteralStringSingle */
1081 .chroma .s1 {
1082 color: #a6da95;
1083 }
1084 /* LiteralStringSymbol */
1085 .chroma .ss {
1086 color: #a6da95;
1087 }
1088 /* LiteralNumber */
1089 .chroma .m {
1090 color: #f5a97f;
1091 }
1092 /* LiteralNumberBin */
1093 .chroma .mb {
1094 color: #f5a97f;
1095 }
1096 /* LiteralNumberFloat */
1097 .chroma .mf {
1098 color: #f5a97f;
1099 }
1100 /* LiteralNumberHex */
1101 .chroma .mh {
1102 color: #f5a97f;
1103 }
1104 /* LiteralNumberInteger */
1105 .chroma .mi {
1106 color: #f5a97f;
1107 }
1108 /* LiteralNumberIntegerLong */
1109 .chroma .il {
1110 color: #f5a97f;
1111 }
1112 /* LiteralNumberOct */
1113 .chroma .mo {
1114 color: #f5a97f;
1115 }
1116 /* Operator */
1117 .chroma .o {
1118 color: #91d7e3;
1119 font-weight: bold;
1120 }
1121 /* OperatorWord */
1122 .chroma .ow {
1123 color: #91d7e3;
1124 font-weight: bold;
1125 }
1126 /* Comment */
1127 .chroma .c {
1128 color: #6e738d;
1129 font-style: italic;
1130 }
1131 /* CommentHashbang */
1132 .chroma .ch {
1133 color: #6e738d;
1134 font-style: italic;
1135 }
1136 /* CommentMultiline */
1137 .chroma .cm {
1138 color: #6e738d;
1139 font-style: italic;
1140 }
1141 /* CommentSingle */
1142 .chroma .c1 {
1143 color: #6e738d;
1144 font-style: italic;
1145 }
1146 /* CommentSpecial */
1147 .chroma .cs {
1148 color: #6e738d;
1149 font-style: italic;
1150 }
1151 /* CommentPreproc */
1152 .chroma .cp {
1153 color: #6e738d;
1154 font-style: italic;
1155 }
1156 /* CommentPreprocFile */
1157 .chroma .cpf {
1158 color: #6e738d;
1159 font-weight: bold;
1160 font-style: italic;
1161 }
1162 /* GenericDeleted */
1163 .chroma .gd {
1164 color: #ed8796;
1165 background-color: oklch(44.4% 0.177 26.899 / 0.5);
1166 }
1167 /* GenericEmph */
1168 .chroma .ge {
1169 font-style: italic;
1170 }
1171 /* GenericError */
1172 .chroma .gr {
1173 color: #ed8796;
1174 }
1175 /* GenericHeading */
1176 .chroma .gh {
1177 color: #f5a97f;
1178 font-weight: bold;
1179 }
1180 /* GenericInserted */
1181 .chroma .gi {
1182 color: #a6da95;
1183 background-color: oklch(44.8% 0.119 151.328 / 0.5);
1184 }
1185 /* GenericStrong */
1186 .chroma .gs {
1187 font-weight: bold;
1188 }
1189 /* GenericSubheading */
1190 .chroma .gu {
1191 color: #f5a97f;
1192 font-weight: bold;
1193 }
1194 /* GenericTraceback */
1195 .chroma .gt {
1196 color: #ed8796;
1197 }
1198 /* GenericUnderline */
1199 .chroma .gl {
1200 text-decoration: underline;
1201 }
1202}
1203
1204actor-typeahead {
1205 --color-background: #ffffff;
1206 --color-border: #d1d5db;
1207 --color-shadow: #000000;
1208 --color-hover: #f9fafb;
1209 --color-avatar-fallback: #e5e7eb;
1210 --radius: 0;
1211 --padding-menu: 0rem;
1212 z-index: 1000;
1213}
1214
1215actor-typeahead::part(handle) {
1216 color: #111827;
1217}
1218
1219actor-typeahead::part(menu) {
1220 box-shadow:
1221 0 4px 6px -1px rgb(0 0 0 / 0.1),
1222 0 2px 4px -2px rgb(0 0 0 / 0.1);
1223}
1224
1225@media (prefers-color-scheme: dark) {
1226 actor-typeahead {
1227 --color-background: #1f2937;
1228 --color-border: #4b5563;
1229 --color-shadow: #000000;
1230 --color-hover: #374151;
1231 --color-avatar-fallback: #4b5563;
1232 }
1233
1234 actor-typeahead::part(handle) {
1235 color: #f9fafb;
1236 }
1237}
1238
1239@layer utilities {
1240 .hit-area {
1241 position: relative;
1242 }
1243
1244 .hit-area::before {
1245 content: "";
1246 position: absolute;
1247 top: var(--hit-area-t, 0px);
1248 right: var(--hit-area-r, 0px);
1249 bottom: var(--hit-area-b, 0px);
1250 left: var(--hit-area-l, 0px);
1251 pointer-events: inherit;
1252 }
1253
1254 .hit-area-debug {
1255 position: relative;
1256 }
1257
1258 .hit-area-debug::before {
1259 content: "";
1260 position: absolute;
1261 top: var(--hit-area-t, 0px);
1262 right: var(--hit-area-r, 0px);
1263 bottom: var(--hit-area-b, 0px);
1264 left: var(--hit-area-l, 0px);
1265 pointer-events: inherit;
1266 border: 1px dashed #3b82f6;
1267 background-color: rgba(59, 130, 246, 0.1);
1268 }
1269
1270 .hit-area-debug:hover::before {
1271 border-color: #22c55e;
1272 background-color: rgba(34, 197, 94, 0.1);
1273 }
1274
1275 .hit-area-1 {
1276 --hit-area-t: -0.25rem;
1277 --hit-area-r: -0.25rem;
1278 --hit-area-b: -0.25rem;
1279 --hit-area-l: -0.25rem;
1280 }
1281 .hit-area-2 {
1282 --hit-area-t: -0.5rem;
1283 --hit-area-r: -0.5rem;
1284 --hit-area-b: -0.5rem;
1285 --hit-area-l: -0.5rem;
1286 }
1287 .hit-area-4 {
1288 --hit-area-t: -1rem;
1289 --hit-area-r: -1rem;
1290 --hit-area-b: -1rem;
1291 --hit-area-l: -1rem;
1292 }
1293 .hit-area-6 {
1294 --hit-area-t: -1.5rem;
1295 --hit-area-r: -1.5rem;
1296 --hit-area-b: -1.5rem;
1297 --hit-area-l: -1.5rem;
1298 }
1299 .hit-area-8 {
1300 --hit-area-t: -2rem;
1301 --hit-area-r: -2rem;
1302 --hit-area-b: -2rem;
1303 --hit-area-l: -2rem;
1304 }
1305 .hit-area-10 {
1306 --hit-area-t: -2.5rem;
1307 --hit-area-r: -2.5rem;
1308 --hit-area-b: -2.5rem;
1309 --hit-area-l: -2.5rem;
1310 }
1311 .hit-area-12 {
1312 --hit-area-t: -3rem;
1313 --hit-area-r: -3rem;
1314 --hit-area-b: -3rem;
1315 --hit-area-l: -3rem;
1316 }
1317
1318 .hit-area-l-1 {
1319 --hit-area-l: -0.25rem;
1320 }
1321 .hit-area-l-2 {
1322 --hit-area-l: -0.5rem;
1323 }
1324 .hit-area-l-4 {
1325 --hit-area-l: -1rem;
1326 }
1327 .hit-area-l-6 {
1328 --hit-area-l: -1.5rem;
1329 }
1330 .hit-area-l-8 {
1331 --hit-area-l: -2rem;
1332 }
1333 .hit-area-l-10 {
1334 --hit-area-l: -2.5rem;
1335 }
1336 .hit-area-l-12 {
1337 --hit-area-l: -3rem;
1338 }
1339
1340 .hit-area-r-1 {
1341 --hit-area-r: -0.25rem;
1342 }
1343 .hit-area-r-2 {
1344 --hit-area-r: -0.5rem;
1345 }
1346 .hit-area-r-4 {
1347 --hit-area-r: -1rem;
1348 }
1349 .hit-area-r-6 {
1350 --hit-area-r: -1.5rem;
1351 }
1352 .hit-area-r-8 {
1353 --hit-area-r: -2rem;
1354 }
1355 .hit-area-r-10 {
1356 --hit-area-r: -2.5rem;
1357 }
1358 .hit-area-r-12 {
1359 --hit-area-r: -3rem;
1360 }
1361
1362 .hit-area-t-1 {
1363 --hit-area-t: -0.25rem;
1364 }
1365 .hit-area-t-2 {
1366 --hit-area-t: -0.5rem;
1367 }
1368 .hit-area-t-4 {
1369 --hit-area-t: -1rem;
1370 }
1371 .hit-area-t-6 {
1372 --hit-area-t: -1.5rem;
1373 }
1374 .hit-area-t-8 {
1375 --hit-area-t: -2rem;
1376 }
1377 .hit-area-t-10 {
1378 --hit-area-t: -2.5rem;
1379 }
1380 .hit-area-t-12 {
1381 --hit-area-t: -3rem;
1382 }
1383
1384 .hit-area-b-1 {
1385 --hit-area-b: -0.25rem;
1386 }
1387 .hit-area-b-2 {
1388 --hit-area-b: -0.5rem;
1389 }
1390 .hit-area-b-4 {
1391 --hit-area-b: -1rem;
1392 }
1393 .hit-area-b-6 {
1394 --hit-area-b: -1.5rem;
1395 }
1396 .hit-area-b-8 {
1397 --hit-area-b: -2rem;
1398 }
1399 .hit-area-b-10 {
1400 --hit-area-b: -2.5rem;
1401 }
1402 .hit-area-b-12 {
1403 --hit-area-b: -3rem;
1404 }
1405
1406 .hit-area-x-1 {
1407 --hit-area-l: -0.25rem;
1408 --hit-area-r: -0.25rem;
1409 }
1410 .hit-area-x-2 {
1411 --hit-area-l: -0.5rem;
1412 --hit-area-r: -0.5rem;
1413 }
1414 .hit-area-x-4 {
1415 --hit-area-l: -1rem;
1416 --hit-area-r: -1rem;
1417 }
1418 .hit-area-x-6 {
1419 --hit-area-l: -1.5rem;
1420 --hit-area-r: -1.5rem;
1421 }
1422 .hit-area-x-8 {
1423 --hit-area-l: -2rem;
1424 --hit-area-r: -2rem;
1425 }
1426 .hit-area-x-10 {
1427 --hit-area-l: -2.5rem;
1428 --hit-area-r: -2.5rem;
1429 }
1430 .hit-area-x-12 {
1431 --hit-area-l: -3rem;
1432 --hit-area-r: -3rem;
1433 }
1434
1435 .hit-area-y-1 {
1436 --hit-area-t: -0.25rem;
1437 --hit-area-b: -0.25rem;
1438 }
1439 .hit-area-y-2 {
1440 --hit-area-t: -0.5rem;
1441 --hit-area-b: -0.5rem;
1442 }
1443 .hit-area-y-4 {
1444 --hit-area-t: -1rem;
1445 --hit-area-b: -1rem;
1446 }
1447 .hit-area-y-6 {
1448 --hit-area-t: -1.5rem;
1449 --hit-area-b: -1.5rem;
1450 }
1451 .hit-area-y-8 {
1452 --hit-area-t: -2rem;
1453 --hit-area-b: -2rem;
1454 }
1455 .hit-area-y-10 {
1456 --hit-area-t: -2.5rem;
1457 --hit-area-b: -2.5rem;
1458 }
1459 .hit-area-y-12 {
1460 --hit-area-t: -3rem;
1461 --hit-area-b: -3rem;
1462 }
1463
1464 /* terminal-to-html: catpuccin colors */
1465 .term-fg30 {
1466 color: #6c6f85;
1467 } /* black */
1468 .term-fg31 {
1469 color: #d20f39;
1470 } /* red */
1471 .term-fg32 {
1472 color: #40a02b;
1473 } /* green */
1474 .term-fg33 {
1475 color: #df8e1d;
1476 } /* yellow */
1477 .term-fg34 {
1478 color: #1e66f5;
1479 } /* blue */
1480 .term-fg35 {
1481 color: #8839ef;
1482 } /* magenta */
1483 .term-fg36 {
1484 color: #179299;
1485 } /* cyan */
1486 .term-fg37 {
1487 color: #4c4f69;
1488 } /* white */
1489 .term-fgi90 {
1490 color: #8c8fa1;
1491 } /* bright-black */
1492 .term-fgi91 {
1493 color: #e64553;
1494 } /* bright-red */
1495 .term-fgi92 {
1496 color: #40a02b;
1497 } /* bright-green */
1498 .term-fgi93 {
1499 color: #e5c890;
1500 } /* bright-yellow */
1501 .term-fgi94 {
1502 color: #209fb5;
1503 } /* bright-blue */
1504 .term-fgi95 {
1505 color: #ea76cb;
1506 } /* bright-magenta */
1507 .term-fgi96 {
1508 color: #04a5e5;
1509 } /* bright-cyan */
1510 .term-fgi97 {
1511 color: #bcc0cc;
1512 } /* bright-white */
1513 .term-bg40 {
1514 background-color: #6c6f85;
1515 } /* black */
1516 .term-bg41 {
1517 background-color: #d20f39;
1518 } /* red */
1519 .term-bg42 {
1520 background-color: #40a02b;
1521 } /* green */
1522 .term-bg43 {
1523 background-color: #df8e1d;
1524 } /* yellow */
1525 .term-bg44 {
1526 background-color: #1e66f5;
1527 } /* blue */
1528 .term-bg45 {
1529 background-color: #8839ef;
1530 } /* magenta */
1531 .term-bg46 {
1532 background-color: #179299;
1533 } /* cyan */
1534 .term-bg47 {
1535 background-color: #dce0e8;
1536 } /* white */
1537 .term-fg1 {
1538 @apply font-bold;
1539 }
1540 .term-fg2 {
1541 @apply opacity-60;
1542 }
1543 .term-fg3 {
1544 @apply italic;
1545 }
1546 .term-fg4 {
1547 @apply underline;
1548 }
1549 .term-fg9 {
1550 @apply line-through;
1551 }
1552
1553 @media (prefers-color-scheme: dark) {
1554 .term-fg30 {
1555 color: #a5adcb;
1556 } /* black */
1557 .term-fg31 {
1558 color: #ed8796;
1559 } /* red */
1560 .term-fg32 {
1561 color: #a6da95;
1562 } /* green */
1563 .term-fg33 {
1564 color: #eed49f;
1565 } /* yellow */
1566 .term-fg34 {
1567 color: #8aadf4;
1568 } /* blue */
1569 .term-fg35 {
1570 color: #c6a0f6;
1571 } /* magenta */
1572 .term-fg36 {
1573 color: #8bd5ca;
1574 } /* cyan */
1575 .term-fg37 {
1576 color: #cad3f5;
1577 } /* white */
1578 .term-fgi90 {
1579 color: #8087a2;
1580 } /* bright-black */
1581 .term-fgi91 {
1582 color: #f5bde6;
1583 } /* bright-red */
1584 .term-fgi92 {
1585 color: #a6da95;
1586 } /* bright-green */
1587 .term-fgi93 {
1588 color: #f5a97f;
1589 } /* bright-yellow */
1590 .term-fgi94 {
1591 color: #7dc4e4;
1592 } /* bright-blue */
1593 .term-fgi95 {
1594 color: #f4dbd6;
1595 } /* bright-magenta */
1596 .term-fgi96 {
1597 color: #91d7e3;
1598 } /* bright-cyan */
1599 .term-fgi97 {
1600 color: #f0c6c6;
1601 } /* bright-white */
1602 .term-bg40 {
1603 background-color: #a5adcb;
1604 } /* black */
1605 .term-bg41 {
1606 background-color: #ed8796;
1607 } /* red */
1608 .term-bg42 {
1609 background-color: #a6da95;
1610 } /* green */
1611 .term-bg43 {
1612 background-color: #eed49f;
1613 } /* yellow */
1614 .term-bg44 {
1615 background-color: #8aadf4;
1616 } /* blue */
1617 .term-bg45 {
1618 background-color: #c6a0f6;
1619 } /* magenta */
1620 .term-bg46 {
1621 background-color: #8bd5ca;
1622 } /* cyan */
1623 .term-bg47 {
1624 background-color: #494d64;
1625 } /* white */
1626 }
1627}
1628
1629.focus-pill {
1630 --r: 10px;
1631
1632 &::before,
1633 &::after {
1634 @apply bg-indigo-600 absolute bottom-0;
1635 content: "";
1636 width: var(--r);
1637 height: var(--r);
1638 -webkit-mask: radial-gradient(var(--r) at var(--r) 0, #0000 98%, #000);
1639 mask: radial-gradient(var(--r) at var(--r) 0, #0000 98%, #000);
1640 }
1641
1642 &::before {
1643 left: calc(-1 * var(--r));
1644 @apply -scale-x-100;
1645 }
1646
1647 &::after {
1648 right: calc(-1 * var(--r));
1649 }
1650}