this repo has no description madoka.systmes

initial commit

+2893
+1
.envrc
··· 1 + use flake
+8
.gitignore
··· 1 + .direnv/ 2 + result 3 + public/ 4 + .DS_Store 5 + .* 6 + 7 + !.envrc 8 + !.gitignore
+80
CLAUDE.md
··· 1 + # CLAUDE.md 2 + 3 + This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. 4 + 5 + ## Development Commands 6 + 7 + **Primary workflow (via Nix):** 8 + 9 + ```bash 10 + nix develop # Enter development shell 11 + zola serve # Start dev server with hot reload on http://127.0.0.1:1111 12 + zola build --output-dir public # Production build 13 + ``` 14 + 15 + **Font optimization workflow:** 16 + 17 + ```bash 18 + pyftsubset static/fonts/HostGrotesk-Italic-VariableFont.ttf \ 19 + --unicodes="U+0000-00FF,U+0100-017F,U+0180-024F,U+1E00-1EFF,U+2000-206F,U+2070-209F,U+20A0-20CF,U+2100-214F,U+2190-21FF" \ 20 + --output-file=static/fonts/HostGrotesk-Italic-VariableFont.woff2 \ 21 + --flavor=woff2 22 + ``` 23 + 24 + ## Architecture Overview 25 + 26 + **Static Site Generator:** Zola (Rust-based) with Tera templating (Jinja2-like syntax) 27 + 28 + **Development Environment:** NixOS flake with direnv for reproducible builds 29 + 30 + **Content Structure:** 31 + 32 + - `/content/` - Markdown files with frontmatter 33 + - `/content/blog/` - Blog posts with pagination (6 posts per page) 34 + - Section-based organization with `_index.md` files defining templates 35 + 36 + **Template Hierarchy:** 37 + 38 + - `base.html` - Root layout importing macros and includes 39 + - `lander.html` - Base template for homepage and blog listing 40 + - Specialized templates: `blog.html`, `post.html`, `index.html`, `page.html`, `header.html`, `404.html` 41 + - Reusable macros in `/templates/macros/post_macros.html` 42 + - SEO meta tags in `meta.html` 43 + 44 + **Styling Architecture:** 45 + 46 + - Modular SCSS: `_variables.scss`, `_base.scss`, `_layout.scss` 47 + - Variable font implementation with system font fallbacks 48 + - Automatic dark/light theme switching via CSS media queries 49 + - Giallo syntax highlighting (Zola's built-in theme system, generates CSS automatically) 50 + 51 + **Build Process:** 52 + 53 + 1. Git commit hash substitution (`__GIT_COMMIT__` placeholders in config.toml) 54 + 2. SASS compilation to CSS 55 + 3. Markdown processing with syntax highlighting 56 + 4. RSS feed and sitemap generation 57 + 5. Static output to `/public/` directory 58 + 59 + ## Key Configuration Files 60 + 61 + - `/config.toml` - Main Zola configuration with git commit templating 62 + - `/flake.nix` - Nix development environment and build pipeline 63 + - `/sass/_variables.scss` - Design tokens and theme variables 64 + 65 + ## Content Management Patterns 66 + 67 + **Frontmatter conventions:** 68 + 69 + - `title`, `description` for SEO 70 + - `template` for template override 71 + - `sort_by: "date"` for chronological ordering 72 + - `paginate_by` for pagination control 73 + 74 + **Template patterns:** 75 + 76 + - Block inheritance: `{% block title %}`, `{% block main %}` 77 + - Includes: `{% include "header.html" %}` 78 + - Macros: `{{ post_macros::post_preview(post=post) }}` 79 + 80 + This is a content-focused static site without complex logic requiring testing frameworks.
+8
README.md
··· 1 + subset with 2 + 3 + ``` 4 + pyftsubset static/fonts/HostGrotesk-Italic-VariableFont.ttf \ 5 + --unicodes="U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD" \ 6 + --output-file=static/fonts/HostGrotesk-Italic-VariableFont.woff2 \ 7 + --flavor=woff2 8 + ```
+45
config.toml
··· 1 + # The URL the site will be built for 2 + base_url = "https://madoka.systems" 3 + minify_html = true 4 + 5 + # Whether to automatically compile all Sass files in the sass directory 6 + compile_sass = true 7 + 8 + # Whether to build a search index to be used later on by a JavaScript library 9 + build_search_index = false 10 + 11 + # Generate RSS feed 12 + generate_feeds = true 13 + feed_filenames = [ "rss.xml" ] 14 + 15 + # Generate sitemap 16 + generate_sitemap = true 17 + 18 + [markdown] 19 + # Insert anchor links on headings 20 + insert_anchor_links = "heading" 21 + 22 + [markdown.highlighting] 23 + light_theme = "Oxocarbon Light" 24 + dark_theme = "Oxocarbon Dark" 25 + style = "class" 26 + 27 + extra_themes = [ 28 + "syntax_themes/oxocarbon-light.json", 29 + "syntax_themes/oxocarbon-dark.json", 30 + ] 31 + 32 + [extra] 33 + nav_links = [ 34 + { title = "Home", url = "" }, 35 + { title = "Blog", url = "blog" }, 36 + { title = "Uses", url = "uses" }, 37 + { title = "Contact", url = "contact" } 38 + ] 39 + 40 + name = "madoka.systems" 41 + description = "personal blog site of the winter system" 42 + commit = "__GIT_COMMIT__" 43 + commit_full = "__GIT_COMMIT_FULL__" 44 + base_repo = "https://tangled.sh/did:plc:7exy3k53z33dvghn6edyayxt/labyrinth" 45 + repo = "https://tangled.sh/madoka.systems/labyrinth"
+8
content/_index.md
··· 1 + --- 2 + title: "madoka.systems" 3 + description: "personal website and blog featuring thoughts on technology, coding, and life" 4 + --- 5 + 6 + # hai 7 + 8 + pyonpyponyponypnony
+12
content/blog/_index.md
··· 1 + --- 2 + title: blog 3 + description: "my personal blog full of silly things and bullshit i have to deal with" 4 + template: "blog.html" 5 + page_template: "post.html" 6 + sort_by: "date" 7 + paginate_by: 6 8 + --- 9 + 10 + # blog 11 + 12 + this is my blog full of silly things
+27
content/contact.md
··· 1 + --- 2 + title: contact 3 + description: "get in touch via email, social media, or the contact form - i respond within 2 business days" 4 + template: "page.html" 5 + --- 6 + 7 + # Contact Me 8 + 9 + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque leo nec nisi tincidunt, a tincidunt odio tincidunt. Sed euismod, nisl eget consectetur sagittis, nisl nunc egestas nisi, eget consectetur nisl nunc eget nisl. 10 + Etiam euismod, nisl eget consectetur sagittis, nisl nunc egestas nisi, eget consectetur nisl nunc eget nisl. 11 + 12 + --- 13 + 14 + ## How to Reach Me 15 + 16 + - Email: example@email.com 17 + - Twitter: @exampleuser 18 + - GitHub: github.com/exampleuser 19 + 20 + ### Office Hours 21 + 22 + Monday-Friday: 9am-5pm 23 + Saturday & Sunday: Closed 24 + 25 + ### Additional Information 26 + 27 + Feel free to send a message using the contact form below or reach out via social media. I aim to respond to all inquiries within 2 business days.
+13
content/uses.md
··· 1 + --- 2 + title: devices we use 3 + description: "my tech setup including macbook pro m4, desktop with ryzen 5 7600, and samsung z flip 6" 4 + template: "page.html" 5 + --- 6 + 7 + # devices we use 8 + 9 + | hostname | device | 10 + | -------- | ---------------------------------------- | 11 + | demodash | Macbook Pro 14" M4 | 12 + | wavedash | Desktop w/ Ryzen 5 7600 and an RTX 2070S | 13 + | cassette | Z Flip 6 |
+96
flake.lock
··· 1 + { 2 + "nodes": { 3 + "flake-parts": { 4 + "inputs": { 5 + "nixpkgs-lib": "nixpkgs-lib" 6 + }, 7 + "locked": { 8 + "lastModified": 1768135262, 9 + "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", 10 + "owner": "hercules-ci", 11 + "repo": "flake-parts", 12 + "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", 13 + "type": "github" 14 + }, 15 + "original": { 16 + "owner": "hercules-ci", 17 + "repo": "flake-parts", 18 + "type": "github" 19 + } 20 + }, 21 + "nixpkgs": { 22 + "locked": { 23 + "lastModified": 1768564909, 24 + "narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=", 25 + "owner": "NixOS", 26 + "repo": "nixpkgs", 27 + "rev": "e4bae1bd10c9c57b2cf517953ab70060a828ee6f", 28 + "type": "github" 29 + }, 30 + "original": { 31 + "owner": "NixOS", 32 + "ref": "nixos-unstable", 33 + "repo": "nixpkgs", 34 + "type": "github" 35 + } 36 + }, 37 + "nixpkgs-lib": { 38 + "locked": { 39 + "lastModified": 1765674936, 40 + "narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=", 41 + "owner": "nix-community", 42 + "repo": "nixpkgs.lib", 43 + "rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85", 44 + "type": "github" 45 + }, 46 + "original": { 47 + "owner": "nix-community", 48 + "repo": "nixpkgs.lib", 49 + "type": "github" 50 + } 51 + }, 52 + "nixpkgs_2": { 53 + "locked": { 54 + "lastModified": 1767364772, 55 + "narHash": "sha256-fFUnEYMla8b7UKjijLnMe+oVFOz6HjijGGNS1l7dYaQ=", 56 + "owner": "nixos", 57 + "repo": "nixpkgs", 58 + "rev": "16c7794d0a28b5a37904d55bcca36003b9109aaa", 59 + "type": "github" 60 + }, 61 + "original": { 62 + "owner": "nixos", 63 + "ref": "nixpkgs-unstable", 64 + "repo": "nixpkgs", 65 + "type": "github" 66 + } 67 + }, 68 + "root": { 69 + "inputs": { 70 + "flake-parts": "flake-parts", 71 + "nixpkgs": "nixpkgs", 72 + "treefmt-nix": "treefmt-nix" 73 + } 74 + }, 75 + "treefmt-nix": { 76 + "inputs": { 77 + "nixpkgs": "nixpkgs_2" 78 + }, 79 + "locked": { 80 + "lastModified": 1768158989, 81 + "narHash": "sha256-67vyT1+xClLldnumAzCTBvU0jLZ1YBcf4vANRWP3+Ak=", 82 + "owner": "numtide", 83 + "repo": "treefmt-nix", 84 + "rev": "e96d59dff5c0d7fddb9d113ba108f03c3ef99eca", 85 + "type": "github" 86 + }, 87 + "original": { 88 + "owner": "numtide", 89 + "repo": "treefmt-nix", 90 + "type": "github" 91 + } 92 + } 93 + }, 94 + "root": "root", 95 + "version": 7 96 + }
+84
flake.nix
··· 1 + { 2 + description = "Personal site"; 3 + 4 + inputs = { 5 + flake-parts.url = "github:hercules-ci/flake-parts"; 6 + treefmt-nix.url = "github:numtide/treefmt-nix"; 7 + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 8 + }; 9 + 10 + outputs = 11 + inputs@{ 12 + self, 13 + flake-parts, 14 + treefmt-nix, 15 + ... 16 + }: 17 + flake-parts.lib.mkFlake { inherit inputs; } { 18 + imports = [ 19 + treefmt-nix.flakeModule 20 + ]; 21 + systems = [ 22 + "x86_64-linux" 23 + "aarch64-linux" 24 + "aarch64-darwin" 25 + "x86_64-darwin" 26 + ]; 27 + perSystem = 28 + { 29 + pkgs, 30 + ... 31 + }: 32 + { 33 + devShells.default = pkgs.mkShell { 34 + buildInputs = with pkgs; [ 35 + zola 36 + python3Packages.fonttools 37 + python3Packages.brotli 38 + ]; 39 + }; 40 + packages.default = pkgs.stdenv.mkDerivation { 41 + name = "site"; 42 + src = ./.; 43 + nativeBuildInputs = with pkgs; [ 44 + zola 45 + python3Packages.fonttools 46 + python3Packages.brotli 47 + ]; 48 + postPatch = '' 49 + substituteInPlace config.toml \ 50 + --replace-fail "__GIT_COMMIT__" "${self.shortRev or "dirty"}" \ 51 + --replace-fail "__GIT_COMMIT_FULL__" "${self.rev or "dirty"}" 52 + ''; 53 + buildPhase = '' 54 + zola build --output-dir public 55 + ''; 56 + installPhase = '' 57 + mkdir -p $out 58 + cp -r public/* $out/ 59 + ''; 60 + }; 61 + treefmt = { 62 + programs = { 63 + djlint = { 64 + enable = true; 65 + indent = 2; 66 + }; 67 + nixfmt.enable = true; 68 + }; 69 + settings.formatter.djlint = { 70 + options = [ 71 + "--profile" 72 + "jinja" 73 + ]; 74 + includes = [ "*.html" ]; 75 + }; 76 + }; 77 + }; 78 + flake = { 79 + # The usual flake attributes can be defined here, including system- 80 + # agnostic ones like nixosModule and system-enumerating ones, although 81 + # those are more easily expressed in perSystem. 82 + }; 83 + }; 84 + }
+136
sass/_base.scss
··· 1 + // Reset 2 + *, 3 + *::before, 4 + *::after { 5 + box-sizing: border-box; 6 + margin: 0; 7 + padding: 0; 8 + } 9 + 10 + // Base styles 11 + html { 12 + font-family: $font-sans; 13 + line-height: 1.5; 14 + -webkit-text-size-adjust: 100%; 15 + font-feature-settings: 16 + "kern" 1, 17 + "liga" 1, 18 + "calt" 1; 19 + font-optical-sizing: auto; 20 + text-rendering: optimizeLegibility; 21 + -webkit-font-smoothing: antialiased; 22 + -moz-osx-font-smoothing: grayscale; 23 + } 24 + 25 + body { 26 + background: $zinc-100; 27 + color: $black; 28 + display: flex; 29 + flex-direction: column; 30 + align-items: center; 31 + min-height: 100vh; 32 + font-weight: 400; 33 + 34 + @media (prefers-color-scheme: dark) { 35 + background: $zinc-900; 36 + color: $white; 37 + } 38 + } 39 + 40 + // Typography weight defaults 41 + b, 42 + strong { 43 + @include bold-text; 44 + } 45 + 46 + // Elements 47 + header a { 48 + color: inherit; 49 + text-decoration: none; 50 + } 51 + 52 + a { 53 + color: inherit; 54 + text-decoration: none; 55 + &:not(nav a):not(.button) { 56 + @include bold-text; 57 + &:hover { 58 + text-decoration: underline; 59 + } 60 + } 61 + 62 + &:focus { 63 + outline: 2px solid $black; 64 + outline-offset: 1px; 65 + 66 + @media (prefers-color-scheme: dark) { 67 + outline-color: $white; 68 + } 69 + } 70 + } 71 + 72 + // Skip navigation link 73 + .skip-nav { 74 + position: absolute; 75 + top: -40px; 76 + left: 6px; 77 + background: $black; 78 + color: $white; 79 + padding: $space-sm $space-md; 80 + text-decoration: none; 81 + @include bold-text; 82 + font-size: $text-sm; 83 + z-index: 1000; 84 + 85 + &:focus { 86 + top: 6px; 87 + outline: 2px solid $white; 88 + text-decoration: underline; 89 + } 90 + 91 + @media (prefers-color-scheme: dark) { 92 + background: $white; 93 + color: $black; 94 + 95 + &:focus { 96 + outline-color: $black; 97 + } 98 + } 99 + } 100 + 101 + img, 102 + video { 103 + max-width: 100%; 104 + height: auto; 105 + display: block; 106 + } 107 + 108 + pre { 109 + border-radius: 0; 110 + font-family: $font-mono; 111 + } 112 + 113 + .giallo-l { 114 + display: inline-block; 115 + min-height: 1lh; 116 + width: 100%; 117 + } 118 + 119 + .giallo-ln { 120 + display: inline-block; 121 + user-select: none; 122 + margin-right: 0.4em; 123 + padding: 0.4em; 124 + min-width: 3ch; 125 + text-align: right; 126 + opacity: 0.8; 127 + } 128 + 129 + code { 130 + font-family: $font-mono; 131 + 132 + &::before, 133 + &::after { 134 + content: ""; 135 + } 136 + }
+433
sass/_layout.scss
··· 1 + // Main container 2 + .container { 3 + background: $white; 4 + margin: 0 $space-md; 5 + display: flex; 6 + flex-direction: column-reverse; 7 + min-width: 100vw; 8 + max-width: 100vw; 9 + 10 + @media (min-width: $breakpoint-sm) { 11 + margin: $space-md 0; 12 + border: 2px solid $black; 13 + min-width: 60ch; 14 + width: 60ch; 15 + flex-direction: column; 16 + } 17 + 18 + @media (min-width: $breakpoint-lg) { 19 + min-width: 78ch; 20 + } 21 + 22 + @include dark-bg-white; 23 + } 24 + 25 + // Header navigation 26 + header { 27 + font-size: $text-xs; 28 + padding: $space-sm $space-md; 29 + display: flex; 30 + flex-wrap: wrap; 31 + position: sticky; 32 + bottom: 0; 33 + backdrop-filter: blur(8px); 34 + background: $white-75; 35 + @include mono-font($text-xs); 36 + 37 + &:not(:first-child) { 38 + @include dashed-border-top; 39 + } 40 + 41 + @media (max-width: $breakpoint-sm) { 42 + @include dashed-border-top; 43 + } 44 + 45 + > * + * { 46 + margin-left: $space-md; 47 + } 48 + 49 + @media (min-width: $breakpoint-sm) { 50 + text-wrap: wrap; 51 + } 52 + 53 + @media (prefers-color-scheme: dark) { 54 + background: $black-50; 55 + } 56 + 57 + nav { 58 + display: flex; 59 + flex-grow: 1; 60 + 61 + > * + * { 62 + margin-left: $space-md; 63 + } 64 + 65 + a { 66 + color: inherit; 67 + /* border-bottom: 2px solid transparent; */ 68 + 69 + &.current { 70 + background-color: $black; 71 + padding-inline: 0.25rem; 72 + color: $white; 73 + 74 + @media (prefers-color-scheme: dark) { 75 + background-color: $white; 76 + color: $black; 77 + } 78 + } 79 + 80 + &:not(.current) { 81 + padding-inline: 0.25rem; 82 + } 83 + 84 + &:hover { 85 + font-style: bold; 86 + 87 + @media (prefers-color-scheme: dark) { 88 + border-color: $white-50; 89 + } 90 + } 91 + } 92 + } 93 + aside { 94 + display: flex; 95 + align-items: center; 96 + gap: $space-xs; 97 + 98 + i { 99 + display: inline-block; 100 + width: 10px; 101 + height: 10px; 102 + border: 1px solid #000; 103 + border-radius: 6px; 104 + background: $green; 105 + } 106 + } 107 + } 108 + 109 + // Footer 110 + footer { 111 + display: flex; 112 + flex-direction: column; 113 + @include dashed-border-top; 114 + padding: $space-md; 115 + text-align: center; 116 + 117 + @media (max-width: $breakpoint-sm) { 118 + &:last-child { 119 + border-top: none; 120 + } 121 + } 122 + 123 + p { 124 + @include mono-font; 125 + color: $zinc-600; 126 + 127 + @media (prefers-color-scheme: dark) { 128 + color: $zinc-400; 129 + } 130 + } 131 + } 132 + 133 + // Button component 134 + .button { 135 + background: $black; 136 + color: $white; 137 + width: 100%; 138 + padding: 0 ($space-xs * 3); 139 + text-align: center; 140 + font-family: $font-mono; 141 + text-decoration: none; 142 + display: inline-block; 143 + border: 2px solid $white; 144 + 145 + &:hover { 146 + background: $white; 147 + color: $black; 148 + border-color: $black; 149 + } 150 + 151 + @media (prefers-color-scheme: dark) { 152 + background: $white; 153 + color: $black; 154 + 155 + &:hover { 156 + background: $black; 157 + color: $white; 158 + border-color: $white; 159 + } 160 + } 161 + } 162 + 163 + // Post preview 164 + .post-preview { 165 + display: flex; 166 + flex-direction: column; 167 + padding: $space-md; 168 + 169 + h3 { 170 + margin: 0 0 $space-xs 0; 171 + } 172 + 173 + div:not(.post-meta) { 174 + margin-bottom: $space-md; 175 + } 176 + } 177 + 178 + .post-meta { 179 + display: flex; 180 + align-items: center; 181 + gap: $space-xs; 182 + margin-bottom: $space-sm; 183 + font-size: $text-sm; 184 + color: $zinc-600; 185 + 186 + @media (prefers-color-scheme: dark) { 187 + color: $zinc-400; 188 + } 189 + } 190 + 191 + // Post containers 192 + .post-list, 193 + .featured-post { 194 + display: flex; 195 + flex-direction: column; 196 + @include solid-border; 197 + } 198 + 199 + .post-list { 200 + margin-top: $space-md; 201 + 202 + .post-preview:not(:last-child) { 203 + border-bottom: 1px dotted $zinc-200; 204 + @include dark-border; 205 + } 206 + } 207 + 208 + // Pagination 209 + .pagination { 210 + margin-top: $space-md; 211 + display: flex; 212 + gap: $space-md; 213 + } 214 + 215 + .page-numbers { 216 + @include mono-font($text-sm); 217 + min-width: max-content; 218 + align-content: center; 219 + } 220 + 221 + // Main content area 222 + main { 223 + padding: $space-md max($space-md, calc((100% - #{$max-width}) / 2)); 224 + font-size: $text-base; 225 + line-height: 1.75; 226 + min-height: 100vh; 227 + @include dashed-border-top; 228 + 229 + @media (min-width: $breakpoint-sm) { 230 + font-size: $text-lg; 231 + min-height: min-content; 232 + } 233 + 234 + > :first-child { 235 + margin-top: 0; 236 + } 237 + 238 + > :last-child { 239 + margin-bottom: 0; 240 + } 241 + 242 + // Typography 243 + p { 244 + margin: 1.2em 0; 245 + } 246 + 247 + h1 { 248 + font-size: 2.25em; 249 + @include bold-text; 250 + line-height: 1.1; 251 + margin: 0 0 0em 0; 252 + } 253 + 254 + h2 { 255 + font-size: 1.5em; 256 + @include bold-text; 257 + line-height: 1.33; 258 + margin: 1.2em 0 0.5em 0; 259 + } 260 + 261 + h3 { 262 + font-size: 1.25em; 263 + @include bold-text; 264 + line-height: 1.6; 265 + margin: 0.7em 0 0.2em 0; 266 + } 267 + 268 + h4 { 269 + @include bold-text; 270 + line-height: 1.5; 271 + margin: 0.7em 0 0 0; 272 + } 273 + 274 + .updated { 275 + text-decoration: underline; 276 + cursor: help; 277 + } 278 + 279 + // Links in main content 280 + a:not(.button):not(.zola-anchor) { 281 + color: inherit; 282 + @include bold-text; 283 + text-decoration: none; 284 + 285 + &.zola-anchor { 286 + color: $black !important; 287 + text-decoration: none; 288 + } 289 + 290 + &:hover { 291 + text-decoration: underline; 292 + } 293 + &[href^="http"]:not([href*="madoka.systems"]):not([href*="127.0.0.1"]):not( 294 + [href*="localhost"] 295 + )::after { 296 + // using a non-breaking space here 297 + content: " ↗"; 298 + font-size: 0.875em; 299 + } 300 + } 301 + 302 + strong { 303 + @include bold-text; 304 + } 305 + 306 + // Lists 307 + ul, 308 + ol { 309 + margin: 0.75em 0; 310 + padding-left: 1.5em; 311 + } 312 + 313 + ul { 314 + list-style-type: disc; 315 + } 316 + 317 + ol { 318 + list-style-type: decimal; 319 + } 320 + 321 + li { 322 + margin: 1em 0; 323 + } 324 + 325 + // Code 326 + code { 327 + font-size: 0.875em; 328 + @include bold-text; 329 + } 330 + 331 + pre { 332 + background: $zinc-200; 333 + margin: 1em 0; 334 + padding: $space-md; 335 + font-size: $text-sm; 336 + line-height: 1.25; 337 + overflow-x: auto; 338 + border: 2px solid $black; 339 + 340 + @include solid-border; 341 + 342 + @media (prefers-color-scheme: dark) { 343 + background: $zinc-700; 344 + } 345 + 346 + code { 347 + background: none; 348 + padding: 0; 349 + font-weight: inherit; 350 + font-size: inherit; 351 + } 352 + } 353 + 354 + // Blockquotes 355 + blockquote { 356 + border-left: 0.25rem solid $zinc-200; 357 + padding-left: 1em; 358 + margin: 1.6em 0; 359 + font-style: italic; 360 + font-weight: 400; 361 + @include dark-border; 362 + } 363 + 364 + // Images 365 + img, 366 + video { 367 + @include content-spacing; 368 + } 369 + 370 + // Tables 371 + table { 372 + width: 100%; 373 + @include content-spacing; 374 + font-size: 0.875em; 375 + line-height: 1.5; 376 + border-collapse: collapse; 377 + } 378 + 379 + th, 380 + td { 381 + text-align: left; 382 + padding: 0.5em; 383 + border-bottom: 1px solid $zinc-200; 384 + @include dark-border; 385 + } 386 + 387 + th { 388 + @include bold-text; 389 + } 390 + 391 + // Horizontal rules 392 + hr { 393 + border: none; 394 + border-top: 1px solid $zinc-200; 395 + margin: 3em 0; 396 + @include dark-border; 397 + } 398 + } 399 + 400 + // Error page 401 + .error-page { 402 + text-align: center; 403 + padding: $space-lg 0; 404 + 405 + h1 { 406 + font-size: 4rem; 407 + font-weight: 700; 408 + margin: 0 0 $space-sm 0; 409 + } 410 + 411 + h2 { 412 + font-size: 1.5rem; 413 + @include bold-text; 414 + margin: 0 0 $space-md 0; 415 + } 416 + 417 + p { 418 + margin: 0 0 $space-lg 0; 419 + } 420 + 421 + .error-actions { 422 + display: flex; 423 + gap: $space-md; 424 + justify-content: center; 425 + flex-wrap: wrap; 426 + 427 + .button { 428 + width: auto; 429 + padding: $space-sm $space-lg; 430 + margin-bottom: 0; 431 + } 432 + } 433 + }
+87
sass/_variables.scss
··· 1 + // Typography 2 + $font-sans: 3 + "Host Grotesk", 4 + "Host Grotesk Fallback", 5 + -apple-system, 6 + BlinkMacSystemFont, 7 + "Segoe UI", 8 + Roboto, 9 + "Helvetica Neue", 10 + Arial, 11 + sans-serif; 12 + $font-mono: monospace; 13 + 14 + // Colors 15 + $green: oklch(72.3% 0.219 149.579); 16 + $zinc-100: oklch(96.7% 0.001 286.375); 17 + $zinc-200: oklch(92% 0.004 286.32); 18 + $zinc-300: oklch(87.1% 0.006 286.286); 19 + $zinc-400: oklch(70.5% 0.015 286.067); 20 + $zinc-500: oklch(55.2% 0.016 285.938); 21 + $zinc-500-50: color-mix(in oklch, $zinc-500 50%, transparent); 22 + $zinc-600: oklch(44.2% 0.017 285.786); 23 + $zinc-700: oklch(37% 0.013 285.805); 24 + $zinc-900: oklch(21% 0.006 285.885); 25 + $black: #000; 26 + $white: #fff; 27 + $accent: oklch(69% 0.25427 14.315); 28 + $white-75: rgba(255, 255, 255, 0.75); 29 + $black-50: rgba(0, 0, 0, 0.5); 30 + $black-33: rgba(0, 0, 0, 0.33); 31 + $white-50: rgba(255, 255, 255, 0.5); 32 + 33 + $space-xs: 0.25rem; 34 + $space-sm: 0.5rem; 35 + $space-md: 1rem; 36 + $space-lg: 1.5rem; 37 + $space-xl: 2rem; 38 + 39 + $text-xs: 0.75rem; 40 + $text-sm: 0.875rem; 41 + $text-base: 1rem; 42 + $text-lg: 1.125rem; 43 + 44 + $breakpoint-sm: 40rem; 45 + $breakpoint-lg: 64rem; 46 + 47 + $max-width: 65ch; 48 + 49 + // Mixins for repeated patterns 50 + @mixin dark-border { 51 + @media (prefers-color-scheme: dark) { 52 + border-color: $zinc-700; 53 + } 54 + } 55 + 56 + @mixin bold-text { 57 + font-weight: 700; 58 + } 59 + 60 + @mixin dashed-border-top { 61 + border-top: 2px dashed $zinc-200; 62 + @include dark-border; 63 + } 64 + 65 + @mixin solid-border { 66 + border: 2px solid $black; 67 + 68 + @media (prefers-color-scheme: dark) { 69 + border-color: $white; 70 + } 71 + } 72 + 73 + @mixin dark-bg-white { 74 + @media (prefers-color-scheme: dark) { 75 + background: $black; 76 + border-color: $white; 77 + } 78 + } 79 + 80 + @mixin content-spacing { 81 + margin: 2em 0; 82 + } 83 + 84 + @mixin mono-font($size: $text-sm) { 85 + font-family: $font-mono; 86 + font-size: $size; 87 + }
+42
sass/main.scss
··· 1 + // System font fallbacks with metric overrides 2 + @font-face { 3 + font-family: "Host Grotesk Fallback"; 4 + src: 5 + local("system-ui"), local("-apple-system"), local("BlinkMacSystemFont"), local("Segoe UI"), 6 + local("Roboto"); 7 + ascent-override: 90%; 8 + descent-override: 22%; 9 + line-gap-override: 0%; 10 + size-adjust: 100%; 11 + font-display: swap; 12 + } 13 + 14 + @font-face { 15 + font-family: "Host Grotesk"; 16 + src: url("/fonts/HostGrotesk-VariableFont.woff2") format("woff2-variations"); 17 + font-weight: 100 900; 18 + font-style: normal; 19 + font-display: swap; 20 + font-optical-sizing: auto; 21 + unicode-range: 22 + U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, 23 + U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 24 + } 25 + 26 + @font-face { 27 + font-family: "Host Grotesk"; 28 + src: url("/fonts/HostGrotesk-Italic-VariableFont.woff2") format("woff2-variations"); 29 + font-weight: 100 900; 30 + font-style: italic; 31 + font-display: swap; 32 + font-optical-sizing: auto; 33 + unicode-range: 34 + U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, 35 + U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 36 + } 37 + 38 + @import "variables"; 39 + @import "base"; 40 + @import "layout"; 41 + @import url("syntax-theme-dark.css") (prefers-color-scheme: dark); 42 + @import url("syntax-theme-light.css") (prefers-color-scheme: light);
static/fonts/HostGrotesk-Bold.ttf

This is a binary file and will not be displayed.

static/fonts/HostGrotesk-Bold.woff2

This is a binary file and will not be displayed.

static/fonts/HostGrotesk-BoldItalic.ttf

This is a binary file and will not be displayed.

static/fonts/HostGrotesk-BoldItalic.woff2

This is a binary file and will not be displayed.

static/fonts/HostGrotesk-Italic-VariableFont.ttf

This is a binary file and will not be displayed.

static/fonts/HostGrotesk-Italic-VariableFont.woff2

This is a binary file and will not be displayed.

static/fonts/HostGrotesk-Italic.ttf

This is a binary file and will not be displayed.

static/fonts/HostGrotesk-Italic.woff2

This is a binary file and will not be displayed.

static/fonts/HostGrotesk-Regular-subset.woff2

This is a binary file and will not be displayed.

static/fonts/HostGrotesk-Regular.ttf

This is a binary file and will not be displayed.

static/fonts/HostGrotesk-Regular.woff2

This is a binary file and will not be displayed.

static/fonts/HostGrotesk-VariableFont.ttf

This is a binary file and will not be displayed.

static/fonts/HostGrotesk-VariableFont.woff2

This is a binary file and will not be displayed.

+93
static/fonts/OFL.txt
··· 1 + Copyright 2023 The Host Grotesk Project Authors (https://github.com/Element-Type/HostGrotesk) 2 + 3 + This Font Software is licensed under the SIL Open Font License, Version 1.1. 4 + This license is copied below, and is also available with a FAQ at: 5 + https://openfontlicense.org 6 + 7 + 8 + ----------------------------------------------------------- 9 + SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 10 + ----------------------------------------------------------- 11 + 12 + PREAMBLE 13 + The goals of the Open Font License (OFL) are to stimulate worldwide 14 + development of collaborative font projects, to support the font creation 15 + efforts of academic and linguistic communities, and to provide a free and 16 + open framework in which fonts may be shared and improved in partnership 17 + with others. 18 + 19 + The OFL allows the licensed fonts to be used, studied, modified and 20 + redistributed freely as long as they are not sold by themselves. The 21 + fonts, including any derivative works, can be bundled, embedded, 22 + redistributed and/or sold with any software provided that any reserved 23 + names are not used by derivative works. The fonts and derivatives, 24 + however, cannot be released under any other type of license. The 25 + requirement for fonts to remain under this license does not apply 26 + to any document created using the fonts or their derivatives. 27 + 28 + DEFINITIONS 29 + "Font Software" refers to the set of files released by the Copyright 30 + Holder(s) under this license and clearly marked as such. This may 31 + include source files, build scripts and documentation. 32 + 33 + "Reserved Font Name" refers to any names specified as such after the 34 + copyright statement(s). 35 + 36 + "Original Version" refers to the collection of Font Software components as 37 + distributed by the Copyright Holder(s). 38 + 39 + "Modified Version" refers to any derivative made by adding to, deleting, 40 + or substituting -- in part or in whole -- any of the components of the 41 + Original Version, by changing formats or by porting the Font Software to a 42 + new environment. 43 + 44 + "Author" refers to any designer, engineer, programmer, technical 45 + writer or other person who contributed to the Font Software. 46 + 47 + PERMISSION & CONDITIONS 48 + Permission is hereby granted, free of charge, to any person obtaining 49 + a copy of the Font Software, to use, study, copy, merge, embed, modify, 50 + redistribute, and sell modified and unmodified copies of the Font 51 + Software, subject to the following conditions: 52 + 53 + 1) Neither the Font Software nor any of its individual components, 54 + in Original or Modified Versions, may be sold by itself. 55 + 56 + 2) Original or Modified Versions of the Font Software may be bundled, 57 + redistributed and/or sold with any software, provided that each copy 58 + contains the above copyright notice and this license. These can be 59 + included either as stand-alone text files, human-readable headers or 60 + in the appropriate machine-readable metadata fields within text or 61 + binary files as long as those fields can be easily viewed by the user. 62 + 63 + 3) No Modified Version of the Font Software may use the Reserved Font 64 + Name(s) unless explicit written permission is granted by the corresponding 65 + Copyright Holder. This restriction only applies to the primary font name as 66 + presented to the users. 67 + 68 + 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font 69 + Software shall not be used to promote, endorse or advertise any 70 + Modified Version, except to acknowledge the contribution(s) of the 71 + Copyright Holder(s) and the Author(s) or with their explicit written 72 + permission. 73 + 74 + 5) The Font Software, modified or unmodified, in part or in whole, 75 + must be distributed entirely under this license, and must not be 76 + distributed under any other license. The requirement for fonts to 77 + remain under this license does not apply to any document created 78 + using the Font Software. 79 + 80 + TERMINATION 81 + This license becomes null and void if any of the above conditions are 82 + not met. 83 + 84 + DISCLAIMER 85 + THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 86 + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 87 + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 88 + OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 89 + COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 90 + INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 91 + DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 92 + FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 93 + OTHER DEALINGS IN THE FONT SOFTWARE.
+75
static/fonts/README.txt
··· 1 + Host Grotesk Variable Font 2 + ========================== 3 + 4 + This download contains Host Grotesk as both variable fonts and static fonts. 5 + 6 + Host Grotesk is a variable font with this axis: 7 + wght 8 + 9 + This means all the styles are contained in these files: 10 + HostGrotesk-VariableFont_wght.ttf 11 + HostGrotesk-Italic-VariableFont_wght.ttf 12 + 13 + If your app fully supports variable fonts, you can now pick intermediate styles 14 + that aren’t available as static fonts. Not all apps support variable fonts, and 15 + in those cases you can use the static font files for Host Grotesk: 16 + static/HostGrotesk-Light.ttf 17 + static/HostGrotesk-Regular.ttf 18 + static/HostGrotesk-Medium.ttf 19 + static/HostGrotesk-SemiBold.ttf 20 + static/HostGrotesk-Bold.ttf 21 + static/HostGrotesk-ExtraBold.ttf 22 + static/HostGrotesk-LightItalic.ttf 23 + static/HostGrotesk-Italic.ttf 24 + static/HostGrotesk-MediumItalic.ttf 25 + static/HostGrotesk-SemiBoldItalic.ttf 26 + static/HostGrotesk-BoldItalic.ttf 27 + static/HostGrotesk-ExtraBoldItalic.ttf 28 + 29 + Get started 30 + ----------- 31 + 32 + 1. Install the font files you want to use 33 + 34 + 2. Use your app's font picker to view the font family and all the 35 + available styles 36 + 37 + Learn more about variable fonts 38 + ------------------------------- 39 + 40 + https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts 41 + https://variablefonts.typenetwork.com 42 + https://medium.com/variable-fonts 43 + 44 + In desktop apps 45 + 46 + https://theblog.adobe.com/can-variable-fonts-illustrator-cc 47 + https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts 48 + 49 + Online 50 + 51 + https://developers.google.com/fonts/docs/getting_started 52 + https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide 53 + https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts 54 + 55 + Installing fonts 56 + 57 + MacOS: https://support.apple.com/en-us/HT201749 58 + Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux 59 + Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows 60 + 61 + Android Apps 62 + 63 + https://developers.google.com/fonts/docs/android 64 + https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts 65 + 66 + License 67 + ------- 68 + Please read the full license text (OFL.txt) to understand the permissions, 69 + restrictions and requirements for usage, redistribution, and modification. 70 + 71 + You can use them in your products & projects – print or digital, 72 + commercial or otherwise. 73 + 74 + This isn't legal advice, please consider consulting a lawyer and see the full 75 + license for all details.
+181
static/giallo-dark.css
··· 1 + /* 2 + * theme "Oxocarbon Dark" generated by giallo 3 + */ 4 + 5 + .z-code { 6 + color: #f2f4f8; 7 + background-color: #161616; 8 + } 9 + 10 + .giallo-ln { 11 + color: #525252; 12 + } 13 + 14 + .z-comment { 15 + color: #6f6f6f; 16 + } 17 + .z-entity { 18 + color: #dde1e6; 19 + } 20 + .z-variable { 21 + color: #ffffff; 22 + } 23 + .z-support { 24 + color: #08bdba; 25 + } 26 + .z-keyword { 27 + color: #78a9ff; 28 + } 29 + .z-string { 30 + color: #be95ff; 31 + } 32 + .z-constant { 33 + color: #82cfff; 34 + } 35 + .z-title { 36 + color: #ffffff; 37 + } 38 + .z-label { 39 + color: #ffffff; 40 + } 41 + .z-preproc { 42 + color: #08bdba; 43 + } 44 + .z-punctuation { 45 + color: #f2f4f8; 46 + } 47 + .z-storage.z-type { 48 + color: #3ddbd9; 49 + } 50 + .z-keyword.z-operator { 51 + color: #3ddbd9; 52 + } 53 + .z-punctuation.z-separator { 54 + color: #3ddbd9; 55 + } 56 + .z-storage.z-modifier { 57 + color: #33b1ff; 58 + } 59 + .z-keyword.z-other { 60 + color: #33b1ff; 61 + } 62 + .z-support.z-function { 63 + color: #ff7eb6; 64 + } 65 + .z-storage.z-type { 66 + font-style: italic; 67 + } 68 + .z-variable.z-parameter { 69 + font-style: italic; 70 + } 71 + .z-markup.z-bold { 72 + color: #ffffff; 73 + font-weight: bold; 74 + } 75 + .z-markup.z-italic { 76 + color: #ffffff; 77 + font-style: italic; 78 + } 79 + .z-meta.z-embedded { 80 + color: #3ddbd9; 81 + } 82 + .z-constant.z-language { 83 + color: #82cfff; 84 + } 85 + .z-variable.z-member { 86 + color: #08bdba; 87 + } 88 + .z-storage.z-modifier.z-package { 89 + color: #f2f4f8; 90 + } 91 + .z-storage.z-modifier.z-import { 92 + color: #f2f4f8; 93 + } 94 + .z-keyword.z-other.z-fn { 95 + color: #3ddbd9; 96 + } 97 + .z-punctuation.z-definition.z-tag { 98 + color: #3ddbd9; 99 + } 100 + .z-punctuation.z-definition.z-list { 101 + color: #3ddbd9; 102 + } 103 + .z-entity.z-name.z-command { 104 + color: #ff7eb6; 105 + } 106 + .z-entity.z-name.z-function { 107 + color: #ff7eb6; 108 + } 109 + .z-punctuation.z-definition.z-string { 110 + color: #be95ff; 111 + } 112 + .z-entity.z-name.z-function { 113 + font-weight: bold; 114 + } 115 + .z-variable.z-other.z-definition { 116 + font-weight: bold; 117 + } 118 + .z-keyword.z-control.z-directive { 119 + color: #08bdba; 120 + } 121 + .z-punctuation.z-definition.z-directive { 122 + color: #08bdba; 123 + } 124 + .z-storage.z-type.z-rust { 125 + color: #78a9ff; 126 + } 127 + .z-punctuation.z-definition.z-markdown { 128 + color: #08bdba; 129 + } 130 + .z-entity.z-other.z-attribute-name { 131 + color: #f2f4f8; 132 + } 133 + .z-markup.z-underline.z-link { 134 + color: #ff7eb6; 135 + text-decoration: underline; 136 + } 137 + .z-punctuation.z-definition.z-comment { 138 + color: #6f6f6f; 139 + } 140 + .z-variable.z-other.z-constant.z-singlequote { 141 + color: #3ddbd9; 142 + } 143 + .z-variable.z-other.z-constant.z-backquote { 144 + color: #3ddbd9; 145 + } 146 + .z-variable.z-other.z-constant.z-sharpsign { 147 + color: #3ddbd9; 148 + } 149 + .z-entity.z-name.z-import.z-go { 150 + color: #be95ff; 151 + } 152 + .z-support.z-function.z-f.z-sideeffects { 153 + color: #ee5396; 154 + } 155 + .z-entity.z-name.z-section.z-markdown { 156 + color: #ffffff; 157 + font-weight: bold; 158 + } 159 + .z-punctuation.z-definition.z-heading.z-markdown { 160 + color: #ff7eb6; 161 + } 162 + .z-punctuation.z-definition.z-raw.z-markdown { 163 + color: #08bdba; 164 + } 165 + .z-storage.z-type.z-function.z-m.z-nosideeffects { 166 + color: #ff7eb6; 167 + } 168 + .z-entity.z-name.z-type.z-module.z-verilog { 169 + color: #ee5396; 170 + } 171 + .z-entity.z-name.z-tag.z-module.z-identifier { 172 + color: #08bdba; 173 + } 174 + .z-entity.z-name.z-tag.z-module.z-reference { 175 + color: #ff7eb6; 176 + font-weight: bold; 177 + } 178 + .z-markup.z-inline.z-raw.z-string.z-markdown { 179 + color: #ffffff; 180 + font-weight: bold; 181 + }
+181
static/giallo-light.css
··· 1 + /* 2 + * theme "Oxocarbon Light" generated by giallo 3 + */ 4 + 5 + .z-code { 6 + color: #0d0b07; 7 + background-color: #ffffff; 8 + } 9 + 10 + .giallo-ln { 11 + color: #c6c6c6; 12 + } 13 + 14 + .z-comment { 15 + color: #727272; 16 + } 17 + .z-entity { 18 + color: #221e19; 19 + } 20 + .z-variable { 21 + color: #161616; 22 + } 23 + .z-support { 24 + color: #525252; 25 + } 26 + .z-keyword { 27 + color: #525252; 28 + } 29 + .z-string { 30 + color: #33b1ff; 31 + } 32 + .z-constant { 33 + color: #08bdba; 34 + } 35 + .z-title { 36 + color: #161616; 37 + } 38 + .z-label { 39 + color: #161616; 40 + } 41 + .z-preproc { 42 + color: #525252; 43 + } 44 + .z-punctuation { 45 + color: #727272; 46 + } 47 + .z-storage.z-type { 48 + color: #727272; 49 + } 50 + .z-keyword.z-operator { 51 + color: #727272; 52 + } 53 + .z-punctuation.z-separator { 54 + color: #727272; 55 + } 56 + .z-storage.z-modifier { 57 + color: #525252; 58 + } 59 + .z-keyword.z-other { 60 + color: #525252; 61 + } 62 + .z-support.z-function { 63 + color: #08bdba; 64 + } 65 + .z-storage.z-type { 66 + font-style: italic; 67 + } 68 + .z-variable.z-parameter { 69 + font-style: italic; 70 + } 71 + .z-markup.z-bold { 72 + color: #161616; 73 + font-weight: bold; 74 + } 75 + .z-markup.z-italic { 76 + color: #161616; 77 + font-style: italic; 78 + } 79 + .z-meta.z-embedded { 80 + color: #727272; 81 + } 82 + .z-constant.z-language { 83 + color: #08bdba; 84 + } 85 + .z-variable.z-member { 86 + color: #525252; 87 + } 88 + .z-storage.z-modifier.z-package { 89 + color: #0d0b07; 90 + } 91 + .z-storage.z-modifier.z-import { 92 + color: #0d0b07; 93 + } 94 + .z-keyword.z-other.z-fn { 95 + color: #727272; 96 + } 97 + .z-punctuation.z-definition.z-tag { 98 + color: #727272; 99 + } 100 + .z-punctuation.z-definition.z-list { 101 + color: #727272; 102 + } 103 + .z-entity.z-name.z-command { 104 + color: #08bdba; 105 + } 106 + .z-entity.z-name.z-function { 107 + color: #08bdba; 108 + } 109 + .z-punctuation.z-definition.z-string { 110 + color: #33b1ff; 111 + } 112 + .z-entity.z-name.z-function { 113 + font-weight: bold; 114 + } 115 + .z-variable.z-other.z-definition { 116 + font-weight: bold; 117 + } 118 + .z-keyword.z-control.z-directive { 119 + color: #525252; 120 + } 121 + .z-punctuation.z-definition.z-directive { 122 + color: #525252; 123 + } 124 + .z-storage.z-type.z-rust { 125 + color: #525252; 126 + } 127 + .z-punctuation.z-definition.z-markdown { 128 + color: #525252; 129 + } 130 + .z-entity.z-other.z-attribute-name { 131 + color: #0d0b07; 132 + } 133 + .z-markup.z-underline.z-link { 134 + color: #08bdba; 135 + text-decoration: underline; 136 + } 137 + .z-punctuation.z-definition.z-comment { 138 + color: #727272; 139 + } 140 + .z-variable.z-other.z-constant.z-singlequote { 141 + color: #727272; 142 + } 143 + .z-variable.z-other.z-constant.z-backquote { 144 + color: #727272; 145 + } 146 + .z-variable.z-other.z-constant.z-sharpsign { 147 + color: #727272; 148 + } 149 + .z-entity.z-name.z-import.z-go { 150 + color: #33b1ff; 151 + } 152 + .z-support.z-function.z-f.z-sideeffects { 153 + color: #ee5396; 154 + } 155 + .z-entity.z-name.z-section.z-markdown { 156 + color: #161616; 157 + font-weight: bold; 158 + } 159 + .z-punctuation.z-definition.z-heading.z-markdown { 160 + color: #08bdba; 161 + } 162 + .z-punctuation.z-definition.z-raw.z-markdown { 163 + color: #525252; 164 + } 165 + .z-storage.z-type.z-function.z-m.z-nosideeffects { 166 + color: #08bdba; 167 + } 168 + .z-entity.z-name.z-type.z-module.z-verilog { 169 + color: #ee5396; 170 + } 171 + .z-entity.z-name.z-tag.z-module.z-identifier { 172 + color: #525252; 173 + } 174 + .z-entity.z-name.z-tag.z-module.z-reference { 175 + color: #08bdba; 176 + font-weight: bold; 177 + } 178 + .z-markup.z-inline.z-raw.z-string.z-markdown { 179 + color: #161616; 180 + font-weight: bold; 181 + }
+4
static/robots.txt
··· 1 + User-agent: * 2 + Allow: / 3 + 4 + Sitemap: https://madoka.systems/sitemap.xml
+530
syntax_themes/oxocarbon-dark.json
··· 1 + { 2 + "colors": { 3 + "activityBar.activeBorder": "#ff7eb6", 4 + "activityBar.background": "#161616", 5 + "activityBar.border": "#262626", 6 + "activityBar.dropBorder": "#393939", 7 + "activityBar.foreground": "#f2f4f8", 8 + "activityBarBadge.background": "#525252", 9 + "activityBarBadge.foreground": "#f2f4f8", 10 + "activityErrorBadge.background": "#ee5396", 11 + "activityErrorBadge.foreground": "#ffffff", 12 + "activityWarningBadge.background": "#ee5396", 13 + "activityWarningBadge.foreground": "#ffffff", 14 + "banner.background": "#1b1b1b", 15 + "banner.foreground": "#dde1e6", 16 + "button.background": "#393939", 17 + "button.border": "#525252", 18 + "button.foreground": "#f2f4f8", 19 + "button.hoverBackground": "#525252", 20 + "button.secondaryBackground": "#262626", 21 + "button.secondaryForeground": "#dde1e6", 22 + "button.secondaryHoverBackground": "#393939", 23 + "chart.axis": "#262626", 24 + "chart.guide": "#262626", 25 + "chart.line": "#262626", 26 + "charts.blue": "#ff7eb6", 27 + "charts.foreground": "#f2f4f8", 28 + "charts.green": "#42be65", 29 + "charts.lines": "#f2f4f8", 30 + "charts.orange": "#3ddbd9", 31 + "charts.purple": "#be95ff", 32 + "charts.red": "#ee5396", 33 + "charts.yellow": "#33b1ff", 34 + "checkbox.background": "#161616", 35 + "checkbox.border": "#525252", 36 + "checkbox.foreground": "#ffffff", 37 + "checkbox.selectBackground": "#393939", 38 + "checkbox.selectBorder": "#525252", 39 + "debugConsole.errorForeground": "#ee5396", 40 + "debugConsole.infoForeground": "#dde1e6", 41 + "debugConsole.sourceForeground": "#82cfff", 42 + "debugConsole.warningForeground": "#ff7eb6", 43 + "debugConsoleInputIcon.foreground": "#ff7eb6", 44 + "debugIcon.breakpointCurrentStackframeForeground": "#08bdba", 45 + "debugIcon.breakpointDisabledForeground": "#525252", 46 + "debugIcon.breakpointForeground": "#ee5396", 47 + "debugIcon.breakpointStackframeForeground": "#78a9ff", 48 + "debugIcon.breakpointUnverifiedForeground": "#ff7eb6", 49 + "debugIcon.continueForeground": "#ffffff", 50 + "debugIcon.disconnectForeground": "#c1c7cd", 51 + "debugIcon.pauseForeground": "#ffffff", 52 + "debugIcon.restartForeground": "#ffffff", 53 + "debugIcon.startForeground": "#ffffff", 54 + "debugIcon.stepBackForeground": "#ffffff", 55 + "debugIcon.stepIntoForeground": "#ffffff", 56 + "debugIcon.stepOutForeground": "#ffffff", 57 + "debugIcon.stepOverForeground": "#ffffff", 58 + "debugIcon.stopForeground": "#ffffff", 59 + "diffEditor.diagonalFill": "#525252", 60 + "diffEditor.insertedLineBackground": "#42be6520", 61 + "diffEditor.insertedTextBackground": "#42be6540", 62 + "diffEditor.moveActive.border": "#08bdba", 63 + "diffEditor.removedLineBackground": "#ee539620", 64 + "diffEditor.removedTextBackground": "#ee539640", 65 + "diffEditorGutter.insertedLineBackground": "#42be6520", 66 + "diffEditorGutter.removedLineBackground": "#ee539620", 67 + "disabledForeground": "#8d8d8d", 68 + "dropdown.background": "#262626", 69 + "dropdown.border": "#393939", 70 + "dropdown.foreground": "#f2f4f8", 71 + "editor.background": "#161616", 72 + "editor.findMatchBackground": "#3ddbd940", 73 + "editor.findMatchForeground": "#f2f4f8", 74 + "editor.findMatchHighlightBackground": "#ff7eb640", 75 + "editor.findMatchHighlightForeground": "#ffffff", 76 + "editor.foreground": "#f2f4f8", 77 + "editor.hoverHighlightBackground": "#39393999", 78 + "editor.inactiveSelectionBackground": "#39393920", 79 + "editor.linkedEditingBackground": "#08bdba30", 80 + "editor.placeholder.foreground": "#dde1e6", 81 + "editor.selectionBackground": "#393939", 82 + "editor.selectionForeground": "#f2f4f8", 83 + "editor.selectionHighlightBackground": "#52525240", 84 + "editor.snippetFinalTabstopHighlightBackground": "#525252", 85 + "editor.snippetFinalTabstopHighlightBorder": "#ee5396", 86 + "editor.snippetTabstopHighlightBackground": "#393939", 87 + "editor.snippetTabstopHighlightBorder": "#ff7eb6", 88 + "editor.wordHighlightBackground": "#26262630", 89 + "editor.wordHighlightBorder": "#00000000", 90 + "editor.wordHighlightStrongBackground": "#39393930", 91 + "editorBracketHighlight.foreground1": "#8d8d8d", 92 + "editorBracketHighlight.foreground2": "#6f6f6f", 93 + "editorBracketHighlight.foreground3": "#8d8d8d", 94 + "editorBracketHighlight.foreground4": "#6f6f6f", 95 + "editorBracketHighlight.foreground5": "#8d8d8d", 96 + "editorBracketHighlight.foreground6": "#6f6f6f", 97 + "editorBracketHighlight.unexpectedBracket.foreground": "#ee5396", 98 + "editorBracketMatch.background": "#00000000", 99 + "editorCursor.foreground": "#ffffff", 100 + "editorError.background": "#00000000", 101 + "editorError.foreground": "#ee5396", 102 + "editorGhostText.background": "#00000000", 103 + "editorGhostText.border": "#262626", 104 + "editorGhostText.foreground": "#525252", 105 + "editorGroup.border": "#262626", 106 + "editorGroup.dropBackground": "#39393940", 107 + "editorGroupHeader.border": "#00000000", 108 + "editorGroupHeader.tabsBackground": "#161616", 109 + "editorGroupHeader.tabsBorder": "#262626", 110 + "editorGutter.addedBackground": "#42be65", 111 + "editorGutter.background": "#161616", 112 + "editorGutter.deletedBackground": "#ee5396", 113 + "editorGutter.foldingControlForeground": "#525252", 114 + "editorGutter.modifiedBackground": "#08bdba", 115 + "editorHint.foreground": "#dde1e6", 116 + "editorHoverWidget.background": "#1b1b1b", 117 + "editorHoverWidget.border": "#262626", 118 + "editorHoverWidget.foreground": "#dde1e6", 119 + "editorInfo.background": "#00000000", 120 + "editorInfo.foreground": "#ff7eb6", 121 + "editorInlayHint.background": "#262626ff", 122 + "editorInlayHint.foreground": "#ada8a8", 123 + "editorLightBulb.foreground": "#ffffff", 124 + "editorLightBulbAutoFix.foreground": "#f2f4f8", 125 + "editorLineNumber.activeForeground": "#dde1e6", 126 + "editorLineNumber.foreground": "#525252", 127 + "editorLink.activeForeground": "#ff7eb6", 128 + "editorMarkerNavigation.background": "#1b1b1b", 129 + "editorMarkerNavigationError.background": "#ee5396", 130 + "editorMarkerNavigationInfo.background": "#08bdba", 131 + "editorMarkerNavigationWarning.background": "#ff7eb6", 132 + "editorOverviewRuler.addedForeground": "#42be65", 133 + "editorOverviewRuler.background": "#00000000", 134 + "editorOverviewRuler.border": "#262626", 135 + "editorOverviewRuler.bracketMatchForeground": "#6f6f6f", 136 + "editorOverviewRuler.currentContentForeground": "#ff7eb6", 137 + "editorOverviewRuler.deletedForeground": "#ee5396", 138 + "editorOverviewRuler.errorForeground": "#ee5396", 139 + "editorOverviewRuler.findMatchForeground": "#3ddbd999", 140 + "editorOverviewRuler.incomingContentForeground": "#08bdba", 141 + "editorOverviewRuler.infoForeground": "#ff7eb6", 142 + "editorOverviewRuler.inlineChatInserted": "#42be65", 143 + "editorOverviewRuler.inlineChatRemoved": "#ee5396", 144 + "editorOverviewRuler.modifiedForeground": "#08bdba", 145 + "editorOverviewRuler.rangeHighlightForeground": "#39393999", 146 + "editorOverviewRuler.selectionHighlightForeground": "#52525220", 147 + "editorOverviewRuler.warningForeground": "#ff7eb6", 148 + "editorOverviewRuler.wordHighlightStrongForeground": "#52525240", 149 + "editorRuler.foreground": "#262626", 150 + "editorStickyScroll.border": "#262626", 151 + "editorStickyScroll.shadow": "#00000080", 152 + "editorStickyScrollHover.background": "#393939", 153 + "editorSuggestWidget.background": "#1b1b1b", 154 + "editorSuggestWidget.border": "#00000000", 155 + "editorSuggestWidget.focusHighlightForeground": "#ff7eb6", 156 + "editorSuggestWidget.foreground": "#dde1e6", 157 + "editorSuggestWidget.highlightForeground": "#ffffff", 158 + "editorSuggestWidget.selectedBackground": "#393939", 159 + "editorSuggestWidget.selectedForeground": "#ffffff", 160 + "editorSuggestWidget.selectedIconForeground": "#ffffff", 161 + "editorWarning.background": "#00000000", 162 + "editorWarning.foreground": "#ff7eb6", 163 + "editorWidget.background": "#161616", 164 + "editorWidget.border": "#262626", 165 + "editorWidget.foreground": "#f2f4f8", 166 + "editorWidget.resizeBorder": "#161616", 167 + "errorForeground": "#ee5396", 168 + "extensionBadge.remoteBackground": "#0f62fe", 169 + "extensionBadge.remoteForeground": "#ffffff", 170 + "extensionButton.background": "#393939", 171 + "extensionButton.foreground": "#f2f4f8", 172 + "extensionButton.hoverBackground": "#525252", 173 + "extensionButton.prominentBackground": "#262626", 174 + "extensionButton.prominentForeground": "#ffffff", 175 + "extensionButton.prominentHoverBackground": "#525252", 176 + "extensionButton.separator": "#00000000", 177 + "extensionIcon.preReleaseForeground": "#3ddbd9", 178 + "extensionIcon.privateForeground": "#33b1ff", 179 + "extensionIcon.sponsorForeground": "#ff7eb6", 180 + "extensionIcon.starForeground": "#f1c21b", 181 + "extensionIcon.verifiedForeground": "#ff7eb6", 182 + "focusBorder": "#262626", 183 + "foreground": "#f2f4f8", 184 + "gauge.background": "#262626", 185 + "gauge.border": "#393939", 186 + "gauge.errorBackground": "#262626", 187 + "gauge.errorForeground": "#ee5396", 188 + "gauge.foreground": "#42be65", 189 + "gauge.warningBackground": "#262626", 190 + "gauge.warningForeground": "#ff7eb6", 191 + "gitDecoration.addedResourceForeground": "#42be65", 192 + "gitDecoration.deletedResourceForeground": "#ee5396", 193 + "gitDecoration.ignoredResourceForeground": "#8d8d8d", 194 + "gitDecoration.modifiedResourceForeground": "#ff7eb6", 195 + "gitDecoration.renamedResourceForeground": "#a6c8ff", 196 + "gitDecoration.stageDeletedResourceForeground": "#ee5396", 197 + "gitDecoration.stageModifiedResourceForeground": "#08bdba", 198 + "gitDecoration.untrackedResourceForeground": "#c1c7cd", 199 + "icon.foreground": "#f2f4f8", 200 + "input.background": "#262626", 201 + "input.foreground": "#dde1e6", 202 + "input.placeholderForeground": "#dde1e6", 203 + "inputOption.activeBackground": "#52525290", 204 + "inputOption.activeBorder": "#525252", 205 + "inputOption.activeForeground": "#ffffff", 206 + "inputOption.hoverBackground": "#52525290", 207 + "inputValidation.errorBorder": "#ee5396", 208 + "inputValidation.infoBackground": "#262626", 209 + "inputValidation.infoBorder": "#33b1ff", 210 + "inputValidation.warningBackground": "#393939", 211 + "inputValidation.warningBorder": "#ff7eb6", 212 + "keybindingLabel.background": "#262626", 213 + "keybindingLabel.border": "#525252", 214 + "keybindingLabel.foreground": "#dde1e6", 215 + "list.activeSelectionBackground": "#393939", 216 + "list.activeSelectionForeground": "#ffffff", 217 + "list.activeSelectionIconForeground": "#ffffff", 218 + "list.deemphasizedForeground": "#6f6f6f", 219 + "list.dropBackground": "#52525240", 220 + "list.dropBetweenBackground": "#525252", 221 + "list.errorForeground": "#ee5396", 222 + "list.filterMatchBackground": "#ff7eb650", 223 + "list.filterMatchBorder": "#ff7eb600", 224 + "list.focusAndSelectionOutline": "#262626", 225 + "list.focusBackground": "#393939", 226 + "list.focusForeground": "#ffffff", 227 + "list.focusHighlightForeground": "#ff7eb6", 228 + "list.focusOutline": "#262626", 229 + "list.highlightForeground": "#ffffff", 230 + "list.hoverBackground": "#52525220", 231 + "list.hoverForeground": "#ffffff", 232 + "list.inactiveFocusBackground": "#262626", 233 + "list.inactiveFocusOutline": "#00000000", 234 + "list.inactiveSelectionBackground": "#262626", 235 + "list.inactiveSelectionForeground": "#dde1e6", 236 + "list.inactiveSelectionIconForeground": "#dde1e6", 237 + "list.invalidItemForeground": "#ee5396", 238 + "list.warningForeground": "#ff7eb6", 239 + "listFilterWidget.background": "#262626", 240 + "listFilterWidget.noMatchesOutline": "#ee5396", 241 + "listFilterWidget.outline": "#525252", 242 + "listFilterWidget.shadow": "#00000080", 243 + "menu.background": "#262626", 244 + "menu.border": "#393939", 245 + "menu.foreground": "#dde1e6", 246 + "menu.selectionBackground": "#393939", 247 + "menu.selectionForeground": "#ffffff", 248 + "menu.separatorBackground": "#393939", 249 + "menubar.selectionBackground": "#39393940", 250 + "menubar.selectionBorder": "#393939", 251 + "menubar.selectionForeground": "#ffffff", 252 + "merge.currentContentBackground": "#42be6520", 253 + "merge.currentHeaderBackground": "#42be6560", 254 + "merge.incomingContentBackground": "#33b1ff20", 255 + "merge.incomingHeaderBackground": "#33b1ff60", 256 + "minimap.errorHighlight": "#ee539650", 257 + "minimap.findMatchHighlight": "#ee539650", 258 + "minimap.infoHighlight": "#dde1e650", 259 + "minimap.selectionHighlight": "#39393950", 260 + "minimap.warningHighlight": "#ff7eb650", 261 + "minimapGutter.addedBackground": "#42be6520", 262 + "minimapGutter.deletedBackground": "#ee539620", 263 + "minimapGutter.modifiedBackground": "#08bdba20", 264 + "minimapSlider.activeBackground": "#52525255", 265 + "minimapSlider.background": "#52525233", 266 + "minimapSlider.hoverBackground": "#52525244", 267 + "notebook.cellBorderColor": "#262626", 268 + "notebook.cellEditorBackground": "#1b1b1b", 269 + "notebook.cellStatusBarItemHoverBackground": "#393939", 270 + "notebook.focusedCellBorder": "#ff7eb6", 271 + "notebook.outputContainerBackgroundColor": "#181818", 272 + "notificationCenterHeader.background": "#262626", 273 + "notifications.background": "#262626", 274 + "notificationsErrorIcon.foreground": "#ee5396", 275 + "notificationsInfoIcon.foreground": "#ff7eb6", 276 + "notificationsWarningIcon.foreground": "#ff7eb6", 277 + "panel.background": "#161616", 278 + "panel.border": "#262626", 279 + "panelSection.border": "#262626", 280 + "panelSection.dropBackground": "#39393940", 281 + "panelTitle.activeBorder": "#ff7eb6", 282 + "panelTitle.activeForeground": "#ffffff", 283 + "panelTitle.border": "#00000000", 284 + "peekView.border": "#262626", 285 + "peekViewEditor.background": "#1b1b1b", 286 + "peekViewEditor.matchHighlightBackground": "#525252", 287 + "peekViewResult.background": "#212121", 288 + "peekViewResult.lineForeground": "#dde1e6", 289 + "peekViewResult.matchHighlightBackground": "#393939", 290 + "peekViewResult.selectionBackground": "#393939", 291 + "peekViewResult.selectionForeground": "#ffffff", 292 + "peekViewTitle.background": "#393939", 293 + "peekViewTitleDescription.foreground": "#f2f4f8", 294 + "peekViewTitleLabel.foreground": "#ffffff", 295 + "pickerGroup.border": "#393939", 296 + "pickerGroup.foreground": "#ff7eb6", 297 + "problemsErrorIcon.foreground": "#ee5396", 298 + "problemsInfoIcon.foreground": "#be95ff", 299 + "problemsWarningIcon.foreground": "#ff7eb6", 300 + "progressBar.background": "#ff7eb6", 301 + "sash.hoverBorder": "#525252", 302 + "scmGraph.foreground1": "#ff7eb6", 303 + "scmGraph.foreground2": "#3ddbd9", 304 + "scmGraph.foreground3": "#ee5396", 305 + "scmGraph.foreground4": "#33b1ff", 306 + "scmGraph.foreground5": "#08bdba", 307 + "scmGraph.historyItemBaseRefColor": "#78a9ff", 308 + "scmGraph.historyItemHoverAdditionsForeground": "#42be65", 309 + "scmGraph.historyItemHoverDefaultLabelBackground": "#393939", 310 + "scmGraph.historyItemHoverDefaultLabelForeground": "#f2f4f8", 311 + "scmGraph.historyItemHoverDeletionsForeground": "#ee5396", 312 + "scmGraph.historyItemHoverLabelForeground": "#161616", 313 + "scmGraph.historyItemRefColor": "#33b1ff", 314 + "scmGraph.historyItemRemoteRefColor": "#ff7eb6", 315 + "selection.background": "#525252", 316 + "settings.modifiedItemIndicator": "#ff7eb6", 317 + "sideBar.background": "#161616", 318 + "sideBar.border": "#262626", 319 + "sideBar.dropBackground": "#36363640", 320 + "sideBarSectionHeader.background": "#393939", 321 + "sideBarTitle.foreground": "#ffffff", 322 + "simpleFindWidget.sashBorder": "#262626", 323 + "statusBar.background": "#161616", 324 + "statusBar.border": "#262626", 325 + "statusBar.debuggingBackground": "#0f62fe", 326 + "statusBar.debuggingForeground": "#ffffff", 327 + "statusBar.foreground": "#dde1e6", 328 + "statusBar.noFolderBackground": "#0f62fe", 329 + "statusBar.noFolderForeground": "#ffffff", 330 + "statusBarItem.errorBackground": "#00000000", 331 + "statusBarItem.errorForeground": "#ee5396", 332 + "statusBarItem.remoteBackground": "#0f62fe", 333 + "statusBarItem.remoteForeground": "#ffffff", 334 + "statusBarItem.warningBackground": "#00000000", 335 + "statusBarItem.warningForeground": "#ee5396", 336 + "symbolIcon.arrayForeground": "#ffffff", 337 + "symbolIcon.booleanForeground": "#ffffff", 338 + "symbolIcon.classForeground": "#ffffff", 339 + "symbolIcon.colorForeground": "#ffffff", 340 + "symbolIcon.constantForeground": "#ffffff", 341 + "symbolIcon.constructorForeground": "#ffffff", 342 + "symbolIcon.enumeratorForeground": "#ffffff", 343 + "symbolIcon.enumeratorMemberForeground": "#ffffff", 344 + "symbolIcon.eventForeground": "#ffffff", 345 + "symbolIcon.fieldForeground": "#ffffff", 346 + "symbolIcon.fileForeground": "#ffffff", 347 + "symbolIcon.folderForeground": "#ffffff", 348 + "symbolIcon.functionForeground": "#ffffff", 349 + "symbolIcon.interfaceForeground": "#ffffff", 350 + "symbolIcon.keyForeground": "#ffffff", 351 + "symbolIcon.keywordForeground": "#ffffff", 352 + "symbolIcon.methodForeground": "#ffffff", 353 + "symbolIcon.moduleForeground": "#ffffff", 354 + "symbolIcon.namespaceForeground": "#ffffff", 355 + "symbolIcon.nullForeground": "#ffffff", 356 + "symbolIcon.numberForeground": "#ffffff", 357 + "symbolIcon.objectForeground": "#ffffff", 358 + "symbolIcon.operatorForeground": "#ffffff", 359 + "symbolIcon.packageForeground": "#ffffff", 360 + "symbolIcon.propertyForeground": "#ffffff", 361 + "symbolIcon.referenceForeground": "#ffffff", 362 + "symbolIcon.snippetForeground": "#ffffff", 363 + "symbolIcon.stringForeground": "#ffffff", 364 + "symbolIcon.structForeground": "#ffffff", 365 + "symbolIcon.textForeground": "#ffffff", 366 + "symbolIcon.typeParameterForeground": "#ffffff", 367 + "symbolIcon.unitForeground": "#ffffff", 368 + "symbolIcon.variableForeground": "#ffffff", 369 + "tab.activeBackground": "#161616", 370 + "tab.activeBorder": "#161616", 371 + "tab.activeBorderTop": "#ff7eb6", 372 + "tab.activeForeground": "#ffffff", 373 + "tab.activeModifiedBorder": "#ff7eb6", 374 + "tab.border": "#262626", 375 + "tab.dragAndDropBorder": "#ff7eb6", 376 + "tab.hoverBackground": "#262626", 377 + "tab.inactiveBackground": "#161616", 378 + "tab.inactiveForeground": "#8d8d8d", 379 + "tab.inactiveModifiedBorder": "#ff7eb660", 380 + "tab.unfocusedActiveBorder": "#161616", 381 + "tab.unfocusedActiveBorderTop": "#262626", 382 + "tab.unfocusedActiveModifiedBorder": "#ff7eb660", 383 + "tab.unfocusedInactiveForeground": "#8d8d8d", 384 + "tab.unfocusedInactiveModifiedBorder": "#ff7eb640", 385 + "terminal.ansiBlack": "#161616", 386 + "terminal.ansiBlue": "#08bdba", 387 + "terminal.ansiBrightBlack": "#525252", 388 + "terminal.ansiBrightBlue": "#08bdba", 389 + "terminal.ansiBrightCyan": "#33b1ff", 390 + "terminal.ansiBrightGreen": "#ff7eb6", 391 + "terminal.ansiBrightMagenta": "#82cfff", 392 + "terminal.ansiBrightRed": "#78a9ff", 393 + "terminal.ansiBrightWhite": "#ffffff", 394 + "terminal.ansiBrightYellow": "#42be65", 395 + "terminal.ansiCyan": "#33b1ff", 396 + "terminal.ansiGreen": "#ff7eb6", 397 + "terminal.ansiMagenta": "#82cfff", 398 + "terminal.ansiRed": "#78a9ff", 399 + "terminal.ansiWhite": "#dde1e6", 400 + "terminal.ansiYellow": "#42be65", 401 + "terminal.background": "#161616", 402 + "terminal.border": "#262626", 403 + "terminal.findMatchBackground": "#3ddbd999", 404 + "terminal.findMatchBorder": "#00000000", 405 + "terminal.findMatchHighlightBackground": "#39393999", 406 + "terminal.findMatchHighlightBorder": "#39393999", 407 + "terminal.foreground": "#ffffff", 408 + "terminal.hoverHighlightBackground": "#39393999", 409 + "terminal.inactiveSelectionBackground": "#39393940", 410 + "terminal.selectionBackground": "#393939", 411 + "terminal.selectionForeground": "#ffffff", 412 + "terminalCommandDecoration.defaultBackground": "#262626", 413 + "terminalCommandDecoration.errorBackground": "#ee5396", 414 + "terminalCommandDecoration.successBackground": "#3ddbd9", 415 + "terminalCursor.background": "#161616", 416 + "terminalCursor.foreground": "#ffffff", 417 + "testing.iconErrored": "#ee5396", 418 + "testing.iconFailed": "#ee5396", 419 + "testing.iconPassed": "#42be65", 420 + "testing.iconSkipped": "#ff7eb6", 421 + "testing.runAction": "#08bdba", 422 + "textBlockQuote.background": "#1b1b1b", 423 + "textBlockQuote.border": "#ff7eb6", 424 + "textCodeBlock.background": "#1b1b1b", 425 + "textLink.activeForeground": "#be95ff", 426 + "textLink.foreground": "#ff7eb6", 427 + "textPreformat.background": "#262626", 428 + "textPreformat.foreground": "#f2f4f8", 429 + "titleBar.activeBackground": "#161616", 430 + "titleBar.activeForeground": "#ffffff", 431 + "titleBar.border": "#262626", 432 + "titleBar.inactiveBackground": "#262626", 433 + "titleBar.inactiveForeground": "#8d8d8d", 434 + "tree.inactiveIndentGuidesStroke": "#262626", 435 + "tree.indentGuidesStroke": "#525252", 436 + "tree.tableColumnsBorder": "#262626", 437 + "tree.tableOddRowsBackground": "#212121", 438 + "welcomePage.progress.background": "#393939", 439 + "welcomePage.progress.foreground": "#525252", 440 + "widget.border": "#262626", 441 + "widget.shadow": "#00000080" 442 + }, 443 + "name": "Oxocarbon Dark", 444 + "tokenColors": [ 445 + { "scope": ["comment"], "settings": { "foreground": "#6f6f6f" } }, 446 + { "scope": ["entity"], "settings": { "foreground": "#dde1e6" } }, 447 + { 448 + "scope": ["storage.modifier.package", "storage.modifier.import"], 449 + "settings": { "foreground": "#f2f4f8" } 450 + }, 451 + { "scope": ["variable"], "settings": { "foreground": "#ffffff" } }, 452 + { "scope": ["support"], "settings": { "foreground": "#08bdba" } }, 453 + { 454 + "scope": [ 455 + "storage.type", 456 + "keyword.other.fn", 457 + "keyword.operator", 458 + "punctuation.separator", 459 + "punctuation.definition.tag", 460 + "punctuation.definition.list", 461 + "variable.other.constant.singlequote", 462 + "variable.other.constant.backquote", 463 + "variable.other.constant.sharpsign" 464 + ], 465 + "settings": { "foreground": "#3ddbd9" } 466 + }, 467 + { "scope": ["keyword"], "settings": { "foreground": "#78a9ff" } }, 468 + { "scope": ["storage.modifier", "keyword.other"], "settings": { "foreground": "#33b1ff" } }, 469 + { 470 + "scope": [ 471 + "entity.name.command", 472 + "entity.name.function", 473 + "support.function", 474 + "storage.type.function.m.nosideeffects" 475 + ], 476 + "settings": { "foreground": "#ff7eb6" } 477 + }, 478 + { 479 + "scope": ["string", "punctuation.definition.string"], 480 + "settings": { "foreground": "#be95ff" } 481 + }, 482 + { "scope": ["constant"], "settings": { "foreground": "#82cfff" } }, 483 + { 484 + "scope": ["entity.name.function", "variable.other.definition"], 485 + "settings": { "fontStyle": "bold" } 486 + }, 487 + { "scope": ["storage.type", "variable.parameter"], "settings": { "fontStyle": "italic" } }, 488 + { 489 + "scope": ["keyword.control.directive", "punctuation.definition.directive"], 490 + "settings": { "foreground": "#08bdba" } 491 + }, 492 + { "scope": ["storage.type.rust"], "settings": { "foreground": "#78a9ff" } }, 493 + { "scope": ["entity.name.import.go"], "settings": { "foreground": "#be95ff" } }, 494 + { "scope": ["support.function.f.sideeffects"], "settings": { "foreground": "#ee5396" } }, 495 + { "scope": ["entity.name.type.module.verilog"], "settings": { "foreground": "#ee5396" } }, 496 + { "scope": ["entity.name.tag.module.identifier"], "settings": { "foreground": "#08bdba" } }, 497 + { 498 + "scope": ["entity.name.tag.module.reference"], 499 + "settings": { "fontStyle": "bold", "foreground": "#ff7eb6" } 500 + }, 501 + { 502 + "scope": ["entity.name.section.markdown", "markup.inline.raw.string.markdown"], 503 + "settings": { "fontStyle": "bold", "foreground": "#ffffff" } 504 + }, 505 + { 506 + "scope": ["punctuation.definition.heading.markdown"], 507 + "settings": { "foreground": "#ff7eb6" } 508 + }, 509 + { 510 + "scope": ["punctuation.definition.raw.markdown", "punctuation.definition.markdown"], 511 + "settings": { "foreground": "#08bdba" } 512 + }, 513 + { "scope": ["title"], "settings": { "foreground": "#ffffff" } }, 514 + { "scope": ["label"], "settings": { "foreground": "#ffffff" } }, 515 + { "scope": ["entity.other.attribute-name"], "settings": { "foreground": "#f2f4f8" } }, 516 + { "scope": ["markup.bold"], "settings": { "fontStyle": "bold", "foreground": "#ffffff" } }, 517 + { "scope": ["markup.italic"], "settings": { "fontStyle": "italic", "foreground": "#ffffff" } }, 518 + { 519 + "scope": ["markup.underline.link"], 520 + "settings": { "fontStyle": "underline", "foreground": "#ff7eb6" } 521 + }, 522 + { "scope": ["meta.embedded"], "settings": { "foreground": "#3ddbd9" } }, 523 + { "scope": ["constant.language"], "settings": { "foreground": "#82cfff" } }, 524 + { "scope": ["variable.member"], "settings": { "foreground": "#08bdba" } }, 525 + { "scope": ["preproc"], "settings": { "foreground": "#08bdba" } }, 526 + { "scope": ["punctuation"], "settings": { "foreground": "#f2f4f8" } }, 527 + { "scope": ["punctuation.definition.comment"], "settings": { "foreground": "#6f6f6f" } } 528 + ], 529 + "type": "dark" 530 + }
+517
syntax_themes/oxocarbon-light.json
··· 1 + { 2 + "name": "Oxocarbon Light", 3 + "type": "light", 4 + "colors": { 5 + "activityBar.activeBorder": "#525252", 6 + "activityBar.background": "#ffffff", 7 + "activityBar.border": "#e9e9e9", 8 + "activityBar.dropBorder": "#d9d9d9", 9 + "activityBar.foreground": "#0d0b07", 10 + "activityBarBadge.background": "#c6c6c6", 11 + "activityBarBadge.foreground": "#ffffff", 12 + "activityErrorBadge.background": "#727272", 13 + "activityErrorBadge.foreground": "#ffffff", 14 + "activityWarningBadge.background": "#727272", 15 + "activityWarningBadge.foreground": "#ffffff", 16 + "banner.background": "#f4f4f4", 17 + "banner.foreground": "#221e19", 18 + "button.background": "#d9d9d9", 19 + "button.border": "#c6c6c6", 20 + "button.foreground": "#0d0b07", 21 + "button.hoverBackground": "#c6c6c6", 22 + "button.secondaryBackground": "#e9e9e9", 23 + "button.secondaryForeground": "#221e19", 24 + "button.secondaryHoverBackground": "#d9d9d9", 25 + "checkbox.background": "#ffffff", 26 + "checkbox.border": "#c6c6c6", 27 + "checkbox.foreground": "#0d0b07", 28 + "checkbox.selectBackground": "#d9d9d9", 29 + "checkbox.selectBorder": "#c6c6c6", 30 + "debugConsole.errorForeground": "#727272", 31 + "debugConsole.infoForeground": "#221e19", 32 + "debugConsole.sourceForeground": "#525252", 33 + "debugConsole.warningForeground": "#727272", 34 + "debugConsoleInputIcon.foreground": "#727272", 35 + "debugIcon.breakpointCurrentStackframeForeground": "#525252", 36 + "debugIcon.breakpointDisabledForeground": "#c6c6c6", 37 + "debugIcon.breakpointForeground": "#727272", 38 + "debugIcon.breakpointStackframeForeground": "#525252", 39 + "debugIcon.breakpointUnverifiedForeground": "#727272", 40 + "debugIcon.continueForeground": "#0d0b07", 41 + "debugIcon.disconnectForeground": "#3e3832", 42 + "debugIcon.pauseForeground": "#0d0b07", 43 + "debugIcon.restartForeground": "#0d0b07", 44 + "debugIcon.startForeground": "#0d0b07", 45 + "debugIcon.stepBackForeground": "#0d0b07", 46 + "debugIcon.stepIntoForeground": "#0d0b07", 47 + "debugIcon.stepOutForeground": "#0d0b07", 48 + "debugIcon.stopForeground": "#0d0b07", 49 + "diffEditor.diagonalFill": "#c6c6c6", 50 + "diffEditor.insertedLineBackground": "#42be6520", 51 + "diffEditor.insertedTextBackground": "#42be6540", 52 + "diffEditor.moveActive.border": "#08bdba", 53 + "diffEditor.removedLineBackground": "#ee539620", 54 + "diffEditor.removedTextBackground": "#ee539640", 55 + "diffEditorGutter.insertedLineBackground": "#42be6520", 56 + "diffEditorGutter.removedLineBackground": "#ee539620", 57 + "disabledForeground": "#727272", 58 + "dropdown.background": "#e9e9e9", 59 + "dropdown.border": "#d9d9d9", 60 + "dropdown.foreground": "#0d0b07", 61 + "editor.background": "#ffffff", 62 + "editor.findMatchBackground": "#52525240", 63 + "editor.findMatchForeground": "#161616", 64 + "editor.findMatchHighlightBackground": "#08bdba40", 65 + "editor.findMatchHighlightForeground": "#ffffff", 66 + "editor.foreground": "#0d0b07", 67 + "editor.hoverHighlightBackground": "#e9e9e9999", 68 + "editor.inactiveSelectionBackground": "#e9e9e920", 69 + "editor.linkedEditingBackground": "#08bdba30", 70 + "editor.placeholder.foreground": "#727272", 71 + "editor.selectionBackground": "#e9e9e9", 72 + "editor.selectionForeground": "#161616", 73 + "editor.selectionHighlightBackground": "#c6c6c640", 74 + "editor.snippetFinalTabstopHighlightBackground": "#c6c6c6", 75 + "editor.snippetFinalTabstopHighlightBorder": "#727272", 76 + "editor.snippetTabstopHighlightBackground": "#e9e9e9", 77 + "editor.snippetTabstopHighlightBorder": "#08bdba", 78 + "editor.wordHighlightBackground": "#e9e9e930", 79 + "editor.wordHighlightBorder": "#ffffff00", 80 + "editor.wordHighlightStrongBackground": "#e9e9e930", 81 + "editorBracketHighlight.foreground1": "#727272", 82 + "editorBracketHighlight.foreground2": "#909090", 83 + "editorBracketHighlight.foreground3": "#727272", 84 + "editorBracketHighlight.foreground4": "#909090", 85 + "editorBracketHighlight.foreground5": "#727272", 86 + "editorBracketHighlight.foreground6": "#909090", 87 + "editorBracketHighlight.unexpectedBracket.foreground": "#727272", 88 + "editorBracketMatch.background": "#ffffff00", 89 + "editorCursor.foreground": "#161616", 90 + "editorError.background": "#ffffff00", 91 + "editorError.foreground": "#ee5396", 92 + "editorGhostText.background": "#ffffff00", 93 + "editorGhostText.border": "#e9e9e9", 94 + "editorGhostText.foreground": "#727272", 95 + "editorGroup.border": "#e9e9e9", 96 + "editorGroup.dropBackground": "#d9d9d940", 97 + "editorGroupHeader.border": "#ffffff00", 98 + "editorGroupHeader.tabsBackground": "#ffffff", 99 + "editorGroupHeader.tabsBorder": "#e9e9e9", 100 + "editorGutter.addedBackground": "#42be65", 101 + "editorGutter.background": "#ffffff", 102 + "editorGutter.deletedBackground": "#ee5396", 103 + "editorGutter.foldingControlForeground": "#c6c6c6", 104 + "editorGutter.modifiedBackground": "#08bdba", 105 + "editorHint.foreground": "#727272", 106 + "editorHoverWidget.background": "#f4f4f4", 107 + "editorHoverWidget.border": "#e9e9e9", 108 + "editorHoverWidget.foreground": "#221e19", 109 + "editorInfo.background": "#ffffff00", 110 + "editorInfo.foreground": "#08bdba", 111 + "editorInlayHint.background": "#e9e9e9ff", 112 + "editorInlayHint.foreground": "#525252", 113 + "editorLightBulb.foreground": "#161616", 114 + "editorLightBulbAutoFix.foreground": "#0d0b07", 115 + "editorLineNumber.activeForeground": "#727272", 116 + "editorLineNumber.foreground": "#c6c6c6", 117 + "editorLink.activeForeground": "#08bdba", 118 + "editorMarkerNavigation.background": "#f4f4f4", 119 + "editorMarkerNavigationError.background": "#ee5396", 120 + "editorMarkerNavigationInfo.background": "#08bdba", 121 + "editorMarkerNavigationWarning.background": "#727272", 122 + "editorOverviewRuler.addedForeground": "#42be65", 123 + "editorOverviewRuler.background": "#ffffff00", 124 + "editorOverviewRuler.border": "#e9e9e9", 125 + "editorOverviewRuler.bracketMatchForeground": "#909090", 126 + "editorOverviewRuler.currentContentForeground": "#08bdba", 127 + "editorOverviewRuler.deletedForeground": "#ee5396", 128 + "editorOverviewRuler.errorForeground": "#ee5396", 129 + "editorOverviewRuler.findMatchForeground": "#72727299", 130 + "editorOverviewRuler.incomingContentForeground": "#08bdba", 131 + "editorOverviewRuler.inlineChatInserted": "#42be65", 132 + "editorOverviewRuler.inlineChatRemoved": "#ee5396", 133 + "editorOverviewRuler.modifiedForeground": "#08bdba", 134 + "editorOverviewRuler.rangeHighlightForeground": "#e9e9e999", 135 + "editorOverviewRuler.selectionHighlightForeground": "#c6c6c620", 136 + "editorOverviewRuler.warningForeground": "#727272", 137 + "editorOverviewRuler.wordHighlightStrongForeground": "#c6c6c640", 138 + "editorRuler.foreground": "#e9e9e9", 139 + "editorStickyScroll.border": "#e9e9e9", 140 + "editorStickyScroll.shadow": "#ffffff80", 141 + "editorStickyScrollHover.background": "#d9d9d9", 142 + "editorSuggestWidget.background": "#f4f4f4", 143 + "editorSuggestWidget.border": "#ffffff00", 144 + "editorSuggestWidget.focusHighlightForeground": "#727272", 145 + "editorSuggestWidget.foreground": "#727272", 146 + "editorSuggestWidget.highlightForeground": "#0d0b07", 147 + "editorSuggestWidget.selectedBackground": "#e9e9e9", 148 + "editorSuggestWidget.selectedForeground": "#161616", 149 + "editorSuggestWidget.selectedIconForeground": "#161616", 150 + "editorWarning.background": "#ffffff00", 151 + "editorWarning.foreground": "#727272", 152 + "editorWidget.background": "#ffffff", 153 + "editorWidget.border": "#e9e9e9", 154 + "editorWidget.foreground": "#0d0b07", 155 + "editorWidget.resizeBorder": "#ffffff", 156 + "errorForeground": "#ee5396", 157 + "extensionBadge.remoteBackground": "#909090", 158 + "extensionBadge.remoteForeground": "#ffffff", 159 + "extensionButton.background": "#e9e9e9", 160 + "extensionButton.foreground": "#0d0b07", 161 + "extensionButton.hoverBackground": "#c6c6c6", 162 + "extensionButton.prominentBackground": "#e9e9e9", 163 + "extensionButton.prominentForeground": "#161616", 164 + "extensionButton.separator": "#ffffff00", 165 + "extensionIcon.preReleaseForeground": "#525252", 166 + "extensionIcon.privateForeground": "#08bdba", 167 + "extensionIcon.sponsorForeground": "#727272", 168 + "extensionIcon.starForeground": "#0e3de4", 169 + "extensionIcon.verifiedForeground": "#08bdba", 170 + "focusBorder": "#e9e9e9", 171 + "foreground": "#0d0b07", 172 + "gauge.background": "#e9e9e9", 173 + "gauge.border": "#d9d9d9", 174 + "gauge.errorBackground": "#e9e9e9", 175 + "gauge.errorForeground": "#ee5396", 176 + "gauge.foreground": "#42be65", 177 + "gauge.warningBackground": "#e9e9e9", 178 + "gauge.warningForeground": "#727272", 179 + "gitDecoration.addedResourceForeground": "#42be65", 180 + "gitDecoration.deletedResourceForeground": "#ee5396", 181 + "gitDecoration.ignoredResourceForeground": "#727272", 182 + "gitDecoration.modifiedResourceForeground": "#08bdba", 183 + "gitDecoration.renamedResourceForeground": "#33b1ff", 184 + "gitDecoration.stageDeletedResourceForeground": "#ee5396", 185 + "gitDecoration.stageModifiedResourceForeground": "#08bdba", 186 + "gitDecoration.untrackedResourceForeground": "#3ddbd9", 187 + "icon.foreground": "#0d0b07", 188 + "input.background": "#e9e9e9", 189 + "input.foreground": "#727272", 190 + "input.placeholderForeground": "#727272", 191 + "inputOption.activeBackground": "#c6c6c690", 192 + "inputOption.activeBorder": "#c6c6c6", 193 + "inputOption.activeForeground": "#161616", 194 + "inputOption.hoverBackground": "#c6c6c690", 195 + "inputValidation.errorBorder": "#ee5396", 196 + "inputValidation.infoBackground": "#e9e9e9", 197 + "inputValidation.infoBorder": "#08bdba", 198 + "inputValidation.warningBackground": "#e9e9e9", 199 + "inputValidation.warningBorder": "#727272", 200 + "keybindingLabel.background": "#e9e9e9", 201 + "keybindingLabel.border": "#c6c6c6", 202 + "keybindingLabel.foreground": "#727272", 203 + "list.activeSelectionBackground": "#e9e9e9", 204 + "list.activeSelectionForeground": "#161616", 205 + "list.activeSelectionIconForeground": "#161616", 206 + "list.deemphasizedForeground": "#909090", 207 + "list.dropBackground": "#c6c6c640", 208 + "list.dropBetweenBackground": "#c6c6c6", 209 + "list.errorForeground": "#ee5396", 210 + "list.filterMatchBackground": "#72727250", 211 + "list.filterMatchBorder": "#72727200", 212 + "list.focusAndSelectionOutline": "#e9e9e9", 213 + "list.focusBackground": "#e9e9e9", 214 + "list.focusForeground": "#161616", 215 + "list.focusHighlightForeground": "#727272", 216 + "list.focusOutline": "#e9e9e9", 217 + "list.highlightForeground": "#161616", 218 + "list.hoverBackground": "#c6c6c620", 219 + "list.hoverForeground": "#161616", 220 + "list.inactiveFocusBackground": "#e9e9e9", 221 + "list.inactiveFocusOutline": "#ffffff00", 222 + "list.inactiveSelectionBackground": "#e9e9e9", 223 + "list.inactiveSelectionForeground": "#727272", 224 + "list.inactiveSelectionIconForeground": "#727272", 225 + "list.invalidItemForeground": "#ee5396", 226 + "list.warningForeground": "#727272", 227 + "listFilterWidget.background": "#e9e9e9", 228 + "listFilterWidget.noMatchesOutline": "#ee5396", 229 + "listFilterWidget.outline": "#c6c6c6", 230 + "listFilterWidget.shadow": "#ffffff80", 231 + "menu.background": "#e9e9e9", 232 + "menu.border": "#d9d9d9", 233 + "menu.foreground": "#727272", 234 + "menu.selectionBackground": "#e9e9e9", 235 + "menu.selectionForeground": "#161616", 236 + "menu.separatorBackground": "#e9e9e9", 237 + "menubar.selectionBackground": "#e9e9e940", 238 + "menubar.selectionBorder": "#e9e9e9", 239 + "menubar.selectionForeground": "#161616", 240 + "merge.currentContentBackground": "#42be6520", 241 + "merge.currentHeaderBackground": "#42be6560", 242 + "merge.incomingContentBackground": "#08bdba20", 243 + "merge.incomingHeaderBackground": "#08bdba60", 244 + "minimap.errorHighlight": "#ee539650", 245 + "minimap.findMatchHighlight": "#ee539650", 246 + "minimap.infoHighlight": "#727272650", 247 + "minimap.selectionHighlight": "#e9e9e950", 248 + "minimap.warningHighlight": "#72727250", 249 + "minimapGutter.addedBackground": "#42be6520", 250 + "minimapGutter.deletedBackground": "#ee539620", 251 + "minimapGutter.modifiedBackground": "#08bdba20", 252 + "minimapSlider.activeBackground": "#c6c6c655", 253 + "minimapSlider.background": "#c6c6c633", 254 + "minimapSlider.hoverBackground": "#c6c6c644", 255 + "notebook.cellBorderColor": "#e9e9e9", 256 + "notebook.cellEditorBackground": "#ffffff", 257 + "notebook.cellStatusBarItemHoverBackground": "#e9e9e9", 258 + "notebook.focusedCellBorder": "#08bdba", 259 + "notebook.outputContainerBackgroundColor": "#e7e7e7", 260 + "notificationCenterHeader.background": "#e9e9e9", 261 + "notifications.background": "#e9e9e9", 262 + "notificationsErrorIcon.foreground": "#ee5396", 263 + "notificationsInfoIcon.foreground": "#08bdba", 264 + "notificationsWarningIcon.foreground": "#727272", 265 + "panel.background": "#ffffff", 266 + "panel.border": "#e9e9e9", 267 + "panelSection.border": "#e9e9e9", 268 + "panelSection.dropBackground": "#d9d9d940", 269 + "panelTitle.activeBorder": "#08bdba", 270 + "panelTitle.activeForeground": "#161616", 271 + "panelTitle.border": "#ffffff00", 272 + "panelTitle.foreground": "#727272", 273 + "peekView.border": "#e9e9e9", 274 + "peekViewEditor.background": "#ffffff", 275 + "peekViewEditor.matchHighlightBackground": "#c6c6c6", 276 + "peekViewResult.background": "#f0f0f0", 277 + "peekViewResult.lineForeground": "#727272", 278 + "peekViewResult.matchHighlightBackground": "#e9e9e9", 279 + "peekViewResult.selectionBackground": "#e9e9e9", 280 + "peekViewResult.selectionForeground": "#161616", 281 + "peekViewTitle.background": "#e9e9e9", 282 + "peekViewTitleDescription.foreground": "#0d0b07", 283 + "peekViewTitleLabel.foreground": "#161616", 284 + "pickerGroup.border": "#d9d9d9", 285 + "pickerGroup.foreground": "#08bdba", 286 + "problemsErrorIcon.foreground": "#ee5396", 287 + "problemsInfoIcon.foreground": "#33b1ff", 288 + "problemsWarningIcon.foreground": "#727272", 289 + "progressBar.background": "#08bdba", 290 + "sash.hoverBorder": "#c6c6c6", 291 + "scmGraph.foreground1": "#08bdba", 292 + "scmGraph.foreground2": "#525252", 293 + "scmGraph.foreground3": "#ee5396", 294 + "scmGraph.foreground4": "#33b1ff", 295 + "scmGraph.foreground5": "#08bdba", 296 + "scmGraph.historyItemBaseRefColor": "#33b1ff", 297 + "scmGraph.historyItemHoverAdditionsForeground": "#42be65", 298 + "scmGraph.historyItemHoverDefaultLabelBackground": "#e9e9e9", 299 + "scmGraph.historyItemHoverDefaultLabelForeground": "#727272", 300 + "scmGraph.historyItemHoverDeletionsForeground": "#ee5396", 301 + "scmGraph.historyItemHoverLabelForeground": "#ffffff", 302 + "scmGraph.historyItemRefColor": "#08bdba", 303 + "scmGraph.historyItemRemoteRefColor": "#08bdba", 304 + "selection.background": "#c6c6c6", 305 + "settings.modifiedItemIndicator": "#08bdba", 306 + "sideBar.background": "#ffffff", 307 + "sideBar.border": "#e9e9e9", 308 + "sideBar.dropBackground": "#c9c9c940", 309 + "sideBarSectionHeader.background": "#e9e9e9", 310 + "sideBarTitle.foreground": "#161616", 311 + "simpleFindWidget.sashBorder": "#e9e9e9", 312 + "statusBar.background": "#ffffff", 313 + "statusBar.border": "#e9e9e9", 314 + "statusBar.debuggingBackground": "#909090", 315 + "statusBar.debuggingForeground": "#ffffff", 316 + "statusBar.foreground": "#727272", 317 + "statusBar.noFolderBackground": "#909090", 318 + "statusBar.noFolderForeground": "#ffffff", 319 + "statusBarItem.errorBackground": "#ffffff00", 320 + "statusBarItem.errorForeground": "#ee5396", 321 + "statusBarItem.remoteBackground": "#909090", 322 + "statusBarItem.remoteForeground": "#ffffff", 323 + "statusBarItem.warningBackground": "#ffffff00", 324 + "statusBarItem.warningForeground": "#ee5396", 325 + "symbolIcon.arrayForeground": "#161616", 326 + "symbolIcon.booleanForeground": "#161616", 327 + "symbolIcon.classForeground": "#161616", 328 + "symbolIcon.colorForeground": "#161616", 329 + "symbolIcon.constantForeground": "#161616", 330 + "symbolIcon.constructorForeground": "#161616", 331 + "symbolIcon.enumeratorForeground": "#161616", 332 + "symbolIcon.enumMemberForeground": "#161616", 333 + "symbolIcon.eventForeground": "#161616", 334 + "symbolIcon.fieldForeground": "#161616", 335 + "symbolIcon.fileForeground": "#161616", 336 + "symbolIcon.folderForeground": "#161616", 337 + "symbolIcon.functionForeground": "#161616", 338 + "symbolIcon.interfaceForeground": "#161616", 339 + "symbolIcon.keyForeground": "#161616", 340 + "symbolIcon.keywordForeground": "#161616", 341 + "symbolIcon.methodForeground": "#161616", 342 + "symbolIcon.moduleForeground": "#161616", 343 + "symbolIcon.namespaceForeground": "#161616", 344 + "symbolIcon.nullForeground": "#161616", 345 + "symbolIcon.numberForeground": "#161616", 346 + "symbolIcon.objectForeground": "#161616", 347 + "symbolIcon.operatorForeground": "#161616", 348 + "symbolIcon.packageForeground": "#161616", 349 + "symbolIcon.propertyForeground": "#161616", 350 + "symbolIcon.referenceForeground": "#161616", 351 + "symbolIcon.snippetForeground": "#161616", 352 + "symbolIcon.structForeground": "#161616", 353 + "symbolIcon.textForeground": "#161616", 354 + "symbolIcon.typeParameterForeground": "#161616", 355 + "symbolIcon.typeForeground": "#161616", 356 + "symbolIcon.unitForeground": "#161616", 357 + "symbolIcon.variableForeground": "#161616", 358 + "tab.activeBackground": "#ffffff", 359 + "tab.activeBorder": "#ffffff", 360 + "tab.activeBorderTop": "#08bdba", 361 + "tab.activeForeground": "#161616", 362 + "tab.activeModifiedBorder": "#08bdba", 363 + "tab.border": "#e9e9e9", 364 + "tab.dragAndDropBorder": "#08bdba", 365 + "tab.hoverBackground": "#e9e9e9", 366 + "tab.inactiveBackground": "#ffffff", 367 + "tab.inactiveForeground": "#727272", 368 + "tab.inactiveModifiedBorder": "#08bdba60", 369 + "tab.unfocusedActiveBorder": "#ffffff", 370 + "tab.unfocusedActiveBorderTop": "#e9e9e9", 371 + "tab.unfocusedActiveModifiedBorder": "#08bdba60", 372 + "tab.unfocusedInactiveForeground": "#727272", 373 + "tab.unfocusedInactiveModifiedBorder": "#08bdba40", 374 + "terminal.ansiBlack": "#ffffff", 375 + "terminal.ansiBlue": "#08bdba", 376 + "terminal.ansiBrightBlack": "#c6c6c6", 377 + "terminal.ansiBrightBlue": "#08bdba", 378 + "terminal.ansiBrightCyan": "#33b1ff", 379 + "terminal.ansiBrightGreen": "#42be65", 380 + "terminal.ansiBrightMagenta": "#82cfff", 381 + "terminal.ansiBrightRed": "#ee5396", 382 + "terminal.ansiBrightWhite": "#161616", 383 + "terminal.ansiBrightYellow": "#ff7eb6", 384 + "terminal.ansiCyan": "#33b1ff", 385 + "terminal.ansiGreen": "#42be65", 386 + "terminal.ansiMagenta": "#82cfff", 387 + "terminal.ansiRed": "#ee5396", 388 + "terminal.ansiWhite": "#727272", 389 + "terminal.ansiYellow": "#ff7eb6", 390 + "terminal.background": "#ffffff", 391 + "terminal.border": "#e9e9e9", 392 + "terminal.findMatchBackground": "#72727299", 393 + "terminal.findMatchBorder": "#ffffff00", 394 + "terminal.findMatchHighlightBackground": "#e9e9e999", 395 + "terminal.findMatchHighlightBorder": "#e9e9e999", 396 + "terminal.foreground": "#161616", 397 + "terminal.hoverHighlightBackground": "#e9e9e999", 398 + "terminal.inactiveSelectionBackground": "#e9e9e940", 399 + "terminal.selectionBackground": "#e9e9e9", 400 + "terminal.selectionForeground": "#161616", 401 + "terminalCommandDecoration.defaultBackground": "#e9e9e9", 402 + "terminalCommandDecoration.errorBackground": "#ee5396", 403 + "terminalCommandDecoration.successBackground": "#42be65", 404 + "terminalCursor.background": "#ffffff", 405 + "terminalCursor.foreground": "#161616", 406 + "testing.iconErrored": "#ee5396", 407 + "testing.iconFailed": "#ee5396", 408 + "testing.iconPassed": "#42be65", 409 + "testing.iconSkipped": "#08bdba", 410 + "testing.runAction": "#08bdba", 411 + "textBlockQuote.background": "#ffffff", 412 + "textBlockQuote.border": "#08bdba", 413 + "textCodeBlock.background": "#ffffff", 414 + "textLink.activeForeground": "#33b1ff", 415 + "textLink.foreground": "#08bdba", 416 + "textPreformat.background": "#e9e9e9", 417 + "textPreformat.foreground": "#161616", 418 + "titleBar.activeBackground": "#ffffff", 419 + "titleBar.activeForeground": "#161616", 420 + "titleBar.border": "#e9e9e9", 421 + "titleBar.inactiveBackground": "#e9e9e9", 422 + "titleBar.inactiveForeground": "#727272", 423 + "tree.inactiveIndentGuidesStroke": "#e9e9e9", 424 + "tree.indentGuidesStroke": "#c6c6c6", 425 + "tree.tableColumnsBorder": "#e9e9e9", 426 + "tree.tableOddRowsBackground": "#f0f0f0", 427 + "welcomePage.progress.background": "#e9e9e9", 428 + "welcomePage.progress.foreground": "#c6c6c6", 429 + "widget.border": "#e9e9e9", 430 + "widget.shadow": "#ffffff80" 431 + }, 432 + "tokenColors": [ 433 + { "scope": ["comment"], "settings": { "foreground": "#727272" } }, 434 + { "scope": ["entity"], "settings": { "foreground": "#221e19" } }, 435 + { 436 + "scope": ["storage.modifier.package", "storage.modifier.import"], 437 + "settings": { "foreground": "#0d0b07" } 438 + }, 439 + { "scope": ["variable"], "settings": { "foreground": "#161616" } }, 440 + { "scope": ["support"], "settings": { "foreground": "#525252" } }, 441 + { 442 + "scope": [ 443 + "storage.type", 444 + "keyword.other.fn", 445 + "keyword.operator", 446 + "punctuation.separator", 447 + "punctuation.definition.tag", 448 + "punctuation.definition.list", 449 + "variable.other.constant.singlequote", 450 + "variable.other.constant.backquote", 451 + "variable.other.constant.sharpsign" 452 + ], 453 + "settings": { "foreground": "#727272" } 454 + }, 455 + { "scope": ["keyword"], "settings": { "foreground": "#525252" } }, 456 + { "scope": ["storage.modifier", "keyword.other"], "settings": { "foreground": "#525252" } }, 457 + { 458 + "scope": [ 459 + "entity.name.command", 460 + "entity.name.function", 461 + "support.function", 462 + "storage.type.function.m.nosideeffects" 463 + ], 464 + "settings": { "foreground": "#08bdba" } 465 + }, 466 + { 467 + "scope": ["string", "punctuation.definition.string"], 468 + "settings": { "foreground": "#33b1ff" } 469 + }, 470 + { "scope": ["constant"], "settings": { "foreground": "#08bdba" } }, 471 + { 472 + "scope": ["entity.name.function", "variable.other.definition"], 473 + "settings": { "fontStyle": "bold" } 474 + }, 475 + { "scope": ["storage.type", "variable.parameter"], "settings": { "fontStyle": "italic" } }, 476 + { 477 + "scope": ["keyword.control.directive", "punctuation.definition.directive"], 478 + "settings": { "foreground": "#525252" } 479 + }, 480 + { "scope": ["storage.type.rust"], "settings": { "foreground": "#525252" } }, 481 + { "scope": ["entity.name.import.go"], "settings": { "foreground": "#33b1ff" } }, 482 + { "scope": ["support.function.f.sideeffects"], "settings": { "foreground": "#ee5396" } }, 483 + { "scope": ["entity.name.type.module.verilog"], "settings": { "foreground": "#ee5396" } }, 484 + { "scope": ["entity.name.tag.module.identifier"], "settings": { "foreground": "#525252" } }, 485 + { 486 + "scope": ["entity.name.tag.module.reference"], 487 + "settings": { "fontStyle": "bold", "foreground": "#08bdba" } 488 + }, 489 + { 490 + "scope": ["entity.name.section.markdown", "markup.inline.raw.string.markdown"], 491 + "settings": { "fontStyle": "bold", "foreground": "#161616" } 492 + }, 493 + { 494 + "scope": ["punctuation.definition.heading.markdown"], 495 + "settings": { "foreground": "#08bdba" } 496 + }, 497 + { 498 + "scope": ["punctuation.definition.raw.markdown", "punctuation.definition.markdown"], 499 + "settings": { "foreground": "#525252" } 500 + }, 501 + { "scope": ["title"], "settings": { "foreground": "#161616" } }, 502 + { "scope": ["label"], "settings": { "foreground": "#161616" } }, 503 + { "scope": ["entity.other.attribute-name"], "settings": { "foreground": "#0d0b07" } }, 504 + { "scope": ["markup.bold"], "settings": { "fontStyle": "bold", "foreground": "#161616" } }, 505 + { "scope": ["markup.italic"], "settings": { "fontStyle": "italic", "foreground": "#161616" } }, 506 + { 507 + "scope": ["markup.underline.link"], 508 + "settings": { "fontStyle": "underline", "foreground": "#08bdba" } 509 + }, 510 + { "scope": ["meta.embedded"], "settings": { "foreground": "#727272" } }, 511 + { "scope": ["constant.language"], "settings": { "foreground": "#08bdba" } }, 512 + { "scope": ["variable.member"], "settings": { "foreground": "#525252" } }, 513 + { "scope": ["preproc"], "settings": { "foreground": "#525252" } }, 514 + { "scope": ["punctuation"], "settings": { "foreground": "#727272" } }, 515 + { "scope": ["punctuation.definition.comment"], "settings": { "foreground": "#727272" } } 516 + ] 517 + }
+11
templates/404.html
··· 1 + {% extends "base.html" %} {%- block title -%}??? | {{ super() }}{%- endblock -%} {%- block main -%} 2 + <div class="error-page"> 3 + <h1>404</h1> 4 + <h2>page not found</h2> 5 + <p>the page you're looking for doesn't exist or has been moved.</p> 6 + <div class="error-actions"> 7 + <a href="/" class="button">← go home</a> 8 + <a href="/blog/" class="button">view blog</a> 9 + </div> 10 + </div> 11 + {%- endblock main -%}
+24
templates/base.html
··· 1 + {% import "macros/post_macros.html" as post_macros %} 2 + <!DOCTYPE html> 3 + <html lang="en-US"> 4 + {% include "meta.html" %} 5 + <body> 6 + <div class="container"> 7 + {% include "header.html" %} 8 + <main> 9 + {%- block main -%} {%- endblock -%} 10 + </main> 11 + <footer> 12 + <span> 13 + {{ config.extra.name }} 14 + <span>•</span> 15 + <a href="{{ config.extra.base_repo }}">{{ config.extra.repo | replace(from="https://tangled.sh/", to="") }}</a> 16 + <span>@</span> 17 + <a href="{{ config.extra.repo }}/commit/{{ config.extra.commit_full }}">{{ config.extra.commit }}</a> 18 + <span>•</span> 19 + <a href="/rss.xml">RSS</a> 20 + </span> 21 + </footer> 22 + </div> 23 + </body> 24 + </html>
+15
templates/blog.html
··· 1 + {% extends "lander.html" %} 2 + {% block post_list %} 3 + <div class="post-list"> 4 + {{ post_macros::post_list(posts=paginator.pages) }} 5 + </div> 6 + {% if paginator.number_pagers > 1 %} 7 + <nav class="pagination" aria-label="blog pagination"> 8 + {% if paginator.previous %}<a class="button" href="{{ paginator.previous }}" rel="prev">Previous page</a>{% endif %} 9 + {% if paginator.next %}<a class="button" href="{{ paginator.next }}" rel="next">Next page</a>{% endif %} 10 + <aside class="page-numbers"> 11 + Page {{ paginator.current_index }} of {{ paginator.number_pagers }} 12 + </aside> 13 + </nav> 14 + {% endif %} 15 + {% endblock %}
+26
templates/header.html
··· 1 + <header> 2 + <span><a href="/" aria-label="home">{{ config.extra.name }}</a></span> 3 + <nav aria-label="primary navigation"> 4 + {%- for item in config.extra.nav_links -%} 5 + {%- if current_path -%} 6 + {% set parent = current_path | split(pat="/") | nth(n=1) %} 7 + {% set href = "/" ~ item.url %} 8 + {% if (href == "/" and current_path == "/") or (parent == item.url) %} 9 + {% set nav_class = "current" %} 10 + {% else %} 11 + {% set nav_class = "" %} 12 + {% endif %} 13 + {%- else -%} 14 + {% set href = "/" ~ item.url %} 15 + {% set nav_class = "" %} 16 + {%- endif -%} 17 + <a href="{{ href }}" 18 + class="{{ nav_class }}" 19 + {% if nav_class == "current" %}aria-current="page"{% endif %}>{{ item.title }}</a> 20 + {%- endfor -%} 21 + </nav> 22 + <aside aria-label="site status"> 23 + <span>Status</span> 24 + <i></i> 25 + </aside> 26 + </header>
+14
templates/index.html
··· 1 + {% extends "lander.html" %} {%- block title -%}{{ config.extra.name }}{%- endblock -%} 2 + {% block 3 + content %} 4 + {{ section.content | safe }} 5 + {% endblock %} 6 + {% block h2_title %} 7 + Latest Blog Post {% 8 + endblock %} 9 + {% block post_list %} 10 + {% set blog_section = get_section(path="blog/_index.md") %} 11 + <div class="post-list"> 12 + {{ post_macros::post_list(posts=blog_section.pages | slice(end=1)) }} 13 + </div> 14 + {% endblock %}
+9
templates/lander.html
··· 1 + {% extends "base.html" %} 2 + {% block title %}{{ section.title }} | {{ super() }}{% endblock %} 3 + {%- 4 + block path -%}{{ section.components | last }}{%- endblock -%} 5 + {% block main %} 6 + {% block content %}{{ section.content | safe }}{% endblock %} 7 + <h2>{%- block h2_title -%}Posts{%- endblock -%}</h2> 8 + {% block post_list %}<div class="post-list">No posts??</div>{% endblock %} 9 + {% endblock %}
+44
templates/macros/post_macros.html
··· 1 + {% macro post_list(posts) %} 2 + {% if posts | length > 0 %} 3 + {% for post in posts %} 4 + {{ self::post_preview(post=post) }} 5 + {% endfor %} 6 + {% else %} 7 + <p style="margin-inline: 1rem;">No posts up!</p> 8 + {% endif %} 9 + {% endmacro %} 10 + 11 + {% macro post_preview(post) %} 12 + <article class="post-preview"> 13 + <h3> 14 + <a href="{{ post.permalink }}">{{ post.title }}</a> 15 + </h3> 16 + {{ self::post_meta(post=post) }} 17 + <div> 18 + {% if post.description -%} 19 + {{ post.description | safe | striptags }} 20 + {% else %} 21 + {{ post.content 22 + | safe | striptags | truncate(length=300) }} {%- endif %} 23 + </div> 24 + <a href="{{ post.permalink }}" 25 + class="button" 26 + aria-label="read full post: {{ post.title }}">Read Now</a> 27 + </article> 28 + {% endmacro %} 29 + {% macro post_meta(post) %} 30 + <aside class="post-meta"> 31 + {% if post.updated and post.updated != post.date %} 32 + <time datetime="{{ post.date }}" 33 + class="updated" 34 + title="Updated {{ post.updated }}"> 35 + {% else %} 36 + <time datetime="{{ post.date }}"> 37 + {% endif %} 38 + {{ post.date }} </time> 39 + 40 + <span class="reading-time">{{ post.reading_time }} min read</span> 41 + <aside /> 42 + {% endmacro %} 43 + </time> 44 + </aside>
+85
templates/meta.html
··· 1 + <head> 2 + <meta charset="UTF-8" /> 3 + <link rel="preload" as="style" href="/main.css" /> 4 + <link rel="preload" 5 + href="/fonts/HostGrotesk-VariableFont.woff2" 6 + as="font" 7 + type="font/woff2" 8 + crossorigin /> 9 + <!-- <link rel="preload" href="/fonts/HostGrotesk-Italic-VariableFont.woff2" as="font" type="font/woff2" crossorigin> --> 10 + <link rel="stylesheet" href="/main.css" /> 11 + <link rel="stylesheet" 12 + type="text/css" 13 + href="/giallo-dark.css" 14 + media="(prefers-color-scheme: dark)" /> 15 + <link rel="stylesheet" 16 + type="text/css" 17 + href="/giallo-light.css" 18 + media="(prefers-color-scheme: light)" /> 19 + <link rel="icon" href="https://blobs.blue/madoka.systems@ico" /> 20 + <meta name="viewport" content="width=device-width, initial-scale=1" /> 21 + <meta http-equiv="X-UA-Compatible" content="ie=edge" /> 22 + <meta name="color-scheme" content="light dark" /> 23 + <meta name="theme-color" 24 + content="#000000" 25 + media="(prefers-color-scheme: light)" /> 26 + <meta name="theme-color" 27 + content="#ffffff" 28 + media="(prefers-color-scheme: dark)" /> 29 + <!-- SEO Meta Tags --> 30 + <title>{%- block title -%}{{ config.extra.name }}{%- endblock -%}</title> 31 + {%- if page and page.description -%} 32 + <meta name="description" content="{{ page.description }}" /> 33 + {%- elif section and section.description -%} 34 + <meta name="description" content="{{ section.description }}" /> 35 + {%- else -%} 36 + <meta name="description" content="{{ config.extra.description }}" /> 37 + {%- endif -%} {%- if current_path -%} 38 + <link rel="canonical" href="{{ config.base_url ~ current_path }}" /> 39 + {%- endif -%} 40 + <link rel="alternate" 41 + type="application/rss+xml" 42 + title="{{ config.extra.name }} RSS Feed" 43 + href="{{ config.base_url }}/rss.xml" /> 44 + <!-- Open Graph Meta Tags --> 45 + <meta property="og:type" 46 + content="{%- if page -%}article{%- else -%}website{%- endif -%}" /> 47 + <meta property="og:site_name" content="{{ config.extra.name }}" /> 48 + <meta property="og:url" 49 + content="{{ config.base_url }}{%- if current_path -%}{{ current_path }}{%- endif -%}" /> 50 + {%- if page and page.title -%} 51 + <meta property="og:title" content="{{ page.title }}" /> 52 + {%- elif section and section.title -%} 53 + <meta property="og:title" content="{{ section.title }}" /> 54 + {%- else -%} 55 + <meta property="og:title" content="{{ config.extra.name }}" /> 56 + {%- endif -%} {%- if page and page.description -%} 57 + <meta property="og:description" content="{{ page.description }}" /> 58 + {%- elif section and section.description -%} 59 + <meta property="og:description" content="{{ section.description }}" /> 60 + {%- else -%} 61 + <meta property="og:description" content="{{ config.extra.description }}" /> 62 + {%- endif -%} 63 + <!-- Twitter Card Meta Tags --> 64 + <meta name="twitter:card" content="summary" /> 65 + {%- if page and page.title -%} 66 + <meta name="twitter:title" content="{{ page.title }}" /> 67 + {%- elif section and section.title -%} 68 + <meta name="twitter:title" content="{{ section.title }}" /> 69 + {%- else -%} 70 + <meta name="twitter:title" content="{{ config.extra.name }}" /> 71 + {%- endif -%} {%- if page and page.description -%} 72 + <meta name="twitter:description" content="{{ page.description }}" /> 73 + {%- elif section and section.description -%} 74 + <meta name="twitter:description" content="{{ section.description }}" /> 75 + {%- else -%} 76 + <meta name="twitter:description" content="{{ config.extra.description }}" /> 77 + {%- endif -%} 78 + <!-- Additional SEO Meta Tags --> 79 + {%- if page and page.date -%} 80 + <meta property="article:published_time" 81 + content="{{ page.date | date(format='%Y-%m-%d') }}" /> 82 + {%- endif -%} 83 + <meta name="robots" content="index, follow" /> 84 + <meta name="author" content="{{ config.extra.name }}" /> 85 + </head>
+2
templates/page.html
··· 1 + {% extends "base.html" %} {%- block title -%}{{ page.title }} | {{ config.extra.name }}{%- endblock 2 + -%} {%- block main -%} {{ page.content | safe }} {%- endblock -%}
+2
templates/post.html
··· 1 + {% extends "page.html" %} {%- block main -%} {{ post_macros::post_meta(post=page) }} {{ super() }} 2 + {%- endblock -%}