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