at main 1252 lines 24 kB view raw
1/* CSS Reset */ 2*, 3*::before, 4*::after { 5 box-sizing: border-box; 6 margin: 0; 7 padding: 0; 8} 9 10/* Base Styles */ 11html { 12 font-size: var(--spacing-base); 13 line-height: var(--spacing-line-height); 14} 15 16/* Scoped to notebook-content container */ 17.notebook-content { 18 font-family: var(--font-body); 19 color: var(--color-text); 20 background-color: var(--color-base); 21 margin: 0 auto; 22 padding: 1rem 0rem; 23 word-wrap: break-word; 24 overflow-wrap: break-word; 25 counter-reset: sidenote-counter; 26 max-width: 95ch; 27} 28 29/* When sidenotes exist, body padding creates the gutter */ 30/* Left padding shrinks first as viewport narrows, right stays for sidenotes */ 31body:has(.sidenote) { 32 padding-inline-start: clamp(1rem, calc((100vw - 95ch - 15.5rem - 2rem) / 2), 15.5rem); 33 padding-inline-end: 15.5rem; 34} 35 36/* Typography */ 37h1, 38h2, 39h3, 40h4, 41h5, 42h6 { 43 font-family: var(--font-heading); 44 margin-top: calc(1rem * var(--spacing-scale)); 45 margin-bottom: 0.5rem; 46 line-height: 1.2; 47} 48 49h1 { 50 font-size: 2rem; 51 color: var(--color-secondary); 52} 53h2 { 54 font-size: 1.5rem; 55 color: var(--color-primary); 56} 57h3 { 58 font-size: 1.25rem; 59 color: var(--color-secondary); 60} 61h4 { 62 font-size: 1.2rem; 63 color: var(--color-tertiary); 64} 65h5 { 66 font-size: 1.125rem; 67 color: var(--color-secondary); 68} 69h6 { 70 font-size: 1rem; 71} 72 73p { 74 margin-bottom: 1rem; 75 word-wrap: break-word; 76 overflow-wrap: break-word; 77} 78 79a { 80 color: var(--color-link); 81 text-decoration: none; 82} 83 84.notebook-content a:hover { 85 color: var(--color-emphasis); 86 text-decoration: underline; 87} 88 89/* Wikilink validation (editor) */ 90.link-valid { 91 color: var(--color-link); 92} 93 94.link-broken { 95 color: var(--color-error); 96 text-decoration: underline wavy; 97 text-decoration-color: var(--color-error); 98 opacity: 0.8; 99} 100 101/* Selection */ 102::selection { 103 background: var(--color-highlight); 104 color: var(--color-text); 105} 106 107/* Lists */ 108ul, 109ol { 110 margin-inline-start: 1rem; 111 margin-bottom: 1rem; 112} 113 114li { 115 margin-bottom: 0.25rem; 116} 117 118/* Code */ 119code { 120 font-family: var(--font-mono); 121 background: var(--color-surface); 122 padding: 0.125rem 0.25rem; 123 border-radius: 4px; 124 font-size: 0.9em; 125} 126 127pre { 128 overflow-x: auto; 129 margin-bottom: 1rem; 130 border-radius: 5px; 131 border: 1px solid var(--color-border); 132 box-sizing: border-box; 133} 134 135/* Code blocks inside pre are handled by syntax theme */ 136pre code { 137 display: block; 138 width: fit-content; 139 min-width: 100%; 140 padding: 1rem; 141 background: var(--color-surface); 142} 143 144/* Math */ 145.math { 146 font-family: var(--font-mono); 147} 148 149.math-display { 150 display: block; 151 margin: 1rem 0; 152 text-align: center; 153} 154 155/* Blockquotes */ 156blockquote { 157 border-inline-start: 2px solid var(--color-secondary); 158 background: var(--color-surface); 159 padding-inline-start: 1rem; 160 padding-inline-end: 1rem; 161 padding-top: 0.5rem; 162 padding-bottom: 0.04rem; 163 margin: 1rem 0; 164 font-size: 0.95em; 165 border-bottom-right-radius: 5px; 166 border-top-right-radius: 5px; 167} 168 169/* Tables */ 170table { 171 border-collapse: collapse; 172 width: 100%; 173 margin-bottom: 1rem; 174 display: block; 175 overflow-x: auto; 176 max-width: 100%; 177} 178 179th, 180td { 181 border: 1px solid var(--color-border); 182 padding: 0.5rem; 183 text-align: start; 184} 185 186th { 187 background: var(--color-surface); 188 font-weight: 600; 189} 190 191tr:hover { 192 background: var(--color-surface); 193} 194 195/* Footnotes */ 196.footnote-reference { 197 font-size: 0.8em; 198 color: var(--color-subtle); 199} 200 201.footnote-definition { 202 order: 9999; 203 margin: 0; 204 padding: 0.5rem 0; 205 font-size: 0.9em; 206} 207 208.footnote-definition:first-of-type { 209 margin-top: 2rem; 210 padding-top: 1rem; 211 border-top: 2px solid var(--color-border); 212} 213 214.footnote-definition:first-of-type::before { 215 content: "Footnotes"; 216 display: block; 217 font-weight: 600; 218 font-size: 1.1em; 219 color: var(--color-subtle); 220 margin-bottom: 0.75rem; 221} 222 223.footnote-definition-label { 224 font-weight: 600; 225 margin-inline-end: 0.5rem; 226 color: var(--color-primary); 227} 228 229/* Aside blocks (via WeaverBlock prefix) - scoped to notebook content */ 230.notebook-content aside, 231.notebook-content .aside { 232 float: inline-start; 233 width: 40%; 234 margin: 0 1.5rem 1rem 0; 235 padding: 1rem; 236 background: var(--color-surface); 237 border-inline-end: 3px solid var(--color-primary); 238 font-size: 0.9em; 239 clear: inline-start; 240} 241 242.notebook-content aside > *:first-child, 243.notebook-content .aside > *:first-child { 244 margin-top: 0; 245} 246 247.notebook-content aside > *:last-child, 248.notebook-content .aside > *:last-child { 249 margin-bottom: 0; 250} 251 252/* Reset blockquote styling inside asides */ 253.notebook-content aside > blockquote, 254.notebook-content .aside > blockquote { 255 border-inline-start: none; 256 background: transparent; 257 padding: 0; 258 margin: 0; 259 font-size: inherit; 260} 261 262/* Indent utilities */ 263.indent-1 { 264 margin-inline-start: 1em; 265} 266.indent-2 { 267 margin-inline-start: 2em; 268} 269.indent-3 { 270 margin-inline-start: 3em; 271} 272 273/* Tufte-style Sidenotes */ 274/* Hide checkbox for sidenote toggle */ 275.margin-toggle { 276 display: none; 277} 278 279/* Sidenote number marker (inline superscript) */ 280.sidenote-number { 281 counter-increment: sidenote-counter; 282} 283 284.sidenote-number::after { 285 content: counter(sidenote-counter); 286 font-size: 0.7em; 287 position: relative; 288 top: -0.5em; 289 color: var(--color-primary); 290 padding-inline-start: 0.1em; 291} 292 293/* Sidenote content (margin notes on wide screens) */ 294.sidenote { 295 float: inline-end; 296 clear: inline-end; 297 margin-inline-end: -15.5rem; 298 width: 14rem; 299 margin-top: 0.3rem; 300 margin-bottom: 1rem; 301 font-size: 0.85em; 302 line-height: 1.4; 303 color: var(--color-subtle); 304} 305 306.sidenote::before { 307 content: counter(sidenote-counter) ". "; 308 color: var(--color-primary); 309} 310 311/* Mobile sidenotes: toggle behavior */ 312@media (max-width: 900px) { 313 /* Reset sidenote gutter on mobile */ 314 body:has(.sidenote) { 315 padding-inline-end: 0; 316 } 317 318 aside, 319 .aside { 320 float: none; 321 width: 100%; 322 margin: 1rem 0; 323 } 324 325 .sidenote { 326 display: none; 327 } 328 329 .margin-toggle:checked + .sidenote { 330 display: block; 331 float: none; 332 width: 95%; 333 margin: 0.5rem 2.5%; 334 padding: 0.5rem; 335 background: var(--color-surface); 336 border-inline-start: 2px solid var(--color-primary); 337 } 338 339 label.sidenote-number { 340 cursor: pointer; 341 } 342 343 label.sidenote-number::after { 344 text-decoration: underline; 345 } 346} 347 348/* Images */ 349img { 350 max-width: 100%; 351 height: auto; 352 display: block; 353 margin: 1rem 0; 354 border-radius: 4px; 355} 356 357/* Hygiene for iframes */ 358.html-embed-block { 359 max-width: 100%; 360 height: auto; 361 display: block; 362 margin: 1rem 0; 363} 364 365/* AT Protocol Embeds - Container */ 366/* Light mode: paper with shadow, dark mode: blueprint with borders */ 367.atproto-embed { 368 display: block; 369 position: relative; 370 max-width: 550px; 371 margin: 1rem 0; 372 padding: 1rem; 373 background: var(--color-surface); 374 border-inline-start: 2px solid var(--color-secondary); 375 box-shadow: 0 1px 2px color-mix(in srgb, var(--color-text) 8%, transparent); 376} 377 378.atproto-embed:hover { 379 border-inline-start-color: var(--color-primary); 380} 381 382@media (prefers-color-scheme: dark) { 383 .atproto-embed { 384 box-shadow: none; 385 border: 1px solid var(--color-border); 386 border-inline-start: 2px solid var(--color-secondary); 387 } 388} 389 390.atproto-embed-placeholder { 391 color: var(--color-muted); 392 font-style: italic; 393} 394 395.embed-loading { 396 display: block; 397 padding: 0.5rem 0; 398 color: var(--color-subtle); 399 font-family: var(--font-mono); 400 font-size: 0.85rem; 401} 402 403/* Embed Author Block */ 404.embed-author { 405 display: flex; 406 align-items: center; 407 gap: 0.75rem; 408 padding-bottom: 0.5rem; 409} 410 411.embed-avatar { 412 width: 36px; 413 height: 36px; 414 max-width: 36px; 415 max-height: 36px; 416 aspect-ratio: 1; 417 margin: 0; 418 object-fit: cover; 419} 420 421.embed-author-info { 422 display: flex; 423 flex-direction: column; 424 gap: 0; 425 min-width: 0; 426} 427 428.embed-avatar-link { 429 display: block; 430 flex-shrink: 0; 431} 432 433.embed-author-name { 434 font-weight: 600; 435 color: var(--color-text); 436 overflow: hidden; 437 text-overflow: ellipsis; 438 white-space: nowrap; 439 text-decoration: none; 440 line-height: 1.2; 441} 442 443a.embed-author-name:hover { 444 color: var(--color-link); 445} 446 447.embed-author-handle { 448 font-size: 0.85em; 449 font-family: var(--font-mono); 450 color: var(--color-subtle); 451 text-decoration: none; 452 overflow: hidden; 453 text-overflow: ellipsis; 454 white-space: nowrap; 455 line-height: 1.2; 456} 457 458.embed-author-handle:hover { 459 color: var(--color-link); 460} 461 462/* Card-wide clickable link (sits behind content) */ 463.embed-card-link { 464 position: absolute; 465 inset: 0; 466 z-index: 0; 467} 468 469.embed-card-link:focus { 470 outline: 2px solid var(--color-primary); 471 outline-offset: 2px; 472} 473 474/* Interactive elements sit above the card link */ 475.embed-author, 476.embed-external, 477.embed-quote, 478.embed-images, 479.embed-meta { 480 position: relative; 481 z-index: 1; 482} 483 484/* Embed Content Block */ 485.embed-content { 486 display: block; 487 color: var(--color-text); 488 line-height: 1.5; 489 margin-bottom: 0.75rem; 490 white-space: pre-wrap; 491} 492 493.embed-description { 494 display: block; 495 color: var(--color-text); 496 font-size: 0.95em; 497 line-height: 1.4; 498} 499 500/* Embed Metadata Block */ 501.embed-meta { 502 display: flex; 503 justify-content: space-between; 504 align-items: center; 505 font-size: 0.85em; 506 color: var(--color-muted); 507 margin-top: 0.75rem; 508} 509 510.embed-stats { 511 display: flex; 512 gap: 1rem; 513 font-family: var(--font-mono); 514} 515 516.embed-stat { 517 color: var(--color-subtle); 518 font-size: 0.9em; 519} 520 521.embed-time { 522 color: var(--color-subtle); 523 text-decoration: none; 524 font-family: var(--font-mono); 525 font-size: 0.9em; 526} 527 528.embed-time:hover { 529 color: var(--color-link); 530} 531 532.embed-type { 533 font-size: 0.8em; 534 color: var(--color-subtle); 535 font-family: var(--font-mono); 536 text-transform: uppercase; 537 letter-spacing: 0.05em; 538} 539 540/* Embed URL link (shown with syntax in editor) */ 541.embed-url { 542 color: var(--color-link); 543 font-family: var(--font-mono); 544 font-size: 0.9em; 545 word-break: break-all; 546} 547 548/* External link cards */ 549.embed-external { 550 display: flex; 551 gap: 0.75rem; 552 padding: 0.75rem; 553 background: var(--color-surface); 554 border: 1px dashed var(--color-border); 555 text-decoration: none; 556 color: inherit; 557 margin-top: 0.5rem; 558} 559 560.embed-external:hover { 561 border-inline-start: 2px solid var(--color-primary); 562 margin-inline-start: -1px; 563} 564 565@media (prefers-color-scheme: dark) { 566 .embed-external { 567 border: 1px solid var(--color-border); 568 } 569 570 .embed-external:hover { 571 border-inline-start: 2px solid var(--color-primary); 572 margin-inline-start: -1px; 573 } 574} 575 576.embed-external-thumb { 577 width: 120px; 578 height: 80px; 579 object-fit: cover; 580 flex-shrink: 0; 581} 582 583.embed-external-info { 584 display: flex; 585 flex-direction: column; 586 gap: 0.25rem; 587 min-width: 0; 588} 589 590.embed-external-title { 591 font-weight: 600; 592 color: var(--color-text); 593 overflow: hidden; 594 text-overflow: ellipsis; 595 white-space: nowrap; 596} 597 598.embed-external-description { 599 font-size: 0.9em; 600 color: var(--color-muted); 601 overflow: hidden; 602 text-overflow: ellipsis; 603 display: -webkit-box; 604 -webkit-line-clamp: 2; 605 -webkit-box-orient: vertical; 606} 607 608.embed-external-url { 609 font-size: 0.8em; 610 font-family: var(--font-mono); 611 color: var(--color-subtle); 612} 613 614/* Image embeds */ 615.embed-images { 616 display: grid; 617 gap: 4px; 618 margin-top: 0.5rem; 619 overflow: hidden; 620} 621 622.embed-images-1 { 623 grid-template-columns: 1fr; 624} 625 626.embed-images-2 { 627 grid-template-columns: 1fr 1fr; 628} 629 630.embed-images-3 { 631 grid-template-columns: 1fr 1fr; 632} 633 634.embed-images-4 { 635 grid-template-columns: 1fr 1fr; 636} 637 638.embed-image-link { 639 display: block; 640 line-height: 0; 641} 642 643.embed-image { 644 width: 100%; 645 height: auto; 646 max-height: 500px; 647 object-fit: cover; 648 object-position: center; 649 margin: 0; 650} 651 652/* Quoted records */ 653.embed-quote { 654 display: block; 655 margin-top: 0.5rem; 656 padding: 0.75rem; 657 background: var(--color-overlay); 658 border-inline-start: 2px solid var(--color-tertiary); 659} 660 661@media (prefers-color-scheme: dark) { 662 .embed-quote { 663 border: 1px solid var(--color-border); 664 border-inline-start: 2px solid var(--color-tertiary); 665 } 666} 667 668.embed-quote .embed-author { 669 margin-bottom: 0.5rem; 670} 671 672.embed-quote .embed-avatar { 673 width: 24px; 674 height: 24px; 675 min-width: 24px; 676 min-height: 24px; 677 max-width: 24px; 678 max-height: 24px; 679} 680 681.embed-quote .embed-content { 682 font-size: 0.95em; 683 margin-bottom: 0; 684} 685 686/* Placeholder states */ 687.embed-video-placeholder, 688.embed-not-found, 689.embed-blocked, 690.embed-detached, 691.embed-unknown { 692 display: block; 693 padding: 1rem; 694 background: var(--color-overlay); 695 border-inline-start: 2px solid var(--color-border); 696 color: var(--color-muted); 697 font-style: italic; 698 margin-top: 0.5rem; 699 font-family: var(--font-mono); 700 font-size: 0.9em; 701} 702 703@media (prefers-color-scheme: dark) { 704 .embed-video-placeholder, 705 .embed-not-found, 706 .embed-blocked, 707 .embed-detached, 708 .embed-unknown { 709 border: 1px dashed var(--color-border); 710 } 711} 712 713/* Record card embeds (feeds, lists, labelers, starter packs) */ 714.embed-record-card { 715 display: block; 716 margin-top: 0.5rem; 717 padding: 0.75rem; 718 background: var(--color-overlay); 719 border-inline-start: 2px solid var(--color-tertiary); 720} 721 722.embed-record-card > .embed-author-name { 723 display: block; 724 font-size: 1.1em; 725} 726 727.embed-subtitle { 728 display: block; 729 font-size: 0.85em; 730 color: var(--color-muted); 731 margin-bottom: 0.5rem; 732} 733 734.embed-record-card .embed-description { 735 display: block; 736 margin: 0.5rem 0; 737} 738 739.embed-record-card .embed-stats { 740 display: block; 741 margin-top: 0.25rem; 742} 743 744/* Generic record fields */ 745.embed-fields { 746 display: block; 747 margin-top: 0.5rem; 748 font-family: var(--font-ui); 749 font-size: 0.85rem; 750 color: var(--color-muted); 751} 752 753.embed-field { 754 display: block; 755 margin-top: 0.25rem; 756} 757 758/* Nested fields get indentation */ 759.embed-fields .embed-fields { 760 display: block; 761 margin-top: 0.5rem; 762 margin-inline-start: 1rem; 763 padding-inline-start: 0.5rem; 764 border-inline-start: 1px solid var(--color-border); 765} 766 767/* Type label inside fields should be block with spacing */ 768.embed-fields > .embed-author-handle { 769 display: block; 770 margin-bottom: 0.25rem; 771} 772 773.embed-field-name { 774 color: var(--color-subtle); 775} 776 777.embed-field-number { 778 color: var(--color-tertiary); 779} 780 781.embed-field-date { 782 color: var(--color-muted); 783} 784 785.embed-field-count { 786 color: var(--color-muted); 787 font-style: italic; 788} 789 790.embed-field-bool-true { 791 color: var(--color-success); 792} 793 794.embed-field-bool-false { 795 color: var(--color-muted); 796} 797 798.embed-field-link, 799.embed-field-aturi { 800 color: var(--color-link); 801 text-decoration: none; 802} 803 804.embed-field-link:hover, 805.embed-field-aturi:hover { 806 text-decoration: underline; 807} 808 809.embed-field-did { 810 font-family: var(--font-mono); 811 font-size: 0.9em; 812} 813 814.embed-field-did .did-scheme, 815.embed-field-did .did-separator { 816 color: var(--color-muted); 817} 818 819.embed-field-did .did-method { 820 color: var(--color-tertiary); 821} 822 823.embed-field-did .did-identifier { 824 color: var(--color-text); 825} 826 827.embed-field-nsid { 828 color: var(--color-secondary); 829} 830 831.embed-field-handle { 832 color: var(--color-link); 833} 834 835/* AT URI highlighting */ 836.aturi-scheme { 837 color: var(--color-muted); 838} 839 840.aturi-slash { 841 color: var(--color-muted); 842} 843 844.aturi-authority { 845 color: var(--color-link); 846} 847 848.aturi-collection { 849 color: var(--color-secondary); 850} 851 852.aturi-rkey { 853 color: var(--color-tertiary); 854} 855 856/* Generic AT Protocol record embed */ 857.atproto-record > .embed-author-handle { 858 display: block; 859 margin-bottom: 0.25rem; 860} 861 862.atproto-record > .embed-author-name { 863 display: block; 864 margin-bottom: 0.5rem; 865} 866 867.atproto-record > .embed-content { 868 margin-bottom: 0.5rem; 869} 870 871/* Notebook entry embed - full width, expandable */ 872.atproto-entry { 873 max-width: none; 874 width: 100%; 875 margin: 1.5rem 0; 876 padding: 0; 877 background: var(--color-surface); 878 border: 1px solid var(--color-border); 879 border-inline-start: 1px solid var(--color-border); 880 box-shadow: none; 881 overflow: hidden; 882} 883 884.atproto-entry:hover { 885 border-inline-start-color: var(--color-border); 886} 887 888@media (prefers-color-scheme: dark) { 889 .atproto-entry { 890 border: 1px solid var(--color-border); 891 border-inline-start: 1px solid var(--color-border); 892 } 893} 894 895.embed-entry-header { 896 display: flex; 897 flex-wrap: wrap; 898 align-items: baseline; 899 gap: 0.5rem 1rem; 900 padding: 0.75rem 1rem; 901 background: var(--color-overlay); 902 border-bottom: 1px solid var(--color-border); 903} 904 905.embed-entry-title { 906 font-size: 1.1em; 907 font-weight: 600; 908 color: var(--color-text); 909} 910 911.embed-entry-author { 912 font-size: 0.85em; 913 color: var(--color-muted); 914} 915 916/* Hidden checkbox for expand/collapse */ 917.embed-entry-toggle { 918 display: none; 919} 920 921/* Content wrapper - scrollable when collapsed */ 922.embed-entry-content { 923 max-height: 30rem; 924 overflow-y: auto; 925 padding: 1rem; 926 transition: max-height 0.3s ease; 927} 928 929/* When checkbox is checked, expand fully */ 930.embed-entry-toggle:checked ~ .embed-entry-content { 931 max-height: none; 932} 933 934/* Expand/collapse button */ 935.embed-entry-expand { 936 display: block; 937 width: 100%; 938 padding: 0.5rem; 939 text-align: center; 940 font-size: 0.85em; 941 font-family: var(--font-ui); 942 color: var(--color-muted); 943 background: var(--color-overlay); 944 border-top: 1px solid var(--color-border); 945 cursor: pointer; 946 user-select: none; 947} 948 949.embed-entry-expand:hover { 950 color: var(--color-text); 951 background: var(--color-surface); 952} 953 954/* Toggle button text */ 955.embed-entry-expand::before { 956 content: "Expand ↓"; 957} 958 959.embed-entry-toggle:checked ~ .embed-entry-expand::before { 960 content: "Collapse ↑"; 961} 962 963/* Hide expand button if content doesn't overflow (via JS class) */ 964.atproto-entry.no-overflow .embed-entry-expand { 965 display: none; 966} 967 968/* Horizontal Rule */ 969hr { 970 border: none; 971 border-top: 2px solid var(--color-border); 972 margin: 2rem 0; 973} 974 975/* Tablet and mobile responsiveness */ 976@media (max-width: 900px) { 977 .notebook-content { 978 padding: 1.5rem 1rem; 979 max-width: 100%; 980 } 981 982 h1 { 983 font-size: 1.85rem; 984 } 985 h2 { 986 font-size: 1.4rem; 987 } 988 h3 { 989 font-size: 1.2rem; 990 } 991 992 blockquote { 993 margin-inline-start: 0; 994 margin-inline-end: 0; 995 } 996} 997 998/* Small mobile phones */ 999@media (max-width: 480px) { 1000 .notebook-content { 1001 padding: 1rem 0.75rem; 1002 } 1003 1004 h1 { 1005 font-size: 1.65rem; 1006 } 1007 h2 { 1008 font-size: 1.3rem; 1009 } 1010 h3 { 1011 font-size: 1.1rem; 1012 } 1013 1014 blockquote { 1015 padding-inline-start: 0.75rem; 1016 padding-inline-end: 0.75rem; 1017 } 1018} 1019 1020/* Leaflet document embeds */ 1021.atproto-leaflet { 1022 max-width: none; 1023 width: 100%; 1024 margin: 1rem 0; 1025} 1026 1027.leaflet-document { 1028 display: block; 1029} 1030 1031.leaflet-text { 1032 margin: 0.5rem 0; 1033} 1034 1035.leaflet-button { 1036 display: inline-block; 1037 padding: 0.5rem 1rem; 1038 background: var(--color-primary); 1039 color: var(--color-base); 1040 text-decoration: none; 1041 border-radius: 4px; 1042 margin: 0.5rem 0; 1043} 1044 1045.leaflet-button:hover { 1046 opacity: 0.9; 1047} 1048 1049/* Alignment utilities */ 1050.align-center { 1051 text-align: center; 1052} 1053.align-right { 1054 text-align: right; 1055} 1056.align-justify { 1057 text-align: justify; 1058} 1059 1060/* ========================================================================== 1061 SYNTAX HIGHLIGHTING 1062 ========================================================================== */ 1063 1064/* Syntax highlighting - Light Mode (default) */ 1065/* 1066 * theme "Rosé Pine Dawn" generated by syntect 1067 */ 1068 1069.wvc-code { 1070 color: #575279; 1071 background-color: #faf4ed; 1072} 1073 1074.wvc-comment { 1075 color: #797593; 1076 font-style: italic; 1077} 1078.wvc-string, 1079.wvc-punctuation.wvc-definition.wvc-string { 1080 color: #ea9d34; 1081} 1082.wvc-constant.wvc-numeric { 1083 color: #ea9d34; 1084} 1085.wvc-constant.wvc-language { 1086 color: #ea9d34; 1087 font-weight: bold; 1088} 1089.wvc-constant.wvc-character, 1090.wvc-constant.wvc-other { 1091 color: #ea9d34; 1092} 1093.wvc-variable { 1094 color: #575279; 1095 font-style: italic; 1096} 1097.wvc-keyword { 1098 color: #286983; 1099} 1100.wvc-storage { 1101 color: #56949f; 1102} 1103.wvc-storage.wvc-type { 1104 color: #56949f; 1105} 1106.wvc-entity.wvc-name.wvc-class { 1107 color: #286983; 1108 font-weight: bold; 1109} 1110.wvc-entity.wvc-other.wvc-inherited-class { 1111 color: #286983; 1112 font-style: italic; 1113} 1114.wvc-entity.wvc-name.wvc-function { 1115 color: #d7827e; 1116 font-style: italic; 1117} 1118.wvc-variable.wvc-parameter { 1119 color: #907aa9; 1120} 1121.wvc-entity.wvc-name.wvc-tag { 1122 color: #286983; 1123 font-weight: bold; 1124} 1125.wvc-entity.wvc-other.wvc-attribute-name { 1126 color: #907aa9; 1127} 1128.wvc-support.wvc-function { 1129 color: #d7827e; 1130 font-weight: bold; 1131} 1132.wvc-support.wvc-constant { 1133 color: #ea9d34; 1134 font-weight: bold; 1135} 1136.wvc-support.wvc-type, 1137.wvc-support.wvc-class { 1138 color: #56949f; 1139 font-weight: bold; 1140} 1141.wvc-support.wvc-other.wvc-variable { 1142 color: #b4637a; 1143 font-weight: bold; 1144} 1145.wvc-invalid { 1146 color: #575279; 1147 background-color: #b4637a; 1148} 1149.wvc-invalid.wvc-deprecated { 1150 color: #575279; 1151 background-color: #907aa9; 1152} 1153.wvc-punctuation, 1154.wvc-keyword.wvc-operator { 1155 color: #797593; 1156} 1157 1158/* Syntax highlighting - Dark Mode */ 1159@media (prefers-color-scheme: dark) { 1160 /* 1161 * theme "Rosé Pine" generated by syntect 1162 */ 1163 1164 .wvc-code { 1165 color: #e0def4; 1166 background-color: #191724; 1167 } 1168 1169 .wvc-comment { 1170 color: #908caa; 1171 font-style: italic; 1172 } 1173 .wvc-string, 1174 .wvc-punctuation.wvc-definition.wvc-string { 1175 color: #f6c177; 1176 } 1177 .wvc-constant.wvc-numeric { 1178 color: #f6c177; 1179 } 1180 .wvc-constant.wvc-language { 1181 color: #f6c177; 1182 font-weight: bold; 1183 } 1184 .wvc-constant.wvc-character, 1185 .wvc-constant.wvc-other { 1186 color: #f6c177; 1187 } 1188 .wvc-variable { 1189 color: #e0def4; 1190 font-style: italic; 1191 } 1192 .wvc-keyword { 1193 color: #31748f; 1194 } 1195 .wvc-storage { 1196 color: #9ccfd8; 1197 } 1198 .wvc-storage.wvc-type { 1199 color: #9ccfd8; 1200 } 1201 .wvc-entity.wvc-name.wvc-class { 1202 color: #31748f; 1203 font-weight: bold; 1204 } 1205 .wvc-entity.wvc-other.wvc-inherited-class { 1206 color: #31748f; 1207 font-style: italic; 1208 } 1209 .wvc-entity.wvc-name.wvc-function { 1210 color: #ebbcba; 1211 font-style: italic; 1212 } 1213 .wvc-variable.wvc-parameter { 1214 color: #c4a7e7; 1215 } 1216 .wvc-entity.wvc-name.wvc-tag { 1217 color: #31748f; 1218 font-weight: bold; 1219 } 1220 .wvc-entity.wvc-other.wvc-attribute-name { 1221 color: #c4a7e7; 1222 } 1223 .wvc-support.wvc-function { 1224 color: #ebbcba; 1225 font-weight: bold; 1226 } 1227 .wvc-support.wvc-constant { 1228 color: #f6c177; 1229 font-weight: bold; 1230 } 1231 .wvc-support.wvc-type, 1232 .wvc-support.wvc-class { 1233 color: #9ccfd8; 1234 font-weight: bold; 1235 } 1236 .wvc-support.wvc-other.wvc-variable { 1237 color: #eb6f92; 1238 font-weight: bold; 1239 } 1240 .wvc-invalid { 1241 color: #e0def4; 1242 background-color: #eb6f92; 1243 } 1244 .wvc-invalid.wvc-deprecated { 1245 color: #e0def4; 1246 background-color: #c4a7e7; 1247 } 1248 .wvc-punctuation, 1249 .wvc-keyword.wvc-operator { 1250 color: #908caa; 1251 } 1252}