forked from tangled.org/core
Monorepo for Tangled — https://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"); 8 font-weight: normal; 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") format("woff2"); 16 font-weight: normal; 17 font-style: italic; 18 font-display: swap; 19 } 20 21 @font-face { 22 font-family: "InterVariable"; 23 src: url("/static/fonts/InterDisplay-Bold.woff2") format("woff2"); 24 font-weight: bold; 25 font-style: normal; 26 font-display: swap; 27 } 28 29 @font-face { 30 font-family: "InterVariable"; 31 src: url("/static/fonts/InterDisplay-BoldItalic.woff2") format("woff2"); 32 font-weight: bold; 33 font-style: italic; 34 font-display: swap; 35 } 36 37 @font-face { 38 font-family: "IBMPlexMono"; 39 src: url("/static/fonts/IBMPlexMono-Regular.woff2") format("woff2"); 40 font-weight: normal; 41 font-style: normal; 42 font-display: swap; 43 } 44 45 @font-face { 46 font-family: "IBMPlexMono"; 47 src: url("/static/fonts/IBMPlexMono-Italic.woff2") format("woff2"); 48 font-weight: normal; 49 font-style: italic; 50 font-display: swap; 51 } 52 53 @font-face { 54 font-family: "IBMPlexMono"; 55 src: url("/static/fonts/IBMPlexMono-Bold.woff2") format("woff2"); 56 font-weight: bold; 57 font-style: normal; 58 font-display: swap; 59 } 60 61 @font-face { 62 font-family: "IBMPlexMono"; 63 src: url("/static/fonts/IBMPlexMono-BoldItalic.woff2") format("woff2"); 64 font-weight: bold; 65 font-style: italic; 66 font-display: swap; 67 } 68 69 ::selection { 70 @apply bg-yellow-400 text-black bg-opacity-30 dark:bg-yellow-600 dark:bg-opacity-50 dark:text-white; 71 } 72 73 @layer base { 74 html { 75 font-size: 14px; 76 scrollbar-gutter: stable; 77 } 78 @supports (font-variation-settings: normal) { 79 html { 80 font-feature-settings: 81 "kern" 1, 82 "liga" 1, 83 "cv05" 1, 84 "tnum" 1; 85 } 86 } 87 88 a { 89 @apply no-underline text-black hover:underline hover:text-gray-800 dark:text-white dark:hover:text-gray-300; 90 } 91 92 label { 93 @apply block text-gray-900 text-sm font-bold py-2 uppercase dark:text-gray-100; 94 } 95 input { 96 @apply border border-gray-400 block rounded bg-gray-50 focus:ring-black p-3 dark:bg-gray-800 dark:border-gray-600 dark:text-white dark:focus:ring-gray-400; 97 } 98 textarea { 99 @apply border border-gray-400 block rounded bg-gray-50 focus:ring-black p-3 dark:bg-gray-800 dark:border-gray-600 dark:text-white dark:focus:ring-gray-400; 100 } 101 details summary::-webkit-details-marker { 102 display: none; 103 } 104 105 code { 106 @apply font-mono rounded bg-gray-100 dark:bg-gray-700 text-black dark:text-white; 107 } 108 } 109 110 @layer components { 111 .btn { 112 @apply relative z-10 inline-flex min-h-[30px] cursor-pointer items-center justify-center 113 bg-transparent px-2 pb-[0.2rem] text-sm text-gray-900 114 before:absolute before:inset-0 before:-z-10 before:block before:rounded 115 before:border before:border-gray-200 before:bg-white 116 before:shadow-[inset_0_-2px_0_0_rgba(0,0,0,0.1),0_1px_0_0_rgba(0,0,0,0.04)] 117 before:content-[''] before:transition-all before:duration-150 before:ease-in-out 118 hover:before:shadow-[inset_0_-2px_0_0_rgba(0,0,0,0.15),0_2px_1px_0_rgba(0,0,0,0.06)] 119 hover:before:bg-gray-50 120 dark:hover:before:bg-gray-700 121 active:before:shadow-[inset_0_2px_2px_0_rgba(0,0,0,0.1)] 122 focus:outline-none focus-visible:before:outline focus-visible:before:outline-2 focus-visible:before:outline-gray-400 123 disabled:cursor-not-allowed disabled:opacity-50 124 dark:text-gray-100 dark:before:bg-gray-800 dark:before:border-gray-700; 125 } 126 127 .btn-create { 128 @apply btn text-white 129 before:bg-green-600 hover:before:bg-green-700 130 dark:before:bg-green-700 dark:hover:before:bg-green-800 131 before:border before:border-green-700 hover:before:border-green-800 132 focus-visible:before:outline-green-500 133 disabled:before:bg-green-400 dark:disabled:before:bg-green-600; 134 } 135 136 .prose hr { 137 @apply my-2; 138 } 139 140 .prose li:has(input) { 141 @apply list-none; 142 } 143 144 .prose ul:has(input) { 145 @apply pl-2; 146 } 147 148 .prose .heading .anchor { 149 @apply no-underline mx-2 opacity-0; 150 } 151 152 .prose .heading:hover .anchor { 153 @apply opacity-70; 154 } 155 156 .prose .heading .anchor:hover { 157 @apply opacity-70; 158 } 159 160 .prose a.footnote-backref { 161 @apply no-underline; 162 } 163 164 .prose a.mention { 165 @apply no-underline hover:underline; 166 } 167 168 .prose li { 169 @apply my-0 py-0; 170 } 171 172 .prose ul, 173 .prose ol { 174 @apply my-1 py-0; 175 } 176 177 .prose img { 178 display: inline; 179 margin: 0; 180 vertical-align: middle; 181 } 182 183 .prose input { 184 @apply inline-block my-0 mb-1 mx-1; 185 } 186 187 .prose input[type="checkbox"] { 188 @apply disabled:accent-blue-500 checked:accent-blue-500 disabled:checked:accent-blue-500; 189 } 190 191 /* Base callout */ 192 details[data-callout] { 193 @apply border-l-4 pl-3 py-2 text-gray-800 dark:text-gray-200 my-4; 194 } 195 196 details[data-callout] > summary { 197 @apply font-bold cursor-pointer mb-1; 198 } 199 200 details[data-callout] > .callout-content { 201 @apply text-sm leading-snug; 202 } 203 204 /* Note (blue) */ 205 details[data-callout="note" i] { 206 @apply border-blue-400 dark:border-blue-500; 207 } 208 details[data-callout="note" i] > summary { 209 @apply text-blue-700 dark:text-blue-400; 210 } 211 212 /* Important (purple) */ 213 details[data-callout="important" i] { 214 @apply border-purple-400 dark:border-purple-500; 215 } 216 details[data-callout="important" i] > summary { 217 @apply text-purple-700 dark:text-purple-400; 218 } 219 220 /* Warning (yellow) */ 221 details[data-callout="warning" i] { 222 @apply border-yellow-400 dark:border-yellow-500; 223 } 224 details[data-callout="warning" i] > summary { 225 @apply text-yellow-700 dark:text-yellow-400; 226 } 227 228 /* Caution (red) */ 229 details[data-callout="caution" i] { 230 @apply border-red-400 dark:border-red-500; 231 } 232 details[data-callout="caution" i] > summary { 233 @apply text-red-700 dark:text-red-400; 234 } 235 236 /* Tip (green) */ 237 details[data-callout="tip" i] { 238 @apply border-green-400 dark:border-green-500; 239 } 240 details[data-callout="tip" i] > summary { 241 @apply text-green-700 dark:text-green-400; 242 } 243 244 /* Optional: hide the disclosure arrow like GitHub */ 245 details[data-callout] > summary::-webkit-details-marker { 246 display: none; 247 } 248 } 249 @layer utilities { 250 .error { 251 @apply py-1 text-red-400 dark:text-red-300; 252 } 253 .success { 254 @apply py-1 text-gray-900 dark:text-gray-100; 255 } 256 } 257} 258 259/* Background */ 260.bg { 261 color: #4c4f69; 262 background-color: #eff1f5; 263} 264/* PreWrapper */ 265.chroma { 266 color: #4c4f69; 267} 268/* Error */ 269.chroma .err { 270 color: #d20f39; 271} 272/* LineLink */ 273.chroma .lnlinks { 274 outline: none; 275 text-decoration: none; 276 color: inherit; 277} 278/* LineTableTD */ 279.chroma .lntd { 280 vertical-align: top; 281 padding: 0; 282 margin: 0; 283 border: 0; 284} 285/* LineTable */ 286.chroma .lntable { 287 border-spacing: 0; 288 padding: 0; 289 margin: 0; 290 border: 0; 291} 292/* LineHighlight */ 293.chroma .hl { 294 @apply bg-amber-400/30 dark:bg-amber-500/20; 295} 296 297/* LineNumbersTable */ 298.chroma .lnt { 299 white-space: pre; 300 -webkit-user-select: none; 301 user-select: none; 302 margin-right: 0.4em; 303 padding: 0 0.4em 0 0.4em; 304 color: #8c8fa1; 305} 306/* LineNumbers */ 307.chroma .ln { 308 white-space: pre; 309 -webkit-user-select: none; 310 user-select: none; 311 margin-right: 0.4em; 312 padding: 0 0.4em 0 0.4em; 313 color: #8c8fa1; 314} 315/* Line */ 316.chroma .line { 317 display: flex; 318} 319/* Keyword */ 320.chroma .k { 321 color: #8839ef; 322} 323/* KeywordConstant */ 324.chroma .kc { 325 color: #fe640b; 326} 327/* KeywordDeclaration */ 328.chroma .kd { 329 color: #d20f39; 330} 331/* KeywordNamespace */ 332.chroma .kn { 333 color: #179299; 334} 335/* KeywordPseudo */ 336.chroma .kp { 337 color: #8839ef; 338} 339/* KeywordReserved */ 340.chroma .kr { 341 color: #8839ef; 342} 343/* KeywordType */ 344.chroma .kt { 345 color: #d20f39; 346} 347/* NameAttribute */ 348.chroma .na { 349 color: #1e66f5; 350} 351/* NameBuiltin */ 352.chroma .nb { 353 color: #04a5e5; 354} 355/* NameBuiltinPseudo */ 356.chroma .bp { 357 color: #04a5e5; 358} 359/* NameClass */ 360.chroma .nc { 361 color: #df8e1d; 362} 363/* NameConstant */ 364.chroma .no { 365 color: #df8e1d; 366} 367/* NameDecorator */ 368.chroma .nd { 369 color: #1e66f5; 370 font-weight: bold; 371} 372/* NameEntity */ 373.chroma .ni { 374 color: #179299; 375} 376/* NameException */ 377.chroma .ne { 378 color: #fe640b; 379} 380/* NameFunction */ 381.chroma .nf { 382 color: #1e66f5; 383} 384/* NameFunctionMagic */ 385.chroma .fm { 386 color: #1e66f5; 387} 388/* NameLabel */ 389.chroma .nl { 390 color: #04a5e5; 391} 392/* NameNamespace */ 393.chroma .nn { 394 color: #fe640b; 395} 396/* NameProperty */ 397.chroma .py { 398 color: #fe640b; 399} 400/* NameTag */ 401.chroma .nt { 402 color: #8839ef; 403} 404/* NameVariable */ 405.chroma .nv { 406 color: #dc8a78; 407} 408/* NameVariableClass */ 409.chroma .vc { 410 color: #dc8a78; 411} 412/* NameVariableGlobal */ 413.chroma .vg { 414 color: #dc8a78; 415} 416/* NameVariableInstance */ 417.chroma .vi { 418 color: #dc8a78; 419} 420/* NameVariableMagic */ 421.chroma .vm { 422 color: #dc8a78; 423} 424/* LiteralString */ 425.chroma .s { 426 color: #40a02b; 427} 428/* LiteralStringAffix */ 429.chroma .sa { 430 color: #d20f39; 431} 432/* LiteralStringBacktick */ 433.chroma .sb { 434 color: #40a02b; 435} 436/* LiteralStringChar */ 437.chroma .sc { 438 color: #40a02b; 439} 440/* LiteralStringDelimiter */ 441.chroma .dl { 442 color: #1e66f5; 443} 444/* LiteralStringDoc */ 445.chroma .sd { 446 color: #9ca0b0; 447} 448/* LiteralStringDouble */ 449.chroma .s2 { 450 color: #40a02b; 451} 452/* LiteralStringEscape */ 453.chroma .se { 454 color: #1e66f5; 455} 456/* LiteralStringHeredoc */ 457.chroma .sh { 458 color: #9ca0b0; 459} 460/* LiteralStringInterpol */ 461.chroma .si { 462 color: #40a02b; 463} 464/* LiteralStringOther */ 465.chroma .sx { 466 color: #40a02b; 467} 468/* LiteralStringRegex */ 469.chroma .sr { 470 color: #179299; 471} 472/* LiteralStringSingle */ 473.chroma .s1 { 474 color: #40a02b; 475} 476/* LiteralStringSymbol */ 477.chroma .ss { 478 color: #40a02b; 479} 480/* LiteralNumber */ 481.chroma .m { 482 color: #fe640b; 483} 484/* LiteralNumberBin */ 485.chroma .mb { 486 color: #fe640b; 487} 488/* LiteralNumberFloat */ 489.chroma .mf { 490 color: #fe640b; 491} 492/* LiteralNumberHex */ 493.chroma .mh { 494 color: #fe640b; 495} 496/* LiteralNumberInteger */ 497.chroma .mi { 498 color: #fe640b; 499} 500/* LiteralNumberIntegerLong */ 501.chroma .il { 502 color: #fe640b; 503} 504/* LiteralNumberOct */ 505.chroma .mo { 506 color: #fe640b; 507} 508/* Operator */ 509.chroma .o { 510 color: #04a5e5; 511 font-weight: bold; 512} 513/* OperatorWord */ 514.chroma .ow { 515 color: #04a5e5; 516 font-weight: bold; 517} 518/* Comment */ 519.chroma .c { 520 color: #9ca0b0; 521 font-style: italic; 522} 523/* CommentHashbang */ 524.chroma .ch { 525 color: #9ca0b0; 526 font-style: italic; 527} 528/* CommentMultiline */ 529.chroma .cm { 530 color: #9ca0b0; 531 font-style: italic; 532} 533/* CommentSingle */ 534.chroma .c1 { 535 color: #9ca0b0; 536 font-style: italic; 537} 538/* CommentSpecial */ 539.chroma .cs { 540 color: #9ca0b0; 541 font-style: italic; 542} 543/* CommentPreproc */ 544.chroma .cp { 545 color: #9ca0b0; 546 font-style: italic; 547} 548/* CommentPreprocFile */ 549.chroma .cpf { 550 color: #9ca0b0; 551 font-weight: bold; 552 font-style: italic; 553} 554/* GenericDeleted */ 555.chroma .gd { 556 color: #d20f39; 557 background-color: oklch(93.6% 0.032 17.717); 558} 559/* GenericEmph */ 560.chroma .ge { 561 font-style: italic; 562} 563/* GenericError */ 564.chroma .gr { 565 color: #d20f39; 566} 567/* GenericHeading */ 568.chroma .gh { 569 color: #fe640b; 570 font-weight: bold; 571} 572/* GenericInserted */ 573.chroma .gi { 574 color: #40a02b; 575 background-color: oklch(96.2% 0.044 156.743); 576} 577/* GenericStrong */ 578.chroma .gs { 579 font-weight: bold; 580} 581/* GenericSubheading */ 582.chroma .gu { 583 color: #fe640b; 584 font-weight: bold; 585} 586/* GenericTraceback */ 587.chroma .gt { 588 color: #d20f39; 589} 590/* GenericUnderline */ 591.chroma .gl { 592 text-decoration: underline; 593} 594 595@media (prefers-color-scheme: dark) { 596 /* Background */ 597 .bg { 598 color: #cad3f5; 599 background-color: #24273a; 600 } 601 /* PreWrapper */ 602 .chroma { 603 color: #cad3f5; 604 } 605 /* Error */ 606 .chroma .err { 607 color: #ed8796; 608 } 609 /* LineLink */ 610 .chroma .lnlinks { 611 outline: none; 612 text-decoration: none; 613 color: inherit; 614 } 615 /* LineTableTD */ 616 .chroma .lntd { 617 vertical-align: top; 618 padding: 0; 619 margin: 0; 620 border: 0; 621 } 622 /* LineTable */ 623 .chroma .lntable { 624 border-spacing: 0; 625 padding: 0; 626 margin: 0; 627 border: 0; 628 } 629 /* LineHighlight */ 630 .chroma .hl { 631 background-color: #494d64; 632 } 633 /* LineNumbersTable */ 634 .chroma .lnt { 635 white-space: pre; 636 -webkit-user-select: none; 637 user-select: none; 638 margin-right: 0.4em; 639 padding: 0 0.4em 0 0.4em; 640 color: #8087a2; 641 } 642 /* LineNumbers */ 643 .chroma .ln { 644 white-space: pre; 645 -webkit-user-select: none; 646 user-select: none; 647 margin-right: 0.4em; 648 padding: 0 0.4em 0 0.4em; 649 color: #8087a2; 650 } 651 /* Line */ 652 .chroma .line { 653 display: flex; 654 } 655 /* Keyword */ 656 .chroma .k { 657 color: #c6a0f6; 658 } 659 /* KeywordConstant */ 660 .chroma .kc { 661 color: #f5a97f; 662 } 663 /* KeywordDeclaration */ 664 .chroma .kd { 665 color: #ed8796; 666 } 667 /* KeywordNamespace */ 668 .chroma .kn { 669 color: #8bd5ca; 670 } 671 /* KeywordPseudo */ 672 .chroma .kp { 673 color: #c6a0f6; 674 } 675 /* KeywordReserved */ 676 .chroma .kr { 677 color: #c6a0f6; 678 } 679 /* KeywordType */ 680 .chroma .kt { 681 color: #ed8796; 682 } 683 /* NameAttribute */ 684 .chroma .na { 685 color: #8aadf4; 686 } 687 /* NameBuiltin */ 688 .chroma .nb { 689 color: #91d7e3; 690 } 691 /* NameBuiltinPseudo */ 692 .chroma .bp { 693 color: #91d7e3; 694 } 695 /* NameClass */ 696 .chroma .nc { 697 color: #eed49f; 698 } 699 /* NameConstant */ 700 .chroma .no { 701 color: #eed49f; 702 } 703 /* NameDecorator */ 704 .chroma .nd { 705 color: #8aadf4; 706 font-weight: bold; 707 } 708 /* NameEntity */ 709 .chroma .ni { 710 color: #8bd5ca; 711 } 712 /* NameException */ 713 .chroma .ne { 714 color: #f5a97f; 715 } 716 /* NameFunction */ 717 .chroma .nf { 718 color: #8aadf4; 719 } 720 /* NameFunctionMagic */ 721 .chroma .fm { 722 color: #8aadf4; 723 } 724 /* NameLabel */ 725 .chroma .nl { 726 color: #91d7e3; 727 } 728 /* NameNamespace */ 729 .chroma .nn { 730 color: #f5a97f; 731 } 732 /* NameProperty */ 733 .chroma .py { 734 color: #f5a97f; 735 } 736 /* NameTag */ 737 .chroma .nt { 738 color: #c6a0f6; 739 } 740 /* NameVariable */ 741 .chroma .nv { 742 color: #f4dbd6; 743 } 744 /* NameVariableClass */ 745 .chroma .vc { 746 color: #f4dbd6; 747 } 748 /* NameVariableGlobal */ 749 .chroma .vg { 750 color: #f4dbd6; 751 } 752 /* NameVariableInstance */ 753 .chroma .vi { 754 color: #f4dbd6; 755 } 756 /* NameVariableMagic */ 757 .chroma .vm { 758 color: #f4dbd6; 759 } 760 /* LiteralString */ 761 .chroma .s { 762 color: #a6da95; 763 } 764 /* LiteralStringAffix */ 765 .chroma .sa { 766 color: #ed8796; 767 } 768 /* LiteralStringBacktick */ 769 .chroma .sb { 770 color: #a6da95; 771 } 772 /* LiteralStringChar */ 773 .chroma .sc { 774 color: #a6da95; 775 } 776 /* LiteralStringDelimiter */ 777 .chroma .dl { 778 color: #8aadf4; 779 } 780 /* LiteralStringDoc */ 781 .chroma .sd { 782 color: #6e738d; 783 } 784 /* LiteralStringDouble */ 785 .chroma .s2 { 786 color: #a6da95; 787 } 788 /* LiteralStringEscape */ 789 .chroma .se { 790 color: #8aadf4; 791 } 792 /* LiteralStringHeredoc */ 793 .chroma .sh { 794 color: #6e738d; 795 } 796 /* LiteralStringInterpol */ 797 .chroma .si { 798 color: #a6da95; 799 } 800 /* LiteralStringOther */ 801 .chroma .sx { 802 color: #a6da95; 803 } 804 /* LiteralStringRegex */ 805 .chroma .sr { 806 color: #8bd5ca; 807 } 808 /* LiteralStringSingle */ 809 .chroma .s1 { 810 color: #a6da95; 811 } 812 /* LiteralStringSymbol */ 813 .chroma .ss { 814 color: #a6da95; 815 } 816 /* LiteralNumber */ 817 .chroma .m { 818 color: #f5a97f; 819 } 820 /* LiteralNumberBin */ 821 .chroma .mb { 822 color: #f5a97f; 823 } 824 /* LiteralNumberFloat */ 825 .chroma .mf { 826 color: #f5a97f; 827 } 828 /* LiteralNumberHex */ 829 .chroma .mh { 830 color: #f5a97f; 831 } 832 /* LiteralNumberInteger */ 833 .chroma .mi { 834 color: #f5a97f; 835 } 836 /* LiteralNumberIntegerLong */ 837 .chroma .il { 838 color: #f5a97f; 839 } 840 /* LiteralNumberOct */ 841 .chroma .mo { 842 color: #f5a97f; 843 } 844 /* Operator */ 845 .chroma .o { 846 color: #91d7e3; 847 font-weight: bold; 848 } 849 /* OperatorWord */ 850 .chroma .ow { 851 color: #91d7e3; 852 font-weight: bold; 853 } 854 /* Comment */ 855 .chroma .c { 856 color: #6e738d; 857 font-style: italic; 858 } 859 /* CommentHashbang */ 860 .chroma .ch { 861 color: #6e738d; 862 font-style: italic; 863 } 864 /* CommentMultiline */ 865 .chroma .cm { 866 color: #6e738d; 867 font-style: italic; 868 } 869 /* CommentSingle */ 870 .chroma .c1 { 871 color: #6e738d; 872 font-style: italic; 873 } 874 /* CommentSpecial */ 875 .chroma .cs { 876 color: #6e738d; 877 font-style: italic; 878 } 879 /* CommentPreproc */ 880 .chroma .cp { 881 color: #6e738d; 882 font-style: italic; 883 } 884 /* CommentPreprocFile */ 885 .chroma .cpf { 886 color: #6e738d; 887 font-weight: bold; 888 font-style: italic; 889 } 890 /* GenericDeleted */ 891 .chroma .gd { 892 color: #ed8796; 893 background-color: oklch(44.4% 0.177 26.899 / 0.5); 894 } 895 /* GenericEmph */ 896 .chroma .ge { 897 font-style: italic; 898 } 899 /* GenericError */ 900 .chroma .gr { 901 color: #ed8796; 902 } 903 /* GenericHeading */ 904 .chroma .gh { 905 color: #f5a97f; 906 font-weight: bold; 907 } 908 /* GenericInserted */ 909 .chroma .gi { 910 color: #a6da95; 911 background-color: oklch(44.8% 0.119 151.328 / 0.5); 912 } 913 /* GenericStrong */ 914 .chroma .gs { 915 font-weight: bold; 916 } 917 /* GenericSubheading */ 918 .chroma .gu { 919 color: #f5a97f; 920 font-weight: bold; 921 } 922 /* GenericTraceback */ 923 .chroma .gt { 924 color: #ed8796; 925 } 926 /* GenericUnderline */ 927 .chroma .gl { 928 text-decoration: underline; 929 } 930}