├── .editorconfig ├── .gitignore ├── shell.nix ├── .github └── workflows │ ├── ci.yml │ └── release.yml ├── LICENSE ├── styles ├── 4get │ ├── license │ ├── readme.md │ └── rose-pine.user.less ├── claude │ ├── license │ ├── readme.md │ └── rose-pine.user.less ├── jira │ ├── license │ └── readme.md ├── scribe │ ├── license │ ├── readme.md │ └── rose-pine.user.less ├── zimbra │ ├── license │ └── readme.md ├── bluesky │ ├── license │ └── readme.md ├── docs.rs │ ├── license │ └── readme.md ├── octopus │ ├── license │ └── readme.md ├── status.cafe │ ├── license │ ├── readme.md │ └── rose-pine.user.less ├── youtube │ ├── license │ └── readme.md ├── hetzner-cloud │ ├── license │ ├── readme.md │ └── rose-pine.user.less ├── chatgpt │ ├── license │ ├── readme.md │ └── rose-pine.user.less ├── github │ ├── license │ └── readme.md ├── proton │ ├── license │ ├── readme.md │ └── rose-pine.user.less ├── twitch │ ├── license │ └── readme.md ├── wikiwand │ ├── license │ ├── readme.md │ └── rose-pine.user.less ├── brave-search │ ├── license │ ├── readme.md │ └── rose-pine.user.less ├── nixos-search │ ├── license │ ├── readme.md │ └── rose-pine.user.less └── advent-of-code │ ├── license │ ├── readme.md │ └── rose-pine.user.less ├── template ├── license ├── rose-pine.user.less └── readme.md ├── scripts ├── init └── generate-imports └── README.md /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = tab 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | scripts/node_modules 2 | package-lock.json 3 | bun.lockb 4 | rose-pine*-import.json 5 | -------------------------------------------------------------------------------- /shell.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs ? import { }, 3 | }: 4 | pkgs.mkShellNoCC { 5 | packages = with pkgs; [ 6 | deno 7 | ]; 8 | } 9 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: main 6 | pull_request: 7 | types: [opened, synchronize, reopened, ready_for_review] 8 | 9 | jobs: 10 | check: 11 | name: Continuous integration 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v4 16 | 17 | - name: Setup Deno 18 | uses: denoland/setup-deno@v2 19 | with: 20 | deno-version: v2.x 21 | 22 | - name: Check formatting 23 | run: deno fmt --check 24 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | workflow_dispatch: 5 | push: 6 | branches: 7 | - main 8 | paths: 9 | - "styles/**/rose-pine.user.less" 10 | - "scripts/generate-imports" 11 | 12 | permissions: 13 | contents: write 14 | 15 | jobs: 16 | release: 17 | name: Release 18 | runs-on: ubuntu-latest 19 | steps: 20 | - name: Checkout 21 | uses: actions/checkout@v4 22 | 23 | - name: Setup Deno 24 | uses: denoland/setup-deno@v2 25 | with: 26 | deno-version: v2.x 27 | 28 | - name: Build import lists 29 | run: ./scripts/generate-imports 30 | 31 | - name: Release 32 | env: 33 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 34 | run: gh release upload userstyle-imports rose-pine*-import.json --clobber 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Rosé Pine 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /styles/4get/license: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Rosé Pine 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /styles/claude/license: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Rosé Pine 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /styles/jira/license: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Rosé Pine 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /styles/scribe/license: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Rosé Pine 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /styles/zimbra/license: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Rosé Pine 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /template/license: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) {{year}} Rosé Pine 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /styles/bluesky/license: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Rosé Pine 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /styles/docs.rs/license: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Rosé Pine 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /styles/octopus/license: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Rosé Pine 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /styles/status.cafe/license: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Rosé Pine 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /styles/youtube/license: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Rosé Pine 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /styles/hetzner-cloud/license: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Rosé Pine 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /scripts/init: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env -S deno --allow-read --allow-write 2 | // vim:ft=typescript 3 | 4 | function replace( 5 | source: string, 6 | identifier: string, 7 | replacement: string, 8 | ): string { 9 | const pattern = new RegExp(`\{\{\s*${identifier}\s*\}\}`, "g"); 10 | return source.replace(pattern, replacement); 11 | } 12 | 13 | function replaceMap( 14 | source: string, 15 | substitutions: Record, 16 | ): string { 17 | let buff = source; 18 | for (const [key, value] of Object.entries(substitutions)) { 19 | buff = replace(buff, key, value); 20 | } 21 | return buff; 22 | } 23 | 24 | const substitutions = { 25 | title: Deno.args[0], 26 | directory: Deno.args[0].toLowerCase().replaceAll(" ", "-"), 27 | year: new Date().getUTCFullYear(), 28 | }; 29 | 30 | const themePath = `./styles/${substitutions.directory}`; 31 | await Deno.mkdir(themePath); 32 | 33 | const userstyleTemplate = await Deno.readTextFile( "./template/rose-pine.user.less",); 34 | const readmeTemplate = await Deno.readTextFile("./template/readme.md"); 35 | const licenseTemplate = await Deno.readTextFile("./template/license"); 36 | 37 | await Deno.writeTextFile( 38 | `${themePath}/rose-pine.user.less`, 39 | replaceMap(userstyleTemplate, substitutions), 40 | ); 41 | await Deno.writeTextFile( 42 | `${themePath}/readme.md`, 43 | replaceMap(readmeTemplate, substitutions), 44 | ); 45 | await Deno.writeTextFile( 46 | `${themePath}/license`, 47 | replaceMap(licenseTemplate, substitutions), 48 | ); 49 | -------------------------------------------------------------------------------- /scripts/generate-imports: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env -S deno --allow-read --allow-write 2 | // vim:ft=javascript 3 | 4 | import usercssMeta from "npm:usercss-meta@0.12.0"; 5 | 6 | async function readTheme(name) { 7 | const path = `./styles/${name}/rose-pine.user.less`; 8 | const text = await Deno.readTextFile(path); 9 | const metadata = usercssMeta.parse(text).metadata; 10 | return { 11 | enabled: true, 12 | name: metadata.name ?? "", 13 | description: metadata.description ?? "", 14 | author: "Rosé Pine", 15 | updateUrl: metadata.updateURL ?? "", 16 | usercssData: metadata, 17 | sourceCode: text.toString(), 18 | }; 19 | } 20 | 21 | function patchMetadata(theme, defaultVariant, forceDefault = false) { 22 | if (!theme.usercssData?.vars) return theme; 23 | const keys = Object.keys(theme.usercssData.vars); 24 | if (keys.includes("lightVariant") && keys.includes("darkVariant")) { 25 | theme.usercssData.vars.lightVariant.default = forceDefault ? defaultVariant : "dawn"; 26 | theme.usercssData.vars.darkVariant.default = defaultVariant; 27 | } else if (keys.includes("variant")) { 28 | theme.usercssData.vars.variant.default = defaultVariant; 29 | } else { 30 | console.warn(`Theme ${theme.name} has no variant variable`); 31 | } 32 | return theme; 33 | } 34 | 35 | let result = []; 36 | for await (const entry of Deno.readDir(`./styles`)) { 37 | try { 38 | const theme = await readTheme(entry.name); 39 | result.push(theme); 40 | } catch (err) { 41 | console.error(`ignoring ${entry.name}: ${err}`); 42 | } 43 | } 44 | 45 | const settings = { 46 | settings: { 47 | updateInterval: 24, 48 | updateOnlyEnabled: true, 49 | patchCsp: true, 50 | }, 51 | }; 52 | 53 | async function writeImport(variant, suffix, forceDefault = false ) { 54 | const patched = result.map((theme) => patchMetadata(theme, variant, forceDefault)); 55 | const serialized = JSON.stringify([settings, ...patched], null, 2); 56 | const filename = `rose-pine${variant == "main" ? "" : `-${variant}`}-${suffix}-import.json`; 57 | await Deno.writeTextFile(filename, serialized); 58 | } 59 | 60 | for (const variant of ["main", "moon", "dawn"]) { 61 | await writeImport(variant, "dark-light") 62 | await writeImport(variant, "default", true) 63 | } 64 | -------------------------------------------------------------------------------- /styles/chatgpt/license: -------------------------------------------------------------------------------- 1 | This theme includes code from the original theme Catppuccin, which is licensed under the MIT License: 2 | 3 | Catppuccin MIT License 4 | 5 | Copyright (c) 2021 Catppuccin 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | 25 | All modifications and additions to the original theme are licensed under the MIT License: 26 | 27 | Rosé Pine MIT License 28 | 29 | Copyright (c) 2024 Rosé Pine 30 | 31 | Permission is hereby granted, free of charge, to any person obtaining a copy 32 | of this software and associated documentation files (the "Software"), to deal 33 | in the Software without restriction, including without limitation the rights 34 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 35 | copies of the Software, and to permit persons to whom the Software is 36 | furnished to do so, subject to the following conditions: 37 | 38 | The above copyright notice and this permission notice shall be included in all 39 | copies or substantial portions of the Software. 40 | 41 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 42 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 43 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 44 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 45 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 46 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 47 | SOFTWARE. 48 | -------------------------------------------------------------------------------- /styles/github/license: -------------------------------------------------------------------------------- 1 | This theme includes code from the original theme Catppuccin, which is licensed under the MIT License: 2 | 3 | Catppuccin MIT License 4 | 5 | Copyright (c) 2021 Catppuccin 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | 25 | All modifications and additions to the original theme are licensed under the MIT License: 26 | 27 | Rosé Pine MIT License 28 | 29 | Copyright (c) 2024 Rosé Pine 30 | 31 | Permission is hereby granted, free of charge, to any person obtaining a copy 32 | of this software and associated documentation files (the "Software"), to deal 33 | in the Software without restriction, including without limitation the rights 34 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 35 | copies of the Software, and to permit persons to whom the Software is 36 | furnished to do so, subject to the following conditions: 37 | 38 | The above copyright notice and this permission notice shall be included in all 39 | copies or substantial portions of the Software. 40 | 41 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 42 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 43 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 44 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 45 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 46 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 47 | SOFTWARE. 48 | -------------------------------------------------------------------------------- /styles/proton/license: -------------------------------------------------------------------------------- 1 | This theme includes code from the original theme Catppuccin, which is licensed under the MIT License: 2 | 3 | Catppuccin MIT License 4 | 5 | Copyright (c) 2021 Catppuccin 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | 25 | All modifications and additions to the original theme are licensed under the MIT License: 26 | 27 | Rosé Pine MIT License 28 | 29 | Copyright (c) 2024 Rosé Pine 30 | 31 | Permission is hereby granted, free of charge, to any person obtaining a copy 32 | of this software and associated documentation files (the "Software"), to deal 33 | in the Software without restriction, including without limitation the rights 34 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 35 | copies of the Software, and to permit persons to whom the Software is 36 | furnished to do so, subject to the following conditions: 37 | 38 | The above copyright notice and this permission notice shall be included in all 39 | copies or substantial portions of the Software. 40 | 41 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 42 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 43 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 44 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 45 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 46 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 47 | SOFTWARE. 48 | -------------------------------------------------------------------------------- /styles/twitch/license: -------------------------------------------------------------------------------- 1 | This theme includes code from the original theme Catppuccin, which is licensed under the MIT License: 2 | 3 | Catppuccin MIT License 4 | 5 | Copyright (c) 2021 Catppuccin 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | 25 | All modifications and additions to the original theme are licensed under the MIT License: 26 | 27 | Rosé Pine MIT License 28 | 29 | Copyright (c) 2024 Rosé Pine 30 | 31 | Permission is hereby granted, free of charge, to any person obtaining a copy 32 | of this software and associated documentation files (the "Software"), to deal 33 | in the Software without restriction, including without limitation the rights 34 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 35 | copies of the Software, and to permit persons to whom the Software is 36 | furnished to do so, subject to the following conditions: 37 | 38 | The above copyright notice and this permission notice shall be included in all 39 | copies or substantial portions of the Software. 40 | 41 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 42 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 43 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 44 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 45 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 46 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 47 | SOFTWARE. 48 | -------------------------------------------------------------------------------- /styles/wikiwand/license: -------------------------------------------------------------------------------- 1 | This theme includes code from the original theme Catppuccin, which is licensed under the MIT License: 2 | 3 | Catppuccin MIT License 4 | 5 | Copyright (c) 2021 Catppuccin 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | 25 | All modifications and additions to the original theme are licensed under the MIT License: 26 | 27 | Rosé Pine MIT License 28 | 29 | Copyright (c) 2024 Rosé Pine 30 | 31 | Permission is hereby granted, free of charge, to any person obtaining a copy 32 | of this software and associated documentation files (the "Software"), to deal 33 | in the Software without restriction, including without limitation the rights 34 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 35 | copies of the Software, and to permit persons to whom the Software is 36 | furnished to do so, subject to the following conditions: 37 | 38 | The above copyright notice and this permission notice shall be included in all 39 | copies or substantial portions of the Software. 40 | 41 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 42 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 43 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 44 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 45 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 46 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 47 | SOFTWARE. 48 | -------------------------------------------------------------------------------- /styles/brave-search/license: -------------------------------------------------------------------------------- 1 | This theme includes code from the original theme Catppuccin, which is licensed under the MIT License: 2 | 3 | Catppuccin MIT License 4 | 5 | Copyright (c) 2021 Catppuccin 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | 25 | All modifications and additions to the original theme are licensed under the MIT License: 26 | 27 | Rosé Pine MIT License 28 | 29 | Copyright (c) 2024 Rosé Pine 30 | 31 | Permission is hereby granted, free of charge, to any person obtaining a copy 32 | of this software and associated documentation files (the "Software"), to deal 33 | in the Software without restriction, including without limitation the rights 34 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 35 | copies of the Software, and to permit persons to whom the Software is 36 | furnished to do so, subject to the following conditions: 37 | 38 | The above copyright notice and this permission notice shall be included in all 39 | copies or substantial portions of the Software. 40 | 41 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 42 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 43 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 44 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 45 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 46 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 47 | SOFTWARE. 48 | -------------------------------------------------------------------------------- /styles/nixos-search/license: -------------------------------------------------------------------------------- 1 | This theme includes code from the original theme Catppuccin, which is licensed under the MIT License: 2 | 3 | Catppuccin MIT License 4 | 5 | Copyright (c) 2021 Catppuccin 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | 25 | All modifications and additions to the original theme are licensed under the MIT License: 26 | 27 | Rosé Pine MIT License 28 | 29 | Copyright (c) 2025 Rosé Pine 30 | 31 | Permission is hereby granted, free of charge, to any person obtaining a copy 32 | of this software and associated documentation files (the "Software"), to deal 33 | in the Software without restriction, including without limitation the rights 34 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 35 | copies of the Software, and to permit persons to whom the Software is 36 | furnished to do so, subject to the following conditions: 37 | 38 | The above copyright notice and this permission notice shall be included in all 39 | copies or substantial portions of the Software. 40 | 41 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 42 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 43 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 44 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 45 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 46 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 47 | SOFTWARE. 48 | -------------------------------------------------------------------------------- /styles/advent-of-code/license: -------------------------------------------------------------------------------- 1 | This theme includes code from the original theme Catppuccin, which is licensed under the MIT License: 2 | 3 | Catppuccin MIT License 4 | 5 | Copyright (c) 2021 Catppuccin 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | 25 | All modifications and additions to the original theme are licensed under the MIT License: 26 | 27 | Rosé Pine MIT License 28 | 29 | Copyright (c) 2024 Rosé Pine 30 | 31 | Permission is hereby granted, free of charge, to any person obtaining a copy 32 | of this software and associated documentation files (the "Software"), to deal 33 | in the Software without restriction, including without limitation the rights 34 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 35 | copies of the Software, and to permit persons to whom the Software is 36 | furnished to do so, subject to the following conditions: 37 | 38 | The above copyright notice and this permission notice shall be included in all 39 | copies or substantial portions of the Software. 40 | 41 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 42 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 43 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 44 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 45 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 46 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 47 | SOFTWARE. 48 | -------------------------------------------------------------------------------- /styles/4get/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for 4get

4 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

5 |

6 | 7 | 8 | 9 |

10 | 11 | ## Thanks to 12 | 13 | - [ThatOneCalculator](https://github.com/ThatOneCalculator) 14 | -------------------------------------------------------------------------------- /styles/scribe/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for Scribe

4 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

5 |

6 | 7 | 8 | 9 |

10 | 11 | ## Thanks to 12 | 13 | - [ThatOneCalculator](https://github.com/ThatOneCalculator) 14 | -------------------------------------------------------------------------------- /styles/zimbra/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for Zimbra

4 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

5 |

6 | 7 | 8 | 9 |

10 | 11 | ## Thanks to 12 | 13 | - [ThatOneCalculator](https://github.com/ThatOneCalculator) 14 | -------------------------------------------------------------------------------- /styles/hetzner-cloud/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for Hetzner Cloud

4 |

5 | 6 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

7 | 8 |

9 | 10 | 11 | 12 | 13 |

14 | 15 | ## Usage 16 | 17 | 1. Make sure you have the [Stylus](https://github.com/openstyles/stylus) browser 18 | extension installed, then visit 19 | [this link](https://github.com/rose-pine/userstyles/raw/main/styles/hetzner-cloud/rose-pine.user.less) 20 | 2. Configure your preferred accent color and theme variant 21 | 3. Click install on the top left 22 | 23 | ## Thanks to 24 | 25 | - [Julia](https://github.com/juliamertz) 26 | -------------------------------------------------------------------------------- /styles/claude/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for Claude

4 |

5 | 6 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

7 | 8 |

9 | 10 | 11 | 12 | 13 |

14 | 15 | ## Usage 16 | 17 | 1. Make sure you have the [Stylus](https://github.com/openstyles/stylus) browser 18 | extension installed, then visit 19 | [this link](https://github.com/rose-pine/userstyles/raw/main/styles/claude/rose-pine.user.less) 20 | 2. Configure your preferred accent color and theme variant 21 | 3. Click install on the top left 22 | 23 | ## Thanks to 24 | 25 | - [Catppuccin Org](https://github.com/catppuccin) 26 | - [juliamertz](https://github.com/juliamertz) 27 | -------------------------------------------------------------------------------- /styles/docs.rs/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for Docs.rs

4 |

5 | 6 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

7 | 8 |

9 | 10 | 11 | 12 | 13 |

14 | 15 | ## Usage 16 | 17 | 1. Make sure you have the [Stylus](https://github.com/openstyles/stylus) browser 18 | extension installed, then visit 19 | [this link](https://github.com/rose-pine/userstyles/raw/main/styles/docs.rs/rose-pine.user.less) 20 | 2. Configure your preferred accent color and theme variant 21 | 3. Click install on the top left 22 | 23 | ## Thanks to 24 | 25 | - [Catppuccin Org](https://github.com/catppuccin) 26 | - [Julia](https://github.com/juliamertz) 27 | -------------------------------------------------------------------------------- /styles/wikiwand/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for Wikiwand

4 |

5 | 6 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

7 | 8 |

9 | 10 | 11 | 12 | 13 |

14 | 15 | ## Usage 16 | 17 | 2. Configure your preferred accent color and theme variant 18 | 3. Click install on the top left 19 | 20 | ## Gallery 21 | 22 | ![Rosé Pine](https://i.imgur.com/w7JMAFA.png) 23 | ![Rosé Pine Moon](https://i.imgur.com/5MfRjPV.png) 24 | ![Rosé Pine Dawn](https://i.imgur.com/szUOqlX.png) 25 | 26 | ## Thanks to 27 | 28 | - [Catppuccin Org](https://github.com/catppuccin) 29 | - [Tnixc](https://github.com/tnixco) 30 | - [adriankarlen](https://github.com/adriankarlen) 31 | -------------------------------------------------------------------------------- /styles/twitch/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for twitch

4 |

5 | 6 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

7 | 8 |

9 | 10 | 11 | 12 | 13 |

14 | 15 | ## Usage 16 | 17 | 1. Make sure you have the [Stylus](https://github.com/openstyles/stylus) browser 18 | extension installed, then visit 19 | [this link](https://github.com/rose-pine/userstyles/raw/main/styles/twitch/rose-pine.user.less) 20 | 2. Configure your preferred accent color and theme variant 21 | 3. Click install on the top left 22 | 23 | ## Gallery 24 | 25 | ## Thanks to 26 | 27 | - [Catppuccin Org](https://github.com/catppuccin) 28 | - [adriankarlen](https://github.com/adriankarlen) 29 | -------------------------------------------------------------------------------- /template/rose-pine.user.less: -------------------------------------------------------------------------------- 1 | /* ==UserStyle== 2 | @name Rosé Pine for {{title}} 3 | @description Soho vibes for {{title}} 4 | @version 1.0.0 5 | @license MIT 6 | @author Rosé Pine (https://github.com/rose-pine) 7 | @namespace https://github.com/rose-pine 8 | @homepageURL https://github.com/rose-pine/userstyles 9 | @updateURL https://github.com/rose-pine/userstyles/raw/main/styles/{{directory}}/rose-pine.user.less 10 | @preprocessor less 11 | 12 | @var select lightVariant "Light Variant" ["main:Rosé Pine", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn*"] 13 | @var select darkVariant "Dark Variant" ["main:Rosé Pine*", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn"] 14 | @var select accentColor "Accent" ["love:Love*", "gold:Gold", "rose:Rose", "pine:Pine", "foam:Foam", "iris:Iris"] 15 | ==/UserStyle== */ 16 | 17 | @-moz-document domain("domain.com") { 18 | :root { 19 | @media (prefers-color-scheme: light) { 20 | #rose-pine(@lightVariant); 21 | } 22 | @media (prefers-color-scheme: dark) { 23 | #rose-pine(@darkVariant); 24 | } 25 | } 26 | 27 | :root[data-theme="dark"] { 28 | #rose-pine(@darkVariant); 29 | } 30 | :root[data-theme="light"] { 31 | #rose-pine(@lightVariant); 32 | } 33 | 34 | #rose-pine(@variant) { 35 | @base: @rose-pine[@@variant][@base]; 36 | @surface: @rose-pine[@@variant][@surface]; 37 | @overlay: @rose-pine[@@variant][@overlay]; 38 | @muted: @rose-pine[@@variant][@muted]; 39 | @subtle: @rose-pine[@@variant][@subtle]; 40 | @text: @rose-pine[@@variant][@text]; 41 | @love: @rose-pine[@@variant][@love]; 42 | @gold: @rose-pine[@@variant][@gold]; 43 | @rose: @rose-pine[@@variant][@rose]; 44 | @pine: @rose-pine[@@variant][@pine]; 45 | @foam: @rose-pine[@@variant][@foam]; 46 | @iris: @rose-pine[@@variant][@iris]; 47 | @highlightLow: @rose-pine[@@variant][@highlightLow]; 48 | @highlightMed: @rose-pine[@@variant][@highlightMed]; 49 | @highlightHigh: @rose-pine[@@variant][@highlightHigh]; 50 | @accent-color: @rose-pine[@@variant][@@accentColor]; 51 | color-scheme: if(@variant = dawn, light, dark); 52 | 53 | ::selection { 54 | background-color: fade(@accent-color, 30%); 55 | } 56 | 57 | input, 58 | textarea { 59 | &::placeholder { 60 | color: @highlightLow !important; 61 | } 62 | } 63 | 64 | & when (@variant = dawn) {} 65 | & when not(@variant = dawn) {} 66 | } 67 | } 68 | 69 | /* deno-fmt-ignore */ 70 | @rose-pine: { 71 | @main: { @base: #191724; @surface: #1f1d2e; @overlay: #26233a; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ebbcba; @pine: #31748f; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #21202e; @highlightMed: #403d52; @highlightHigh: #524f67; }; 72 | @moon: { @base: #232136; @surface: #2a273f; @overlay: #393552; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ea9a97; @pine: #3e8fb0; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #2a283e; @highlightMed: #44415a; @highlightHigh: #56526e; }; 73 | @dawn: { @base: #faf4ed; @surface: #fffaf3; @overlay: #f2e9e1; @muted: #9893a5; @subtle: #797593; @text: #575279; @love: #b4637a; @gold: #ea9d34; @rose: #d7827e; @pine: #286983; @foam: #56949f; @iris: #907aa9; @highlightLow: #f4ede8; @highlightMed: #dfdad9; @highlightHigh: #cecacd; }; 74 | }; 75 | -------------------------------------------------------------------------------- /styles/octopus/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for Octopus

4 |

5 | 6 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

7 | 8 |

9 | 10 | 11 | 12 | 13 |

14 | 15 | ## Usage 16 | 17 | 1. Make sure you have the [Stylus](https://github.com/openstyles/stylus) browser 18 | extension installed, then visit 19 | [this link](https://github.com/rose-pine/userstyles/raw/main/styles/octopus/rose-pine.user.less) 20 | 2. Configure your preferred accent color and theme variant 21 | 3. Click install on the top left 22 | 23 | ## Gallery 24 | 25 | ![Rosé Pine](https://i.imgur.com/b5GnkbD.png) 26 | ![Rosé Pine Moon](https://i.imgur.com/c0vlkDv.png) 27 | ![Rosé Pine Dawn](https://i.imgur.com/Qg2NLX1.png) 28 | 29 | ## Thanks to 30 | 31 | - [adriankarlen](https://github.com/adriankarlen) 32 | -------------------------------------------------------------------------------- /styles/jira/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for Jira

4 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

5 |

6 | 7 | 8 | 9 | 10 | 11 | 12 |

13 | 14 | ## Usage 15 | 16 | 1. Make sure you have the [Stylus](https://github.com/openstyles/stylus) browser 17 | extension installed, then visit 18 | [this link](https://github.com/rose-pine/userstyles/raw/main/styles/jira/rose-pine.user.less). 19 | 2. Configure your preferred accent color and theme variant. 20 | 3. Click install on the top left. 21 | 22 | ## Gallery 23 | 24 | ![Rosé Pine](https://i.imgur.com/mgYlKVI.png) 25 | ![Rosé Pine Moon](https://i.imgur.com/vHvYGxX.png) 26 | ![Rosé Pine Dawn](https://i.imgur.com/qyjK3cC.png) 27 | 28 | ## Thanks to 29 | 30 | - [adriankarlen](https://github.com/adriankarlen) 31 | -------------------------------------------------------------------------------- /styles/scribe/rose-pine.user.less: -------------------------------------------------------------------------------- 1 | /* ==UserStyle== 2 | @name Rosé Pine for Scribe 3 | @description Soho vibes for Scribe 4 | @version 1.0.0 5 | @license MIT 6 | @author ThatOneCalculator (https://github.com/ThatOneCalculator) 7 | @namespace https://github.com/rose-pine 8 | @homepageURL https://github.com/rose-pine/userstyles 9 | @updateURL https://github.com/rose-pine/userstyles/raw/main/styles/scribe/rose-pine.user.less 10 | @preprocessor less 11 | 12 | @var select lightVariant "Light Variant" ["main:Rosé Pine", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn*"] 13 | @var select darkVariant "Dark Variant" ["main:Rosé Pine*", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn"] 14 | @var select accentColor "Accent" ["love:Love*", "gold:Gold", "rose:Rose", "pine:Pine", "foam:Foam", "iris:Iris"] 15 | ==/UserStyle== */ 16 | 17 | @-moz-document domain("scribehow.com") { 18 | :root { 19 | @media (prefers-color-scheme: light) { 20 | #rose-pine(@lightVariant); 21 | } 22 | @media (prefers-color-scheme: dark) { 23 | #rose-pine(@darkVariant); 24 | } 25 | } 26 | 27 | :root[data-theme="dark"] { 28 | #rose-pine(@darkVariant); 29 | } 30 | :root[data-theme="light"] { 31 | #rose-pine(@lightVariant); 32 | } 33 | 34 | #rose-pine(@variant) { 35 | @base: @rose-pine[@@variant][@base]; 36 | @surface: @rose-pine[@@variant][@surface]; 37 | @overlay: @rose-pine[@@variant][@overlay]; 38 | @muted: @rose-pine[@@variant][@muted]; 39 | @subtle: @rose-pine[@@variant][@subtle]; 40 | @text: @rose-pine[@@variant][@text]; 41 | @love: @rose-pine[@@variant][@love]; 42 | @gold: @rose-pine[@@variant][@gold]; 43 | @rose: @rose-pine[@@variant][@rose]; 44 | @pine: @rose-pine[@@variant][@pine]; 45 | @foam: @rose-pine[@@variant][@foam]; 46 | @iris: @rose-pine[@@variant][@iris]; 47 | @highlightLow: @rose-pine[@@variant][@highlightLow]; 48 | @highlightMed: @rose-pine[@@variant][@highlightMed]; 49 | @highlightHigh: @rose-pine[@@variant][@highlightHigh]; 50 | @accent-color: @rose-pine[@@variant][@@accentColor]; 51 | color-scheme: if(@variant = dawn, light, dark); 52 | 53 | body { 54 | background-color: @base; 55 | color: @text; 56 | font-family: "Cartograph CF"; 57 | } 58 | 59 | a, 60 | a:link { 61 | color: @foam !important; 62 | } 63 | 64 | a:visited { 65 | color: @iris !important; 66 | } 67 | 68 | pre, 69 | img { 70 | border-radius: 20px; 71 | background-color: @overlay; 72 | } 73 | } 74 | } 75 | 76 | /* deno-fmt-ignore */ 77 | @rose-pine: { 78 | @main: { @base: #191724; @surface: #1f1d2e; @overlay: #26233a; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ebbcba; @pine: #31748f; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #21202e; @highlightMed: #403d52; @highlightHigh: #524f67; }; 79 | @moon: { @base: #232136; @surface: #2a273f; @overlay: #393552; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ea9a97; @pine: #3e8fb0; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #2a283e; @highlightMed: #44415a; @highlightHigh: #56526e; }; 80 | @dawn: { @base: #faf4ed; @surface: #fffaf3; @overlay: #f2e9e1; @muted: #9893a5; @subtle: #797593; @text: #575279; @love: #b4637a; @gold: #ea9d34; @rose: #d7827e; @pine: #286983; @foam: #56949f; @iris: #907aa9; @highlightLow: #f4ede8; @highlightMed: #dfdad9; @highlightHigh: #cecacd; }; 81 | }; 82 | -------------------------------------------------------------------------------- /styles/proton/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for Proton

4 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

5 |

6 | 7 | 8 | 9 | 10 | 11 | 12 |

13 | 14 | ## Usage 15 | 16 | 1. Make sure you have the [Stylus](https://github.com/openstyles/stylus) browser 17 | extension installed, then visit 18 | [this link](https://github.com/rose-pine/userstyles/raw/main/styles/proton/rose-pine.user.less). 19 | 2. Configure your preferred accent color and theme variant. 20 | 3. Click install on the top left. 21 | 4. Go to proton mail settings and under "Theme" select Carbon. This should be 22 | the middle one. 23 | 24 | ## Thanks to 25 | 26 | - [Catppuccin Org](https://github.com/catppuccin) 27 | - [soya-daizu](https://github.com/soya-daizu) 28 | - [juliamertz](https://github.com/juliamertz) 29 | -------------------------------------------------------------------------------- /styles/bluesky/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for Bluesky

4 |

5 | 6 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

7 | 8 |

9 | 10 | 11 | 12 | 13 |

14 | 15 | ## Usage 16 | 17 | 1. Make sure you have the [Stylus](https://github.com/openstyles/stylus) browser 18 | extension installed, then visit 19 | [this link](https://github.com/rose-pine/userstyles/raw/main/styles/bluesky/rose-pine.user.less) 20 | 2. Configure your preferred accent color and theme variant 21 | 3. Click install on the top left 22 | 23 | ## Gallery 24 | 25 | ![Rosé Pine](https://i.imgur.com/EzGIK0W.png) 26 | ![Rosé Pine Moon](https://i.imgur.com/vnFdrNr.png) 27 | ![Rosé Pine Dawn](https://i.imgur.com/dDF1R0N.png) 28 | 29 | ## Thanks to 30 | 31 | - [Catppuccin Org](https://github.com/catppuccin) 32 | - [Julia Mertz](https://github.com/juliamertz) 33 | -------------------------------------------------------------------------------- /styles/advent-of-code/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for Advent of Code

4 |

5 | 6 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

7 | 8 |

9 | 10 | 11 | 12 | 13 |

14 | 15 | ## Usage 16 | 17 | 1. Make sure you have the [Stylus](https://github.com/openstyles/stylus) browser 18 | extension installed, then visit 19 | [this link](https://github.com/rose-pine/userstyles/raw/main/styles/advent-of-code/rose-pine.user.less) 20 | 2. Configure your preferred accent color and theme variant 21 | 3. Click install on the top left 22 | 23 | ## Gallery 24 | 25 | ![Rosé Pine](https://imgur.com/736foDh.png) 26 | ![Rosé Pine Moon](https://imgur.com/sRxZkYl.png) 27 | ![Rosé Pine Dawn](https://imgur.com/Ep8MqEM.png) 28 | 29 | ## Thanks to 30 | 31 | - [Catppuccin Org](https://github.com/catppuccin) 32 | - [adriankarlen](https://github.com/adriankarlen) 33 | -------------------------------------------------------------------------------- /styles/chatgpt/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for ChatGPT

4 |

5 | 6 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

7 | 8 |

9 | 10 | 11 | 12 | 13 |

14 | 15 | ## Usage 16 | 17 | 1. Make sure you have the [Stylus](https://github.com/openstyles/stylus) browser 18 | extension installed, then visit 19 | [this link](https://github.com/rose-pine/userstyles/raw/main/styles/chatgpt/rose-pine.user.less) 20 | 2. Configure your preferred accent color and theme variant 21 | 3. Click install on the top left 22 | 23 | ## Gallery 24 | 25 | ![Rosé Pine](https://i.imgur.com/JEuyP9J.png) 26 | ![Rosé Pine Moon](https://i.imgur.com/hrUjhfG.png) 27 | ![Rosé Pine Dawn](https://i.imgur.com/BDnFgKh.png) 28 | 29 | ## Thanks to 30 | 31 | - [Catppuccin Org](https://github.com/catppuccin) 32 | - [rubyowo](https://github.com/rubyowo) 33 | - [adriankarlen](https://github.com/adriankarlen) 34 | -------------------------------------------------------------------------------- /styles/github/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for Github

4 |

5 | 6 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

7 | 8 |

9 | 10 | 11 | 12 | 13 |

14 | 15 | ## Usage 16 | 17 | 1. Make sure you have the [Stylus](https://github.com/openstyles/stylus) browser 18 | extension installed, then visit 19 | [this link](https://github.com/rose-pine/userstyles/raw/main/styles/github/rose-pine.user.less) 20 | 2. Configure your preferred accent color and theme variant 21 | 3. Click install on the top left 22 | 23 | ## Gallery 24 | 25 | ![Rosé Pine](https://i.imgur.com/aQEI3nl.png) 26 | ![Rosé Pine Moon](https://i.imgur.com/LnG40xk.png) 27 | ![Rosé Pine Dawn](https://i.imgur.com/POfHEVx.png) 28 | 29 | ## Thanks to 30 | 31 | - [Catppuccin Org](https://github.com/catppuccin) 32 | - [soradotwav](https://github.com/soradotwav) 33 | - [juliamertz](https://github.com/juliamertz) 34 | -------------------------------------------------------------------------------- /styles/brave-search/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for Brave Search

4 |

5 | 6 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

7 | 8 |

9 | 10 | 11 | 12 | 13 |

14 | 15 | ## Usage 16 | 17 | 1. Make sure you have the [Stylus](https://github.com/openstyles/stylus) browser 18 | extension installed, then visit 19 | [this link](https://github.com/rose-pine/userstyles/raw/main/styles/brave-search/rose-pine.user.less) 20 | 2. Configure your preferred accent color and theme variant 21 | 3. Click install on the top left 22 | 23 | ## Gallery 24 | 25 | ![Rosé Pine](https://i.imgur.com/DzaavMd.png) 26 | ![Rosé Pine Moon](https://i.imgur.com/DCjXsU6.png) 27 | ![Rosé Pine Dawn](https://i.imgur.com/HCZpFEZ.png) 28 | 29 | ## Thanks to 30 | 31 | - [Catppuccin Org](https://github.com/catppuccin) 32 | - [ndsboy](https://github.com/ndsboyo) 33 | - [adriankarlen](https://github.com/adriankarlen) 34 | -------------------------------------------------------------------------------- /styles/status.cafe/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for status.cafe

4 |

5 | 6 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

7 | 8 |

9 | 10 | 11 | 12 | 13 |

14 | 15 | ## Usage 16 | 17 | 1. Make sure you have the [Stylus](https://github.com/openstyles/stylus) browser 18 | extension installed, then visit 19 | [this link](https://github.com/rose-pine/userstyles/raw/main/styles/status.cafe/rose-pine.user.less) 20 | 2. Configure your preferred accent color and theme variant 21 | 3. Click install on the top left 22 | 23 | ## Gallery 24 | 25 | ![Rosé Pine](https://github.com/user-attachments/assets/e00b7947-a3c5-44c0-97b8-1d66e5e040f0) 26 | ![Rosé Pine Moon](https://github.com/user-attachments/assets/4d4753e0-2d7d-4e32-bf17-e736e39bfba5) 27 | ![Rosé Pine Dawn](https://github.com/user-attachments/assets/6b3379b1-5a28-4b49-a3e8-85b65f6e92a3) 28 | 29 | ## Thanks to 30 | 31 | - [bunfluff](https://github.com/bunfluff) 32 | -------------------------------------------------------------------------------- /styles/nixos-search/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for Nixos-search

4 |

5 | 6 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

7 | 8 |

9 | 10 | 11 | 12 | 13 |

14 | 15 | ## Usage 16 | 17 | 1. Make sure you have the [Stylus](https://github.com/openstyles/stylus) browser 18 | extension installed, then visit 19 | [this link](https://github.com/rose-pine/userstyles/raw/main/styles/nixos-search/rose-pine.user.less) 20 | 2. Configure your preferred accent color and theme variant 21 | 3. Click install on the top left 22 | 23 | ## Gallery 24 | 25 | ![image](https://github.com/user-attachments/assets/4cdd776e-58da-4d34-b834-a1ded2434d24) 26 | ![image](https://github.com/user-attachments/assets/ed44ec8b-7475-44d9-b884-20c0f0fdb87e) 27 | ![image](https://github.com/user-attachments/assets/d354325d-2dcf-473b-a93a-8f04da441afb) 28 | 29 | ## Thanks to 30 | 31 | - [Catppuccin Org](https://github.com/catppuccin) 32 | - [JTrenerry](https://github.com/JTrenerry) 33 | -------------------------------------------------------------------------------- /styles/nixos-search/rose-pine.user.less: -------------------------------------------------------------------------------- 1 | /* ==UserStyle== 2 | @name Rosé Pine for NixOS Search 3 | @description Soho vibes for NixOS Search 4 | @author JTrenerry 5 | @license MIT 6 | @version 1.0.0 7 | @namespace github.com/rose-pine/userstyles/styles/nixos-search 8 | @homepageURL https://github.com/rose-pine/userstyles/tree/main/styles/nixos-search 9 | @updateURL https://github.com/rose-pine/userstyles/raw/main/styles/nixos-search/rose-pine.user.less 10 | @supportURL https://github.com/rose-pine/userstyles/issues?q=is%3Aopen+is%3Aissue+label%3Anixos-search 11 | 12 | @preprocessor less 13 | @var select lightVariant "Light Variant" ["dawn:Rosé Pine Dawn*", "moon:Rosé Pine Moon", "main:Rosé Pine"] 14 | @var select darkVariant "Dark Variant" ["dawn:Rosé Pine Dawn", "moon:Rosé Pine Moon", "main:Rosé Pine"] 15 | @var select accentColor "Accent" ["rose:Rose", "iris:Iris", "pine:Pine", "foam:Foam", "love:Love", "gold:Gold"] 16 | ==/UserStyle== */ 17 | 18 | @-moz-document domain("search.nixos.org") { 19 | #rosepine(@lookup, @accent) { 20 | @base: @rosepine[@@lookup][@base]; 21 | @surface: @rosepine[@@lookup][@surface]; 22 | @overlay: @rosepine[@@lookup][@overlay]; 23 | @muted: @rosepine[@@lookup][@muted]; 24 | @subtle: @rosepine[@@lookup][@subtle]; 25 | @text: @rosepine[@@lookup][@text]; 26 | @love: @rosepine[@@lookup][@love]; 27 | @gold: @rosepine[@@lookup][@gold]; 28 | @rose: @rosepine[@@lookup][@rose]; 29 | @pine: @rosepine[@@lookup][@pine]; 30 | @foam: @rosepine[@@lookup][@foam]; 31 | @iris: @rosepine[@@lookup][@iris]; 32 | @highlightLow: @rosepine[@@lookup][@highlightLow]; 33 | @highlightMed: @rosepine[@@lookup][@highlightMed]; 34 | @highlightHigh: @rosepine[@@lookup][@highlightHigh]; 35 | @accent-color: @rosepine[@@lookup][@@accent]; 36 | 37 | ::selection { 38 | background-color: fade(@accent-color, 30%); 39 | } 40 | 41 | input, 42 | textarea { 43 | &::placeholder { 44 | color: @muted !important; 45 | } 46 | } 47 | 48 | --background-color: @base; 49 | --badge-background: @overlay; 50 | --button-active-background: @overlay; 51 | --button-active-hover-background: @overlay; 52 | --button-background: @surface; 53 | --button-hover-background: @overlay; 54 | --color-active-hover-tab: @surface; 55 | --color-active-tab: @base; 56 | --color-hover-tab: @surface; 57 | --headerbar-background-color: @overlay; //change 58 | --hover-background: @base; 59 | --link-color: @accent; 60 | --info-label-background: @overlay; 61 | --dark-blue: @accent; 62 | --light-blue: @accent; 63 | --line-color: @base; 64 | --search-result-short-details-color: @muted; 65 | --search-result-divider-line-color: @overlay; 66 | --search-result-title-color: @accent; 67 | --search-sidebar-link-color: @text; 68 | --search-sidebar-selected-link-background: @overlay; 69 | --search-sidebar-selected-link-color: @accent; 70 | --terminal-background: @overlay; 71 | --terminal-color: @accent; 72 | --text-color: @text; 73 | --text-color-light: @text; 74 | --text-color-warning: @love; 75 | 76 | .label, 77 | .badge { 78 | color: @text; 79 | } 80 | 81 | a:hover, 82 | a:focus { 83 | color: @text; 84 | } 85 | } 86 | 87 | :root { 88 | @media (prefers-color-scheme: light) { 89 | #rosepine(@lightVariant, @accentColor); 90 | } 91 | @media (prefers-color-scheme: dark) { 92 | #rosepine(@darkVariant, @accentColor); 93 | } 94 | } 95 | } 96 | 97 | /* deno-fmt-ignore */ 98 | @rosepine: { 99 | @main: { @base: #191724; @surface: #1f1d2e; @overlay: #26233a; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ebbcba; @pine: #31748f; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #21202e; @highlightMed: #403d52; @highlightHigh: #524f67; }; 100 | @moon: { @base: #232136; @surface: #2a273f; @overlay: #393552; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ea9a97; @pine: #3e8fb0; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #2a283e; @highlightMed: #44415a; @highlightHigh: #56526e; }; 101 | @dawn: { @base: #faf4ed; @surface: #fffaf3; @overlay: #f2e9e1; @muted: #9893a5; @subtle: #797593; @text: #575279; @love: #b4637a; @gold: #ea9d34; @rose: #d7827e; @pine: #286983; @foam: #56949f; @iris: #907aa9; @highlightLow: #f4ede8; @highlightMed: #dfdad9; @highlightHigh: #cecacd; }; 102 | }; 103 | -------------------------------------------------------------------------------- /styles/youtube/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for YouTube

4 |

5 | 6 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

7 | 8 |

9 | 10 | 11 | 12 |

13 | 14 | ## Usage 15 | 16 | 1. Install Stylus extension on your browser. 17 | [Firefox](https://addons.mozilla.org/en-US/firefox/addon/styl-us), 18 | [Chrome](https://chrome.google.com/webstore/detail/stylus/clngdbkpkpeebahjckkjfobafhncgmne) 19 | or [Opera](https://addons.opera.com/en-gb/extensions/details/stylus/) 20 | 2. In the main manager interface on the extension, check the box `as Usercss`. 21 | 3. Download the theme 22 | [here](https://github.com/rose-pine/userstyles/raw/main/styles/youtube/rose-pine.user.less). 23 | 4. Click install style. 24 | 25 | ### Changing theme and accent color 26 | 27 | 1. For changing the theme and accent colors, head to the Stylus manager then 28 | click the cogwheel to open the settings panel. 29 | 2. Adjust the settings to your preference. 30 | 31 | For more information or troubleshooting, check out the Stylus 32 | [documentation](https://github.com/openstyles/stylus/wiki/Usercss#how-do-i-install-usercss) 33 | 34 | ## Gallery 35 | 36 | | Rosé Pine | Rosé Pine Moon | Rosé Pine Dawn | 37 | | ---------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | 38 | | ![Rosé Pine with YouTube](https://github.com/rose-pine/userstyles/assets/1474821/dba68ce6-c926-4bee-a314-ec0efc82182d) | ![Rosé Pine Moon with YouTube](https://github.com/rose-pine/userstyles/assets/1474821/e5881cbb-df47-4af4-998b-775df6a16cce) | ![Rosé Pine Dawn with YouTube](https://github.com/rose-pine/userstyles/assets/1474821/d54e9182-8af4-47e2-8799-8918fcea4fc4) | 39 | 40 | ## Thanks to 41 | 42 | - [artilate](https://github.com/artilate) 43 | -------------------------------------------------------------------------------- /template/readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine for {{title}}

4 |

5 | 6 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

7 | 8 |

9 | 10 | 11 | 12 | 13 |

14 | 15 | ## Installation 16 | 17 |
18 | Prerequisites 19 | 20 | Make sure you have the [Stylus](https://github.com/openstyles/stylus) browser 21 | extension installed: 22 | 23 | - **Chrome/Chromium**: 24 | [Install from Chrome Web Store](https://chrome.google.com/webstore/detail/stylus/clngdbkpkpeebahjckkjfobafhncgmne) 25 | - **Firefox**: 26 | [Install from Firefox Add-ons](https://addons.mozilla.org/en-GB/firefox/addon/styl-us/) 27 | - **Opera**: 28 | [Install from Opera Add-ons](https://addons.opera.com/en-gb/extensions/details/stylus/) 29 | 30 |
31 | 32 | ### Step-by-Step Instructions 33 | 34 | 1. **Click the "stylus install" button** above (the purple badge), or visit this 35 | direct link: 36 | [Install {{title}} userstyle](https://github.com/rose-pine/userstyles/raw/main/styles/{{directory}}/rose-pine.user.less) 37 | 38 | 2. **Stylus will automatically open** a new page showing the style code and 39 | configuration options. 40 | 41 | 3. **Configure your preferences** (optional): 42 | - Choose your theme variant: **Rosé Pine**, **Rosé Pine Moon**, or **Rosé 43 | Pine Dawn** 44 | - Select your preferred accent color 45 | - Adjust any other available options 46 | 47 | 4. **Click "Install style"** in the top-left corner of the Stylus page. 48 | 49 | 5. **Done!** The theme will now be applied to {{title}} automatically. 50 | 51 |
52 | What to Expect 53 | 54 | When you click the install link, Stylus will open a page that looks like a code 55 | editor. Don't worry—you don't need to understand the code! Just: 56 | 57 | - Adjust the settings at the top if you want to customize the theme 58 | - Click the "Install style" button in the top-left corner 59 | - The style will be active immediately 60 | 61 |
62 | 63 |
64 | Troubleshooting 65 | 66 | - **Stylus didn't open?** Make sure the Stylus extension is installed and 67 | enabled in your browser. 68 | - **Can't find the install button?** Look for the "Install style" button in the 69 | top-left corner of the Stylus editor page. 70 | - **Style not working?** Click the Stylus icon in your browser toolbar and make 71 | sure this style is enabled. 72 | 73 |
74 | 75 | ## Gallery 76 | 77 | ![Rosé Pine](link-to-image) ![Rosé Pine Moon](link-to-image) 78 | ![Rosé Pine Dawn](link-to-image) 79 | 80 | ## Thanks to 81 | 82 | - [You, it's you!]() 83 | -------------------------------------------------------------------------------- /styles/status.cafe/rose-pine.user.less: -------------------------------------------------------------------------------- 1 | /* ==UserStyle== 2 | @name Rosé Pine for status.cafe 3 | @description Soho vibes for status.cafe 4 | @version 1.0.0 5 | @license MIT 6 | @author Rosé Pine (https://github.com/rose-pine) 7 | @namespace https://github.com/rose-pine 8 | @homepageURL https://github.com/rose-pine/userstyles 9 | @updateURL https://github.com/rose-pine/userstyles/raw/main/styles/status.cafe/rose-pine.user.less 10 | @preprocessor less 11 | 12 | @var select lightVariant "Light Variant" ["main:Rosé Pine", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn*"] 13 | @var select darkVariant "Dark Variant" ["main:Rosé Pine*", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn"] 14 | @var select accentColor "Accent" ["love:Love*", "gold:Gold", "rose:Rose", "pine:Pine", "foam:Foam", "iris:Iris"] 15 | ==/UserStyle== */ 16 | 17 | @-moz-document regexp("https://status\\.cafe/(?!users).*"), 18 | domain("forum.status.cafe") { 19 | :root { 20 | @media (prefers-color-scheme: light) { 21 | #rose-pine(@lightVariant); 22 | } 23 | @media (prefers-color-scheme: dark) { 24 | #rose-pine(@darkVariant); 25 | } 26 | } 27 | 28 | :root[data-theme="dark"] { 29 | #rose-pine(@darkVariant); 30 | } 31 | :root[data-theme="light"] { 32 | #rose-pine(@lightVariant); 33 | } 34 | 35 | #rose-pine(@variant) { 36 | @base: @rose-pine[@@variant][@base]; 37 | @surface: @rose-pine[@@variant][@surface]; 38 | @overlay: @rose-pine[@@variant][@overlay]; 39 | @muted: @rose-pine[@@variant][@muted]; 40 | @subtle: @rose-pine[@@variant][@subtle]; 41 | @text: @rose-pine[@@variant][@text]; 42 | @love: @rose-pine[@@variant][@love]; 43 | @gold: @rose-pine[@@variant][@gold]; 44 | @rose: @rose-pine[@@variant][@rose]; 45 | @pine: @rose-pine[@@variant][@pine]; 46 | @foam: @rose-pine[@@variant][@foam]; 47 | @iris: @rose-pine[@@variant][@iris]; 48 | @highlightLow: @rose-pine[@@variant][@highlightLow]; 49 | @highlightMed: @rose-pine[@@variant][@highlightMed]; 50 | @highlightHigh: @rose-pine[@@variant][@highlightHigh]; 51 | @accent-color: @rose-pine[@@variant][@@accentColor]; 52 | color-scheme: if(@variant = dawn, light, dark); 53 | 54 | ::selection { 55 | background-color: fade(@accent-color, 30%); 56 | } 57 | 58 | background-color: @base; 59 | 60 | body { 61 | background-color: @base; 62 | color: @text; 63 | } 64 | 65 | textarea { 66 | background-color: @overlay; 67 | color: @text; 68 | border-color: @muted; 69 | border-style: solid; 70 | border-width: 1px; 71 | border-radius: 2px; 72 | padding: 3px; 73 | } 74 | 75 | textarea:hover, input:hover { 76 | border-color: darken(@surface, 5%); 77 | } 78 | 79 | input { 80 | background-color: @overlay; 81 | color: @text; 82 | border-color: darken(@highlightLow, 10%); 83 | border-style: solid; 84 | border-width: 1px; 85 | border-radius: 4px; 86 | padding: 2px 5px; 87 | :hover { 88 | background-color: darken(@overlay, 5%); 89 | } 90 | :active { 91 | background-color: @base; 92 | border-color: darken(@highlightLow, 15%); 93 | } 94 | } 95 | 96 | .flash { 97 | background-color: @foam; 98 | } 99 | 100 | a:not(.flash a) { 101 | color: @accent-color; 102 | } 103 | 104 | a:visited:not(.flash a) { 105 | color: darken(@accent-color, 5%); 106 | } 107 | 108 | table, th, td { 109 | border-color: darken(@highlightLow, 15%) !important; 110 | } 111 | 112 | thead { 113 | background-color: @surface; 114 | color: @text; 115 | } 116 | 117 | .forum { 118 | background-color: @gold; 119 | a { 120 | color: darken(@pine, 10%) !important; 121 | } 122 | } 123 | 124 | tbody, .topic > tbody > tr:nth-child(2n) { 125 | background-color: @overlay; 126 | } 127 | 128 | hr { 129 | background-color: darken(@highlightLow, 5%); 130 | } 131 | 132 | .signature { 133 | border-top-color: darken(@highlightLow, 5%); 134 | } 135 | 136 | & when (@variant = dawn) { 137 | a:visited:not(.flash a) { 138 | color: darken(@accent-color, 10%); 139 | } 140 | input:active { 141 | background-color: @surface; 142 | border-color: @base; 143 | } 144 | } 145 | } 146 | } 147 | 148 | /* deno-fmt-ignore */ 149 | @rose-pine: { 150 | @main: { @base: #191724; @surface: #1f1d2e; @overlay: #26233a; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ebbcba; @pine: #31748f; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #21202e; @highlightMed: #403d52; @highlightHigh: #524f67; }; 151 | @moon: { @base: #232136; @surface: #2a273f; @overlay: #393552; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ea9a97; @pine: #3e8fb0; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #2a283e; @highlightMed: #44415a; @highlightHigh: #56526e; }; 152 | @dawn: { @base: #faf4ed; @surface: #fffaf3; @overlay: #f2e9e1; @muted: #9893a5; @subtle: #797593; @text: #575279; @love: #b4637a; @gold: #ea9d34; @rose: #d7827e; @pine: #286983; @foam: #56949f; @iris: #907aa9; @highlightLow: #f4ede8; @highlightMed: #dfdad9; @highlightHigh: #cecacd; }; 153 | }; 154 | -------------------------------------------------------------------------------- /styles/4get/rose-pine.user.less: -------------------------------------------------------------------------------- 1 | /* ==UserStyle== 2 | @name Rosé Pine for 4Get 3 | @description Soho vibes for 4Get 4 | @version 1.0.0 5 | @license MIT 6 | @author Rosé Pine (https://github.com/rose-pine) 7 | @namespace https://github.com/rose-pine/ 8 | @homepageURL https://github.com/rose-pine/userstyles 9 | @updateURL https://github.com/rose-pine/userstyles/raw/main/styles/4get/rose-pine.user.less 10 | @preprocessor less 11 | 12 | @var select lightVariant "Light Variant" ["main:Rosé Pine", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn*"] 13 | @var select darkVariant "Dark Variant" ["main:Rosé Pine*", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn"] 14 | @var select accentColor "Accent" ["love:Love*", "gold:Gold", "rose:Rose", "pine:Pine", "foam:Foam", "iris:Iris"] 15 | ==/UserStyle== */ 16 | 17 | @-moz-document domain("4get.ca") { 18 | :root { 19 | @media (prefers-color-scheme: light) { 20 | #rose-pine(@lightVariant); 21 | } 22 | @media (prefers-color-scheme: dark) { 23 | #rose-pine(@darkVariant); 24 | } 25 | } 26 | 27 | :root[data-theme="dark"] { 28 | #rose-pine(@darkVariant); 29 | } 30 | :root[data-theme="light"] { 31 | #rose-pine(@lightVariant); 32 | } 33 | 34 | #rose-pine(@variant) { 35 | @base: @rose-pine[@@variant][@base]; 36 | @surface: @rose-pine[@@variant][@surface]; 37 | @overlay: @rose-pine[@@variant][@overlay]; 38 | @muted: @rose-pine[@@variant][@muted]; 39 | @subtle: @rose-pine[@@variant][@subtle]; 40 | @text: @rose-pine[@@variant][@text]; 41 | @love: @rose-pine[@@variant][@love]; 42 | @gold: @rose-pine[@@variant][@gold]; 43 | @rose: @rose-pine[@@variant][@rose]; 44 | @pine: @rose-pine[@@variant][@pine]; 45 | @foam: @rose-pine[@@variant][@foam]; 46 | @iris: @rose-pine[@@variant][@iris]; 47 | @highlightLow: @rose-pine[@@variant][@highlightLow]; 48 | @highlightMed: @rose-pine[@@variant][@highlightMed]; 49 | @highlightHigh: @rose-pine[@@variant][@highlightHigh]; 50 | @accent-color: @rose-pine[@@variant][@@accentColor]; 51 | color-scheme: if(@variant = dawn, light, dark); 52 | 53 | /* background */ 54 | --1d2021: @base; 55 | --282828: @surface; 56 | --3c3836: @overlay; 57 | --504945: @muted; 58 | 59 | /* font */ 60 | --928374: @text; 61 | --a89984: fade(@text, 20%); 62 | --bdae93: @text; 63 | --8ec07c: @foam; 64 | --ebdbb2: @gold; 65 | 66 | /* code highlighter */ 67 | --comment: @subtle; 68 | --default: @iris; 69 | --keyword: @rose; 70 | --string: @foam; 71 | 72 | /* code highlighter */ 73 | --comment: @subtle; 74 | --default: @iris; 75 | --keyword: @rose; 76 | --string: @foam; 77 | 78 | .searchbox { 79 | border-radius: 999px; 80 | } 81 | 82 | select, 83 | input[type="date"] { 84 | background-color: @highlightMed !important; 85 | border-radius: 12px !important; 86 | color: @text !important; 87 | } 88 | 89 | input[type="submit"] { 90 | background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCIgZmlsbD0iIzU2OTQ5ZiIgdmlld0JveD0iMCAwIDI1NiAyNTYiPjxwYXRoIGQ9Ik0yMzIuNDksMjE1LjUxLDE4NSwxNjhhOTIuMTIsOTIuMTIsMCwxLDAtMTcsMTdsNDcuNTMsNDcuNTRhMTIsMTIsMCwwLDAsMTctMTdaTTQ0LDExMmE2OCw2OCwwLDEsMSw2OCw2OEE2OC4wNyw2OC4wNywwLDAsMSw0NCwxMTJaIj48L3BhdGg+PC9zdmc+); 91 | background-repeat: no-repeat; 92 | padding: 0 !important; 93 | margin-top: 3px !important; 94 | margin-right: -10px !important; 95 | color: rgba(0, 0, 0, 0); 96 | } 97 | 98 | input[type="submit"]:hover { 99 | background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCIgZmlsbD0iI2M0YTdlNyIgdmlld0JveD0iMCAwIDI1NiAyNTYiPjxwYXRoIGQ9Ik0yMzIuNDksMjE1LjUxLDE4NSwxNjhhOTIuMTIsOTIuMTIsMCwxLDAtMTcsMTdsNDcuNTMsNDcuNTRhMTIsMTIsMCwwLDAsMTctMTdaTTQ0LDExMmE2OCw2OCwwLDEsMSw2OCw2OEE2OC4wNyw2OC4wNywwLDAsMSw0NCwxMTJaIj48L3BhdGg+PC9zdmc+); 100 | } 101 | 102 | .filter:nth-child(3) { 103 | display: none; 104 | } 105 | 106 | img { 107 | object-fit: cover; 108 | border-radius: 12px; 109 | } 110 | 111 | .tab.selected { 112 | color: @rose; 113 | } 114 | 115 | .tabs .tab.selected { 116 | border-bottom: 2px solid @rose; 117 | } 118 | 119 | .openimg { 120 | border-radius: 0; 121 | } 122 | } 123 | } 124 | 125 | /* deno-fmt-ignore */ 126 | @rose-pine: { 127 | @main: { @base: #191724; @surface: #1f1d2e; @overlay: #26233a; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ebbcba; @pine: #31748f; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #21202e; @highlightMed: #403d52; @highlightHigh: #524f67; }; 128 | @moon: { @base: #232136; @surface: #2a273f; @overlay: #393552; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ea9a97; @pine: #3e8fb0; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #2a283e; @highlightMed: #44415a; @highlightHigh: #56526e; }; 129 | @dawn: { @base: #faf4ed; @surface: #fffaf3; @overlay: #f2e9e1; @muted: #9893a5; @subtle: #797593; @text: #575279; @love: #b4637a; @gold: #ea9d34; @rose: #d7827e; @pine: #286983; @foam: #56949f; @iris: #907aa9; @highlightLow: #f4ede8; @highlightMed: #dfdad9; @highlightHigh: #cecacd; }; 130 | }; 131 | -------------------------------------------------------------------------------- /styles/advent-of-code/rose-pine.user.less: -------------------------------------------------------------------------------- 1 | /* ==UserStyle== 2 | @name Rosé Pine for Advent of Code 3 | @description Soho vibes for Advent of Code 4 | @version 1.0.0 5 | @license MIT 6 | @author Rosé Pine (https://github.com/rose-pine) 7 | @namespace https://github.com/rose-pine 8 | @homepageURL https://github.com/rose-pine/userstyles 9 | @updateURL https://github.com/rose-pine/userstyles/raw/main/styles/advent-of-code/rose-pine.user.less 10 | @preprocessor less 11 | 12 | @var select lightVariant "Light Variant" ["main:Rosé Pine", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn*"] 13 | @var select darkVariant "Dark Variant" ["main:Rosé Pine*", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn"] 14 | @var text fontFamily "Font family" "'Source Code Pro'" 15 | ==/UserStyle== */ 16 | 17 | @-moz-document domain("adventofcode.com") { 18 | :root { 19 | @media (prefers-color-scheme: light) { 20 | #rose-pine(@lightVariant); 21 | } 22 | @media (prefers-color-scheme: dark) { 23 | #rose-pine(@darkVariant); 24 | } 25 | } 26 | 27 | :root[data-theme="dark"] { 28 | #rose-pine(@darkVariant); 29 | } 30 | :root[data-theme="light"] { 31 | #rose-pine(@lightVariant); 32 | } 33 | 34 | #rose-pine(@variant) { 35 | @base: @rose-pine[@@variant][@base]; 36 | @surface: @rose-pine[@@variant][@surface]; 37 | @overlay: @rose-pine[@@variant][@overlay]; 38 | @muted: @rose-pine[@@variant][@muted]; 39 | @subtle: @rose-pine[@@variant][@subtle]; 40 | @text: @rose-pine[@@variant][@text]; 41 | @love: @rose-pine[@@variant][@love]; 42 | @gold: @rose-pine[@@variant][@gold]; 43 | @rose: @rose-pine[@@variant][@rose]; 44 | @pine: @rose-pine[@@variant][@pine]; 45 | @foam: @rose-pine[@@variant][@foam]; 46 | @iris: @rose-pine[@@variant][@iris]; 47 | @highlightLow: @rose-pine[@@variant][@highlightLow]; 48 | @highlightMed: @rose-pine[@@variant][@highlightMed]; 49 | @highlightHigh: @rose-pine[@@variant][@highlightHigh]; 50 | color-scheme: if(@variant = dawn, light, dark); 51 | 52 | body { 53 | background: @base; 54 | color: @text; 55 | font-family: @fontFamily, monospace; 56 | 57 | header h1 a, 58 | header h1 span { 59 | color: @pine; 60 | text-shadow: 0 0 2px @pine, 0 0 5px @pine; 61 | } 62 | 63 | a { 64 | color: @pine; 65 | } 66 | 67 | .star-count, 68 | .privboard-star-both { 69 | color: @gold; 70 | } 71 | 72 | .quiet { 73 | color: @muted; 74 | opacity: 1; 75 | } 76 | 77 | .share, 78 | .share:hover, 79 | input[type="submit"] { 80 | color: @pine; 81 | } 82 | 83 | main { 84 | article { 85 | em { 86 | color: @text; 87 | text-shadow: 0 0 5px @text; 88 | } 89 | 90 | h2 { 91 | color: @text; 92 | } 93 | 94 | input[type="radio"]:checked ~ span, 95 | input[type="checkbox"]:checked ~ span { 96 | color: @text; 97 | } 98 | 99 | input[type="radio"] ~ span:hover, 100 | input[type="radio"] ~ span:focus, 101 | input[type="checkbox"]:hover ~ span, 102 | input[type="checkbox"]:focus ~ span { 103 | background-color: @base; 104 | } 105 | } 106 | .supporter-badge { 107 | color: @gold; 108 | } 109 | 110 | .supporter-badge:hover { 111 | color: @gold; 112 | text-shadow: 0 0 5px @gold; 113 | } 114 | 115 | .sponsor-badge { 116 | color: @foam; 117 | } 118 | 119 | .sponsor-badge:hover, 120 | .sponsor-badge:focus { 121 | color: @foam; 122 | text-shadow: 0 0 5px @foam; 123 | } 124 | 125 | .leaderboard-entry { 126 | .leaderboard-position { 127 | color: @subtle; 128 | } 129 | .leaderboard-totalscore { 130 | color: @text; 131 | } 132 | } 133 | 134 | .leaderboard-daylinks-selected { 135 | color: @text; 136 | text-shadow: 0 0 5px @text; 137 | } 138 | 139 | .leaderboard-daylinks-selected:hover { 140 | color: @pine; 141 | } 142 | 143 | .leaderboard-anon { 144 | opacity: 1; 145 | color: @muted; 146 | } 147 | .calendar { 148 | .calendar-color-w { 149 | color: @text; 150 | } 151 | .calendar-color-s { 152 | color: @gold; 153 | } 154 | .calendar-color-c { 155 | color: @subtle; 156 | } 157 | .calendar-color-g3 { 158 | color: darken(@pine, 3%); 159 | } 160 | .calendar-color-g2 { 161 | color: @pine; 162 | } 163 | .calendar-color-g4 { 164 | color: darken(@pine, 3.5%); 165 | } 166 | .calendar-color-u { 167 | color: @foam; 168 | } 169 | .calendar-color-a { 170 | color: @muted; 171 | } 172 | .calendar-color-g1 { 173 | color: darken(@pine, 2.5%); 174 | } 175 | .calendar-color-g0 { 176 | color: darken(@pine, 2%); 177 | } 178 | .calendar-color-l { 179 | color: @love; 180 | } 181 | .calendar-mark-complete { 182 | color: @gold; 183 | } 184 | .calendar-mark-verycomplete { 185 | color: @gold; 186 | } 187 | .calendar-day { 188 | color: @subtle; 189 | } 190 | #calendar-countdown { 191 | color: @subtle; 192 | } 193 | 194 | span { 195 | color: @surface; 196 | } 197 | 198 | a { 199 | color: @surface; 200 | } 201 | } 202 | 203 | .day-success { 204 | color: @gold; 205 | text-shadow: 0 0 5px @gold; 206 | } 207 | 208 | .stats-both { 209 | color: @gold; 210 | } 211 | 212 | .stats-firstonly { 213 | color: @overlay; 214 | } 215 | 216 | a:hover { 217 | background-color: @overlay !important; 218 | } 219 | 220 | input[type="text"], 221 | textarea, 222 | code::before { 223 | border-color: @highlightMed; 224 | background: @base; 225 | } 226 | } 227 | } 228 | } 229 | } 230 | 231 | /* deno-fmt-ignore */ 232 | @rose-pine: { 233 | @main: { @base: #191724; @surface: #1f1d2e; @overlay: #26233a; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ebbcba; @pine: #31748f; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #21202e; @highlightMed: #403d52; @highlightHigh: #524f67; }; 234 | @moon: { @base: #232136; @surface: #2a273f; @overlay: #393552; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ea9a97; @pine: #3e8fb0; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #2a283e; @highlightMed: #44415a; @highlightHigh: #56526e; }; 235 | @dawn: { @base: #faf4ed; @surface: #fffaf3; @overlay: #f2e9e1; @muted: #9893a5; @subtle: #797593; @text: #575279; @love: #b4637a; @gold: #ea9d34; @rose: #d7827e; @pine: #286983; @foam: #56949f; @iris: #907aa9; @highlightLow: #f4ede8; @highlightMed: #dfdad9; @highlightHigh: #cecacd; }; 236 | }; 237 | -------------------------------------------------------------------------------- /styles/brave-search/rose-pine.user.less: -------------------------------------------------------------------------------- 1 | /* ==UserStyle== 2 | @name Rosé Pine for Brave Search 3 | @description Soho vibes for Brave Search 4 | @version 1.0.0 5 | @license MIT 6 | @author Adrian Karlén (https://github.com/adriankarlen/) 7 | @namespace https://github.com/rose-pine/ 8 | @homepageURL https://github.com/rose-pine/userstyles 9 | @updateURL https://github.com/rose-pine/userstyles/raw/main/styles/brave-search/rose-pine.user.less 10 | @preprocessor less 11 | 12 | @var select lightVariant "Light variant" ["main:Rosé Pine*", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn"] 13 | @var select darkVariant "Dark variant" ["main:Rosé Pine*", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn"] 14 | ==/UserStyle== */ 15 | 16 | @-moz-document domain("search.brave.com") { 17 | :root.light { 18 | #rose-pine(@lightVariant); 19 | } 20 | :root.dark { 21 | #rose-pine(@darkVariant); 22 | } 23 | :root:not(.light, .dark) { 24 | @media (prefers-color-scheme: light) { 25 | #rose-pine(@lightVariant); 26 | } 27 | @media (prefers-color-scheme: dark) { 28 | #rose-pine(@darkVariant); 29 | } 30 | } 31 | 32 | #rose-pine(@variant) { 33 | @base: @rose-pine[@@variant][@base]; 34 | @surface: @rose-pine[@@variant][@surface]; 35 | @overlay: @rose-pine[@@variant][@overlay]; 36 | @muted: @rose-pine[@@variant][@muted]; 37 | @subtle: @rose-pine[@@variant][@subtle]; 38 | @text: @rose-pine[@@variant][@text]; 39 | @love: @rose-pine[@@variant][@love]; 40 | @gold: @rose-pine[@@variant][@gold]; 41 | @rose: @rose-pine[@@variant][@rose]; 42 | @pine: @rose-pine[@@variant][@pine]; 43 | @foam: @rose-pine[@@variant][@foam]; 44 | @iris: @rose-pine[@@variant][@iris]; 45 | @highlightLow: @rose-pine[@@variant][@highlightLow]; 46 | @highlightMed: @rose-pine[@@variant][@highlightMed]; 47 | @highlightHigh: @rose-pine[@@variant][@highlightHigh]; 48 | color-scheme: if(@variant = dawn, light, dark); 49 | 50 | --color-container-highlight: @surface; 51 | --search-serp-container-background: @overlay; 52 | --search-serp-breadcrumbs: @muted; 53 | --body-bg: @base; 54 | --bg-glassy: @overlay; 55 | --bg-1: @highlightMed; 56 | --bg-2: @highlightLow; 57 | --bg-02: @surface; 58 | --bg-04: @surface; 59 | --bg-green: @pine; 60 | --bg-blue: @foam; 61 | --bg-red: @love; 62 | --bg-favicon: @highlightMed; 63 | --bg-form-control-selected: @highlightHigh; 64 | --bg-form-control-unselected: @highlightLow; 65 | --form-control-selected: @foam; 66 | --form-control-hover: @iris; 67 | --form-control-focus: @text; 68 | --settings-header-bg: @overlay; 69 | --settings-header-text: @text; 70 | --settings-header-icon: @foam; 71 | --settings-widget-text: @muted; 72 | --settings-item-text: @text; 73 | --settings-item-icon: @foam; 74 | --settings-item-border: @highlightLow; 75 | --settings-item-border-2: @highlightHigh; 76 | --settings-btn-bg: @highlightLow; 77 | --settings-btn-text: @text; 78 | --settings-widget-outline: @highlightLow; 79 | --settings-independent-score: @foam; 80 | --settings-global-score: @gold; 81 | --brave-supporter-bg: @base; 82 | --brave-supporter-text: @text; 83 | --context-menu-header-border: @highlightLow; 84 | --color-primary: @text; 85 | --color-primary-2: @subtle; 86 | --color-primary-3: @muted; 87 | --color-white: @text; 88 | --color-gray-2: @subtle; 89 | --color-gray-3: @muted; 90 | --color-gray-4: @highlightHigh; 91 | --color-gray-5: @highlightMed; 92 | --color-gray-6: @highlightLow; 93 | --color-green: @pine; 94 | --color-red: @love; 95 | --color-blue: @foam; 96 | --info-color: @foam; 97 | --link-default: @pine; 98 | --link-primary: @pine; 99 | --link-secondary: @pine; 100 | --link-visited: @rose; 101 | --snippet-url: @muted; 102 | --separator-dot: @highlightLow; 103 | --theme-purple: @rose; 104 | --theme-gold: @gold; 105 | --border-color: @highlightLow; 106 | --blurple-300: @iris; 107 | --text-primary: @text; 108 | --text-secondary: @subtle; 109 | --text-tertiary: @muted; 110 | --text-01: @text; 111 | --text-02: @subtle; 112 | --text-03: @muted; 113 | --text-interactive: @pine; 114 | --interactive-04: @pine; 115 | --interactive-05: @pine; 116 | --interactive-06: @pine; 117 | --interactive-07: @pine; 118 | --interactive-08: @pine; 119 | --focus-border: @highlightHigh; 120 | --divider-01: @highlightLow; 121 | --disabled: @highlightMed; 122 | --btn-filled-bg: @highlightLow; 123 | --btn-filled-bg-hover: @highlightMed; 124 | --btn-filled-text-active: @text; 125 | --btn-filled-bg-active: @highlightHigh; 126 | --btn-filled-text-disabled: @highlightMed; 127 | --btn-outline-border: @highlightLow; 128 | --btn-outline-border-hover: @highlightMed; 129 | --btn-outline-text: @text; 130 | --btn-outline-text-hover: @subtle; 131 | --btn-outline-text-active: @text; 132 | --btn-outline-border-active: @highlightHigh; 133 | --btn-outline-text-disabled: @highlightMed; 134 | --btn-icon-svg-hover: @subtle; 135 | --btn-icon-bg-hover: @highlightMed; 136 | --btn-icon-svg-active: @text; 137 | --code-bg-0: @base; 138 | --code-border: @highlightLow; 139 | --code-color-1: @highlightLow; 140 | --code-color-2: @text; 141 | --code-color-3: @pine; 142 | --code-color-4: @foam; 143 | --code-color-5: @rose; 144 | --search-bgd-01: @highlightLow; 145 | --search-bgd-02: @base; 146 | --search-bgd-03: @surface; 147 | --search-bgd-04: @overlay; 148 | --search-bgd-05: @base; 149 | --search-bgd-06: @base; 150 | --search-bgd-07: @overlay; 151 | --search-bgd-08: @surface; 152 | --search-line-01: @highlightHigh; 153 | --search-line-02: @muted; 154 | --search-text-01: @text; 155 | --search-text-02: @subtle; 156 | --search-text-03: @muted; 157 | --search-text-04: @muted; 158 | --search-text-05: @foam; 159 | --search-text-06: @muted; 160 | --search-text-09: @gold; 161 | --search-text-10: @gold; 162 | --search-interactive-01: @foam; 163 | --search-interactive-02: @rose; 164 | --search-interactive-03: @rose; 165 | --search-interactive-04: @foam; 166 | --search-interactive-05: @rose; 167 | --gray-30: @base; 168 | --gray-60: @highlightLow; 169 | --gray-90: @highlightLow; 170 | --gray-110: @muted; 171 | --gray-120: @text; 172 | --secondary-90: @iris; 173 | --tabs-search-text-default: @love; 174 | 175 | #searchform > .searchbox-wrapper::after { 176 | background-image: none; 177 | } 178 | 179 | #submit-button:hover, 180 | #submit-button:focus { 181 | background: none; 182 | } 183 | 184 | #submit-button .icon path { 185 | fill: @love; 186 | } 187 | 188 | #submit-button:hover .icon path { 189 | fill: @text; 190 | } 191 | 192 | .tab-item.active a:after { 193 | background: @love; 194 | } 195 | } 196 | } 197 | 198 | /* deno-fmt-ignore */ 199 | @rose-pine: { 200 | @main: { @base: #191724; @surface: #1f1d2e; @overlay: #26233a; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ebbcba; @pine: #31748f; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #21202e; @highlightMed: #403d52; @highlightHigh: #524f67; }; 201 | @moon: { @base: #232136; @surface: #2a273f; @overlay: #393552; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ea9a97; @pine: #3e8fb0; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #2a283e; @highlightMed: #44415a; @highlightHigh: #56526e; }; 202 | @dawn: { @base: #faf4ed; @surface: #fffaf3; @overlay: #f2e9e1; @muted: #9893a5; @subtle: #797593; @text: #575279; @love: #b4637a; @gold: #ea9d34; @rose: #d7827e; @pine: #286983; @foam: #56949f; @iris: #907aa9; @highlightLow: #f4ede8; @highlightMed: #dfdad9; @highlightHigh: #cecacd; }; 203 | }; 204 | -------------------------------------------------------------------------------- /styles/claude/rose-pine.user.less: -------------------------------------------------------------------------------- 1 | /* ==UserStyle== 2 | @name Rosé Pine for Claude 3 | @description Soho vibes for Claude 4 | @version 1.0.0 5 | @license MIT 6 | @author Rosé Pine (https://github.com/rose-pine) 7 | @namespace https://github.com/rose-pine 8 | @homepageURL https://github.com/rose-pine/userstyles 9 | @updateURL https://github.com/rose-pine/userstyles/raw/main/styles/claude/rose-pine.user.less 10 | @preprocessor less 11 | 12 | @var select lightVariant "Light Variant" ["main:Rosé Pine", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn*"] 13 | @var select darkVariant "Dark Variant" ["main:Rosé Pine*", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn"] 14 | @var select accentColor "Accent" ["love:Love", "gold:Gold", "rose:Rose*", "pine:Pine", "foam:Foam", "iris:Iris"] 15 | ==/UserStyle== */ 16 | @-moz-document domain("claude.ai") { 17 | :root[data-mode="dark"] { 18 | #rose-pine(@darkVariant); 19 | } 20 | :root[data-mode="light"], 21 | /* Login page */ 22 | [data-theme="claude"][data-mode="light"] { 23 | #rose-pine(@lightVariant); 24 | } 25 | 26 | #rose-pine(@variant) { 27 | @base: @rose-pine[@@variant][@base]; 28 | @surface: @rose-pine[@@variant][@surface]; 29 | @overlay: @rose-pine[@@variant][@overlay]; 30 | @muted: @rose-pine[@@variant][@muted]; 31 | @subtle: @rose-pine[@@variant][@subtle]; 32 | @text: @rose-pine[@@variant][@text]; 33 | @love: @rose-pine[@@variant][@love]; 34 | @gold: @rose-pine[@@variant][@gold]; 35 | @rose: @rose-pine[@@variant][@rose]; 36 | @pine: @rose-pine[@@variant][@pine]; 37 | @foam: @rose-pine[@@variant][@foam]; 38 | @iris: @rose-pine[@@variant][@iris]; 39 | @highlightLow: @rose-pine[@@variant][@highlightLow]; 40 | @highlightMed: @rose-pine[@@variant][@highlightMed]; 41 | @highlightHigh: @rose-pine[@@variant][@highlightHigh]; 42 | @accent-color: @rose-pine[@@variant][@@accentColor]; 43 | color-scheme: if(@variant = dawn, light, dark); 44 | 45 | ::selection { 46 | background-color: fade(@accent-color, 30%); 47 | } 48 | 49 | input, 50 | textarea { 51 | &::placeholder { 52 | color: @subtle !important; 53 | } 54 | } 55 | 56 | --accent-brand: #hslify(@accent-color)[]; 57 | --accent-main-000: #hslify(@accent-color)[]; 58 | --accent-main-100: #hslify(@accent-color)[]; 59 | --accent-main-200: #hslify(@accent-color)[]; 60 | --accent-main-900: #hslify(@accent-color)[]; 61 | --accent-pro-000: #hslify(@accent-color)[]; 62 | --accent-pro-100: #hslify(@accent-color)[]; 63 | --accent-pro-200: #hslify(@accent-color)[]; 64 | --accent-pro-900: #hslify(@accent-color)[]; 65 | --accent-secondary-000: #hslify(@accent-color)[]; 66 | --accent-secondary-100: #hslify(@accent-color)[]; 67 | --accent-secondary-200: #hslify(@accent-color)[]; 68 | --accent-secondary-900: #hslify(@accent-color)[]; 69 | --bg-000: #hslify(@base)[]; 70 | --bg-100: #hslify(@surface)[]; 71 | --bg-200: #hslify(@surface)[]; 72 | --bg-300: #hslify(@overlay)[]; 73 | --bg-400: #hslify(@overlay)[]; 74 | --bg-500: #hslify(@overlay)[]; 75 | --border-000: #hslify(@base)[]; 76 | --border-100: #hslify(@base)[]; 77 | --border-200: #hslify(@base)[]; 78 | --border-300: #hslify(@overlay)[]; 79 | --border-400: #hslify(@overlay)[]; 80 | --border-500: #hslify(@overlay)[]; 81 | --danger-000: #hslify(@love)[]; 82 | --danger-100: #hslify(@love)[]; 83 | --danger-200: #hslify(@love)[]; 84 | --danger-900: #hslify(@rose)[]; 85 | --oncolor-000: #hslify(darken(@base, 5%))[]; 86 | --oncolor-100: #hslify(@base)[]; 87 | --oncolor-200: #hslify(@base)[]; 88 | --oncolor-300: #hslify(lighten(@base, 5%))[]; 89 | --text-000: #hslify(darken(@text, 5%))[]; 90 | --text-100: #hslify(@text)[]; 91 | --text-200: #hslify(@text)[]; 92 | --text-300: #hslify(@subtle)[]; 93 | --text-400: #hslify(@subtle)[]; 94 | --text-500: #hslify(@subtle)[]; 95 | 96 | /* Side bar */ 97 | nav.\!bg-bg-200 { 98 | background: @overlay !important; 99 | } 100 | 101 | /* Code blocks */ 102 | pre.code-block__code { 103 | background: @base !important; 104 | 105 | code { 106 | span { 107 | color: @text !important; 108 | } 109 | 110 | /* Green */ 111 | span.token[style="color: rgb(152, 195, 121);"] { 112 | color: @pine !important; 113 | } 114 | 115 | /* Yellow */ 116 | span.token[style="color: rgb(209, 154, 102);"] { 117 | color: @rose !important; 118 | } 119 | 120 | /* Blue */ 121 | span.token[style="color: rgb(97, 175, 239);"] { 122 | color: @foam !important; 123 | } 124 | 125 | /* Red */ 126 | span.token[style="color: rgb(224, 108, 117);"] { 127 | color: @love !important; 128 | } 129 | 130 | /* Magenta */ 131 | span.token[style="color: rgb(198, 120, 221);"] { 132 | color: @iris !important; 133 | } 134 | } 135 | } 136 | 137 | /* Inline code */ 138 | code.text-danger-000 { 139 | color: @accent-color !important; 140 | } 141 | 142 | /* Tooltip */ 143 | div.bg-black\/80 { 144 | background: @base !important; 145 | } 146 | div.text-white { 147 | color: @text !important; 148 | } 149 | 150 | /* Logo */ 151 | svg path[fill="#D97757"] { 152 | fill: @accent-color !important; 153 | } 154 | 155 | /* "New chat" plus icon */ 156 | svg.text-always-white { 157 | color: @base !important; 158 | } 159 | 160 | /* "Subscribe to Pro" and "Create Team Account" buttons */ 161 | button.bg-accent-pro-100 > span.inline-block { 162 | color: @base !important; 163 | } 164 | 165 | /* Pay monthly/annually buttons */ 166 | button.bg-accent-secondary-900 { 167 | span.text-text-000 { 168 | color: @base !important; 169 | } 170 | span.text-text-300 { 171 | color: @surface !important; 172 | } 173 | div.bg-accent-secondary-000 { 174 | background: darken(@accent-color, 15%) !important; 175 | } 176 | } 177 | 178 | /* Delete conversation button */ 179 | div.\!text-danger-000.\[\&\[data-highlighted\]\]\:bg-danger-900[data-highlighted] { 180 | background: fade(@love, 20%) !important; 181 | } 182 | 183 | /* Checkbox */ 184 | input[type="checkbox"] + div.bg-bg-000 { 185 | background: @text !important; 186 | } 187 | 188 | /* "Add writing example" button */ 189 | button.\!text-accent-secondary-100.bg-accent-secondary-900 { 190 | color: @base !important; 191 | &:hover { 192 | color: @text !important; 193 | } 194 | } 195 | 196 | /* "Describe your style" list */ 197 | button.\!bg-accent-secondary-900.text-accent-secondary-000 { 198 | color: @base !important; 199 | } 200 | 201 | /* "Be as descriptive as possible..." helper text */ 202 | div.bg-accent-secondary-900.text-text-200 { 203 | color: @base !important; 204 | } 205 | 206 | /* "Preview with an example..." pills */ 207 | button.hover\:bg-accent-secondary-900.hover\:text-accent-secondary-000 { 208 | color: @accent-color !important; 209 | &:hover { 210 | color: @base !important; 211 | } 212 | } 213 | 214 | /* "Previewing with ..." dropdown button */ 215 | button.\!text-accent-secondary-100.hover\:\!bg-accent-secondary-900 { 216 | color: @accent-color !important; 217 | &:hover { 218 | color: @base !important; 219 | } 220 | } 221 | } 222 | } 223 | 224 | #hslify(@color) { 225 | @raw: e(%("%s %s% %s%", hue(@color), saturation(@color), lightness(@color))); 226 | } 227 | 228 | /* deno-fmt-ignore */ 229 | @rose-pine: { 230 | @main: { @base: #191724; @surface: #1f1d2e; @overlay: #26233a; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ebbcba; @pine: #31748f; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #21202e; @highlightMed: #403d52; @highlightHigh: #524f67; }; 231 | @moon: { @base: #232136; @surface: #2a273f; @overlay: #393552; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ea9a97; @pine: #3e8fb0; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #2a283e; @highlightMed: #44415a; @highlightHigh: #56526e; }; 232 | @dawn: { @base: #faf4ed; @surface: #fffaf3; @overlay: #f2e9e1; @muted: #9893a5; @subtle: #797593; @text: #575279; @love: #b4637a; @gold: #ea9d34; @rose: #d7827e; @pine: #286983; @foam: #56949f; @iris: #907aa9; @highlightLow: #f4ede8; @highlightMed: #dfdad9; @highlightHigh: #cecacd; }; 233 | }; 234 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Rosé Pine Userstyles

4 |

5 |

All natural pine, faux fur and a bit of soho vibes for the classy minimalist

6 |

7 | 8 | 9 | 10 |

11 | 12 | # Getting started 13 | 14 |
15 | Installation Guide 16 | 17 | ### Step 1: Install the Stylus Extension 18 | 19 | First, you need to install the Stylus extension for your browser: 20 | 21 | - **Chrome/Chromium**: 22 | [Install from Chrome Web Store](https://chrome.google.com/webstore/detail/stylus/clngdbkpkpeebahjckkjfobafhncgmne) 23 | - **Firefox**: 24 | [Install from Firefox Add-ons](https://addons.mozilla.org/en-GB/firefox/addon/styl-us/) 25 | - **Opera**: 26 | [Install from Opera Add-ons](https://addons.opera.com/en-gb/extensions/details/stylus/) 27 | 28 | After installation, you should see the Stylus icon in your browser's toolbar. 29 | 30 | ### Step 2: Choose a Userstyle to Install 31 | 32 | Browse the [Userstyles](#userstyles) section below to find the website you want 33 | to theme. Each userstyle has its own folder with installation instructions. 34 | 35 | ### Step 3: Install the Userstyle 36 | 37 | There are two ways to install a userstyle: 38 | 39 | #### Method 1: Using the "Stylus Install" Button (Recommended) 40 | 41 | 1. Navigate to the userstyle's folder (e.g., `styles/github/` for GitHub). 42 | 2. On the userstyle's readme page, you'll see a purple "stylus install" badge 43 | button near the top. 44 | 3. Click this button. It will automatically open the Stylus installation page. 45 | 46 | #### Method 2: Using the Raw File Link 47 | 48 | 1. Navigate to the userstyle's folder (e.g., `styles/github/` for GitHub). 49 | 2. Click on the `rose-pine.user.less` file. 50 | 3. Click the "Raw" button in the top-right corner of the file view. 51 | 4. This will open the raw file URL, which Stylus will automatically detect. 52 | 53 | ### Step 4: Configure and Install in Stylus 54 | 55 | When you click the install button or raw link, Stylus will open a new page 56 | showing: 57 | 58 | - **The style code** (you don't need to edit this) 59 | - **Configuration options** (if available) - you can customize: 60 | - Theme variant (Rosé Pine, Rosé Pine Moon, or Rosé Pine Dawn) 61 | - Accent color 62 | - Other style-specific options 63 | - **An "Install style" button** in the top-left corner 64 | 65 | 1. **Configure your preferences** (optional): Adjust any settings you want to 66 | change using the dropdown menus and options at the top of the page. 67 | 2. **Click "Install style"**: This button is located in the top-left corner of 68 | the Stylus page. After clicking, the style will be installed and active! 69 | 70 | ### Step 5: Verify Installation 71 | 72 | After installation, visit the website you themed (e.g., github.com if you 73 | installed the GitHub userstyle). You should see the Rosé Pine theme applied 74 | automatically. 75 | 76 |
77 | 78 |
79 | Troubleshooting 80 | 81 | - **The style isn't working**: Make sure Stylus is enabled and the style is 82 | turned on. Click the Stylus icon in your toolbar and verify the style is 83 | listed and enabled. 84 | - **Stylus didn't open automatically**: Make sure you have the Stylus extension 85 | installed and enabled. Try clicking the raw file link again. 86 | - **Can't find the install button**: The "Install style" button is in the 87 | top-left corner of the Stylus editor page. If you don't see it, make sure 88 | you're viewing the raw file (the URL should contain `/raw/`). 89 | - **Need to update a style**: Styles update automatically if you installed from 90 | the raw GitHub link. Otherwise, you can manually update by reinstalling the 91 | style. 92 | 93 |
94 | 95 |
96 | Installing Multiple Userstyles 97 | 98 | To install all userstyles at once, visit the 99 | [releases page](https://github.com/rose-pine/userstyles/releases/tag/userstyle-imports) 100 | and follow the instructions there. 101 | 102 |
103 | 104 |
105 | Additional Notes 106 | 107 | Some userstyles may require extra configuration steps to work correctly. Always 108 | check the individual userstyle's readme page (in each style's folder) for any 109 | additional setup instructions or special requirements. 110 | 111 |
112 | 113 | ## Userstyles 114 | 115 | **Development tools** 116 | 117 | - [Octopus](https://github.com/rose-pine/userstyles/tree/main/styles/octopus) 118 | 119 | **Search Engines** 120 | 121 | - [Brave search](https://github.com/rose-pine/userstyles/tree/main/styles/brave-search) 122 | - [4get](https://github.com/rose-pine/userstyles/tree/main/styles/4get) 123 | 124 | **Productivity** 125 | 126 | - [ChatGPT](https://github.com/rose-pine/userstyles/tree/main/styles/chatgpt) 127 | - [GitHub](https://github.com/rose-pine/userstyles/tree/main/styles/github) 128 | - [Jira](https://github.com/rose-pine/userstyles/tree/main/styles/jira) 129 | - [Proton](https://github.com/rose-pine/userstyles/tree/main/styles/proton) 130 | - [Scribe](https://github.com/rose-pine/userstyles/tree/main/styles/scribe) 131 | - [Wikiwand](https://github.com/rose-pine/userstyles/tree/main/styles/wikiwand) 132 | 133 | **Webmail** 134 | 135 | - [Skiff](https://github.com/rose-pine/skiff) 136 | - [Zimbra](https://github.com/rose-pine/zimbra) 137 | 138 | **Finance** 139 | 140 | - [Phemex](https://github.com/rose-pine/phemex) 141 | 142 | **Misc** 143 | 144 | - [Twitch](https://github.com/rose-pine/userstyles/tree/main/styles/twitch) 145 | - [YouTube](https://github.com/rose-pine/userstyles/tree/main/styles/youtube) 146 | - [NixOS-Search](https://github.com/rose-pine/userstyles/tree/main/styles/nixos-search) 147 | - [status.cafe](https://github.com/rose-pine/userstyles/tree/main/styles/status.cafe) 148 | - [Advent of Code](https://github.com/rose-pine/userstyles/tree/main/styles/advent-of-code) 149 | 150 | ## Contributing 151 | 152 | We use [deno](https://docs.deno.com/runtime/getting_started/installation/) to 153 | format this repo and for automation, make sure you have it installed. 154 | 155 | Contributions are welcome and appreciated! You can create a new userstyle from 156 | the template by running `./scripts/init Website` Please run `deno fmt` to format 157 | the repository before submitting a pull request. 158 | -------------------------------------------------------------------------------- /styles/proton/rose-pine.user.less: -------------------------------------------------------------------------------- 1 | /* ==UserStyle== 2 | @name Rosé Pine for Proton 3 | @description Soho vibes for Proton 4 | @version 1.0.0 5 | @license MIT 6 | @author Julia Mertz (https://github.com/juliamertz/) 7 | @namespace https://github.com/rose-pine/ 8 | @homepageURL https://github.com/rose-pine/userstyles 9 | @updateURL https://github.com/rose-pine/userstyles/raw/main/styles/proton/rose-pine.user.less 10 | @preprocessor less 11 | 12 | @var select variant "Variant" ["main:Rosé Pine*", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn"] 13 | @var select accentColor "Accent" ["love:Love*", "gold:Gold", "rose:Rose", "pine:Pine", "foam:Foam", "iris:Iris"] 14 | @var checkbox hidePromotionButton "Hide Upgrade Button" 0 15 | ==/UserStyle== */ 16 | @-moz-document regexp("https://(account|mail|drive|calendar).proton.me/.*$") { 17 | :root { 18 | #rose-pine(@variant, @accentColor); 19 | } 20 | 21 | #rose-pine(@lookup, @accent) { 22 | @base: @rose-pine[@@lookup][@base]; 23 | @surface: @rose-pine[@@lookup][@surface]; 24 | @overlay: @rose-pine[@@lookup][@overlay]; 25 | @muted: @rose-pine[@@lookup][@muted]; 26 | @subtle: @rose-pine[@@lookup][@subtle]; 27 | @text: @rose-pine[@@lookup][@text]; 28 | @love: @rose-pine[@@lookup][@love]; 29 | @gold: @rose-pine[@@lookup][@gold]; 30 | @rose: @rose-pine[@@lookup][@rose]; 31 | @pine: @rose-pine[@@lookup][@pine]; 32 | @foam: @rose-pine[@@lookup][@foam]; 33 | @iris: @rose-pine[@@lookup][@iris]; 34 | @highlightLow: @rose-pine[@@lookup][@highlightLow]; 35 | @highlightMed: @rose-pine[@@lookup][@highlightMed]; 36 | @highlightHigh: @rose-pine[@@lookup][@highlightHigh]; 37 | @accent-color: @rose-pine[@@lookup][@@accentColor]; 38 | 39 | svg.logo { 40 | @accentH: hue(@accent-color); 41 | @protonH: hue(#6d4aff); 42 | 43 | .replaceColor(@org, @property) { 44 | &[@{property}="@{org}"] { 45 | @hDiff: @protonH - hue(@org); 46 | @{property}: hsl( 47 | @accentH - @hDiff, 48 | saturation(@org) - 30%, 49 | lightness(@org) 50 | ); 51 | } 52 | } 53 | 54 | /* deno-fmt-ignore */ 55 | > path { 56 | .replaceColor(#B8D7FF, fill); 57 | .replaceColor(#8F69FF, fill); 58 | } 59 | 60 | /* deno-fmt-ignore */ 61 | > defs stop { 62 | .replaceColor(#E3D9FF, stop-color); 63 | .replaceColor(#7341FF, stop-color); 64 | .replaceColor(#6D4AFF, stop-color); 65 | .replaceColor(#AA8EFF, stop-color); 66 | .replaceColor(#06B8FF, stop-color); 67 | .replaceColor(#BFE8FF, stop-color); 68 | .replaceColor(#BFABFF, stop-color); 69 | .replaceColor(#FF50C3, stop-color); 70 | .replaceColor(#B487FF, stop-color); 71 | .replaceColor(#FFC8FF, stop-color); 72 | .replaceColor(#8EFFEE, stop-color); 73 | .replaceColor(#C9C7FF, stop-color); 74 | .replaceColor(#00F0C3, stop-color); 75 | .replaceColor(#FFD580, stop-color); 76 | .replaceColor(#F6C592, stop-color); 77 | .replaceColor(#EBB6A2, stop-color); 78 | .replaceColor(#DFA5AF, stop-color); 79 | .replaceColor(#D397BE, stop-color); 80 | .replaceColor(#C486CB, stop-color); 81 | .replaceColor(#B578D9, stop-color); 82 | .replaceColor(#A166E5, stop-color); 83 | .replaceColor(#8B57F2, stop-color); 84 | .replaceColor(#704CFF, stop-color); 85 | .replaceColor(#B39FFB, stop-color); 86 | .replaceColor(#FFE8DB, stop-color); 87 | } 88 | } 89 | 90 | &, 91 | .ui-prominent, 92 | .ui-standard { 93 | .lightenOrDarken(@color, @value) { 94 | @result: if( 95 | @variant = latte, 96 | lighten(@color, @value), 97 | darken(@color, @value) 98 | ); 99 | } 100 | 101 | --primary: @accent-color; 102 | --primary-contrast: @surface; 103 | --signal-danger-minor-2: .lightenOrDarken(@love, 40%)[@result]; 104 | --signal-danger-minor-1: .lightenOrDarken(@love, 30%)[@result]; 105 | --signal-danger: @love; 106 | --signal-danger-major-1: saturate(@love, 40%); 107 | --signal-danger-major-2: saturate(@love, 30%); 108 | --signal-danger-major-3: saturate(@love, 20%); 109 | --signal-danger-contrast: @surface; 110 | --signal-warning-minor-2: .lightenOrDarken(@rose, 40%)[@result]; 111 | --signal-warning-minor-1: .lightenOrDarken(@rose, 30%)[@result]; 112 | --signal-warning: @love; 113 | --signal-warning-major-1: saturate(@rose, 40%); 114 | --signal-warning-major-2: saturate(@rose, 30%); 115 | --signal-warning-major-3: saturate(@rose, 20%); 116 | --signal-warning-contrast: @surface; 117 | --signal-success-minor-2: .lightenOrDarken(@pine, 40%)[@result]; 118 | --signal-success-minor-1: .lightenOrDarken(@pine, 30%)[@result]; 119 | --signal-success: @pine; 120 | --signal-success-major-1: saturate(@pine, 40%); 121 | --signal-success-major-2: saturate(@pine, 30%); 122 | --signal-success-major-3: saturate(@pine, 20%); 123 | --signal-success-contrast: @surface; 124 | --signal-info-minor-2: .lightenOrDarken(@pine, 40%)[@result]; 125 | --signal-info-minor-1: .lightenOrDarken(@pine, 30%)[@result]; 126 | --signal-info: @pine; 127 | --signal-info-major-1: saturate(@pine, 40%); 128 | --signal-info-major-2: saturate(@pine, 30%); 129 | --signal-info-major-3: saturate(@pine, 20%); 130 | --signal-info-contrast: @surface; 131 | --interaction-norm-minor-2: .lightenOrDarken(@accent-color, 40%)[@result]; 132 | --interaction-norm-minor-1: .lightenOrDarken(@accent-color, 30%)[@result]; 133 | --interaction-norm: @accent-color; 134 | --interaction-norm-major-1: saturate(@accent-color, 30%); 135 | --interaction-norm-major-2: saturate(@accent-color, 20%); 136 | --interaction-norm-major-3: saturate(@accent-color, 10%); 137 | --interaction-weak-minor-2: darken(@surface, 50%); 138 | --interaction-weak-minor-1: darken(@surface, 30%); 139 | --interaction-weak: @surface; 140 | --interaction-weak-major-1: lighten(@surface, 10%); 141 | --interaction-weak-major-2: lighten(@surface, 20%); 142 | --interaction-weak-major-3: lighten(@surface, 30%); 143 | --interaction-weak-contrast: @text; 144 | --interaction-norm-contrast: @text; 145 | --text-norm: @text; 146 | --text-weak: @text; 147 | --text-hint: @text; 148 | --text-disabled: @overlay; 149 | --text-invert: @highlightHigh; 150 | --field-norm: @overlay; 151 | --field-hover: @overlay; 152 | --field-disabled: @overlay; 153 | --field-focus: @accent-color; 154 | --field-highlight: fadeout(@accent-color, 30%); 155 | --focus-outline: @accent-color; 156 | --focus-ring: fadeout(@accent-color, 60%); 157 | --border-norm: @overlay; 158 | --border-weak: @overlay; 159 | --background-norm: @base; 160 | --background-lowered: @surface; 161 | --background-weak: fadeout(@highlightHigh, 80%); 162 | --background-strong: @highlightHigh; 163 | --background-invert: @text; 164 | --background-elevated: @surface; 165 | --interaction-default: transparent; 166 | --interaction-default-hover: fadeout(@highlightMed, 40%); 167 | --interaction-default-active: fadeout(@highlightMed, 60%); 168 | --shadow-norm-opacity: 0.5; 169 | --shadow-lifted-opacity: 0.75; 170 | --backdrop-norm: fadeout(@highlightHigh, 50%); 171 | --optional-scrollbar-thumb-color: @surface; 172 | --optional-scrollbar-thumb-hover-color: @surface; 173 | --optional-link-norm: var(--interaction-norm-major-1); 174 | --optional-link-hover: var(--interaction-norm-major-2); 175 | --optional-link-active: var(--interaction-norm-major-3); 176 | --optional-email-item-unread-background-color: @surface; 177 | --optional-email-item-read-background-color: var(--background-norm); 178 | --optional-email-item-read-text-color: var(--text-weak); 179 | --optional-mini-calendar-today-color: @text; 180 | --optional-logo-text-proton-color: @text; 181 | --optional-logo-text-product-color: @text; 182 | --favorite-icon-color: @rose; 183 | --button-default-background-color: @accent-color; 184 | --interaction-norm-minor-2: lighten(@accent-color, 5%); 185 | 186 | & when (@variant = dawn) { 187 | --interaction-norm-contrast: @rose-pine[@main][@text]; 188 | } 189 | } 190 | 191 | .ui-prominent { 192 | --background-norm: @surface; 193 | --background-weak: @base; 194 | --background-strong: @highlightHigh; 195 | } 196 | 197 | .button-promotion { 198 | --upgrade-color-stop-1: @love; 199 | --upgrade-color-stop-2: @pine; 200 | } 201 | 202 | & when (@hidePromotionButton = 1) { 203 | .button-promotion { 204 | display: none; 205 | } 206 | } 207 | 208 | .item-container-row:not(.item-is-selected):hover, 209 | .item-container:not(.item-is-selected):hover { 210 | box-shadow: none; 211 | background-color: var(--navigation-current-item-background-color); 212 | color: var(--email-item-unread-text-color); 213 | } 214 | 215 | /* makes text readable on accented backgrounds */ 216 | .item-is-selected, 217 | .button-solid-norm { 218 | color: @base; 219 | } 220 | 221 | /* the "Official" badge; setting the background to overlay makes it readable when selected */ 222 | .label-proton-badge--selected { 223 | background-color: @overlay; 224 | } 225 | } 226 | } 227 | 228 | /* deno-fmt-ignore */ 229 | @rose-pine: { 230 | @main: { @base: #191724; @surface: #1f1d2e; @overlay: #26233a; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ebbcba; @pine: #31748f; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #21202e; @highlightMed: #403d52; @highlightHigh: #524f67; }; 231 | @moon: { @base: #232136; @surface: #2a273f; @overlay: #393552; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ea9a97; @pine: #3e8fb0; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #2a283e; @highlightMed: #44415a; @highlightHigh: #56526e; }; 232 | @dawn: { @base: #faf4ed; @surface: #fffaf3; @overlay: #f2e9e1; @muted: #9893a5; @subtle: #797593; @text: #575279; @love: #b4637a; @gold: #ea9d34; @rose: #d7827e; @pine: #286983; @foam: #56949f; @iris: #907aa9; @highlightLow: #f4ede8; @highlightMed: #dfdad9; @highlightHigh: #cecacd; }; 233 | }; 234 | -------------------------------------------------------------------------------- /styles/chatgpt/rose-pine.user.less: -------------------------------------------------------------------------------- 1 | /* ==UserStyle== 2 | @name Rosé Pine for ChatGPT 3 | @description Soho vibes for ChatGPT 4 | @version 1.0.0 5 | @license MIT 6 | @author Adrian Karlén (https://github.com/adriankarlen/) 7 | @namespace https://github.com/rose-pine/ 8 | @homepageURL https://github.com/rose-pine/userstyles 9 | @updateURL https://github.com/rose-pine/userstyles/raw/main/styles/chatgpt/rose-pine.user.less 10 | @preprocessor less 11 | 12 | @var select variant "Variant" ["main:Rosé Pine*", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn"] 13 | ==/UserStyle== */ 14 | 15 | @-moz-document domain("chatgpt.com") { 16 | .light body, 17 | .light html { 18 | #rose-pine(@variant); 19 | } 20 | 21 | :root, 22 | .dark body, 23 | .dark html { 24 | #rose-pine(@variant); 25 | } 26 | 27 | #rose-pine(@lookup) { 28 | @base: @rose-pine[@@lookup][@base]; 29 | @surface: @rose-pine[@@lookup][@surface]; 30 | @overlay: @rose-pine[@@lookup][@overlay]; 31 | @muted: @rose-pine[@@lookup][@muted]; 32 | @subtle: @rose-pine[@@lookup][@subtle]; 33 | @text: @rose-pine[@@lookup][@text]; 34 | @love: @rose-pine[@@lookup][@love]; 35 | @gold: @rose-pine[@@lookup][@gold]; 36 | @rose: @rose-pine[@@lookup][@rose]; 37 | @pine: @rose-pine[@@lookup][@pine]; 38 | @foam: @rose-pine[@@lookup][@foam]; 39 | @iris: @rose-pine[@@lookup][@iris]; 40 | @highlightLow: @rose-pine[@@lookup][@highlightLow]; 41 | @highlightMed: @rose-pine[@@lookup][@highlightMed]; 42 | @highlightHigh: @rose-pine[@@lookup][@highlightHigh]; 43 | 44 | /* Main page */ 45 | div[class*="bg-gray-"]:not([class*="bg-gray-900"]):not( 46 | [class*="bg-gray-700"] 47 | ):not(.bg-black .bg-gray-800), 48 | div[class*="bg-vert-dark-gradient"] { 49 | background: @base !important; 50 | } 51 | 52 | .dark body, 53 | .dark html, 54 | body, 55 | html { 56 | background-color: @base; 57 | } 58 | 59 | /* Sidebar */ 60 | [class*=" bg-gray-900"], 61 | [class*=" dark:bg-gray-900"] { 62 | background-color: @overlay !important; 63 | } 64 | 65 | [class*=" bg-gray-800"], 66 | [class*=" dark:bg-gray-800"] { 67 | background-color: @highlightMed !important; 68 | } 69 | 70 | .bg-gradient-to-l { 71 | background: none; 72 | } 73 | 74 | /* Upgrade Plan */ 75 | .shim-yellow { 76 | display: none; 77 | } 78 | 79 | /* Search */ 80 | div[class*="bg-gray-700"] { 81 | background-color: @highlightMed !important; 82 | } 83 | 84 | [class*="text-gray-"], 85 | [class*="text-white"]:not(.btn-primary .text-white) { 86 | color: @text !important; 87 | } 88 | 89 | [class*=" border-"] { 90 | border-color: @overlay !important; 91 | } 92 | 93 | input::placeholder, 94 | textarea::placeholder { 95 | color: @muted; 96 | } 97 | 98 | input, 99 | textarea { 100 | color: @text; 101 | } 102 | 103 | [class*="bg-white/5"] { 104 | background-color: @highlightHigh !important; 105 | } 106 | 107 | .px-3.py-3, 108 | .pt-3 { 109 | background: @overlay !important; 110 | } 111 | 112 | .px-3.py-3:hover { 113 | background: @base !important; 114 | } 115 | /* Bot messages */ 116 | .prose { 117 | --tw-prose-body: @text !important; 118 | --tw-prose-bold: @text !important; 119 | --tw-prose-code: @text !important; 120 | --tw-prose-links: @text !important; 121 | --tw-prose-headings: @highlightHigh !important; 122 | } 123 | 124 | .bg-black { 125 | background-color: @surface !important; 126 | } 127 | 128 | .bg-black .bg-gray-800 { 129 | background-color: @highlightLow !important; 130 | } 131 | 132 | /* Buttons */ 133 | .btn-neutral { 134 | background-color: @highlightMed !important; 135 | color: @text !important; 136 | } 137 | 138 | .btn-primary { 139 | background-color: @pine !important; 140 | color: @surface !important; 141 | } 142 | 143 | .btn-primary .text-white { 144 | color: @surface !important; 145 | } 146 | 147 | .btn-danger { 148 | background-color: @love !important; 149 | color: @surface !important; 150 | } 151 | 152 | .text-2xl { 153 | color: @text !important; 154 | } 155 | 156 | .dark [class*="bg-yellow-"] { 157 | color: @surface !important; 158 | } 159 | 160 | .light [class*="bg-yellow-"] { 161 | color: @text !important; 162 | } 163 | 164 | [class*="text-green"] { 165 | color: @pine !important; 166 | } 167 | 168 | /* Code blocks */ 169 | pre code.hljs { 170 | display: block; 171 | overflow-x: auto; 172 | padding: 1em; 173 | } 174 | 175 | code.hljs { 176 | padding: 3px 5px; 177 | } 178 | 179 | .hljs { 180 | background: @overlay; 181 | } 182 | 183 | .hljs, 184 | .hljs-subst { 185 | color: @text; 186 | } 187 | 188 | .hljs-selector-tag { 189 | color: @foam; 190 | } 191 | 192 | .hljs-selector-id { 193 | color: @iris; 194 | font-weight: 700; 195 | } 196 | 197 | .hljs-selector-attr, 198 | .hljs-selector-class { 199 | color: @iris; 200 | } 201 | 202 | .hljs-property, 203 | .hljs-selector-pseudo { 204 | color: @rose; 205 | } 206 | 207 | .hljs-addition { 208 | background-color: rgba(156, 207, 216, 0.5); 209 | } 210 | 211 | .hljs-deletion { 212 | background-color: rgba(235, 111, 146, 0.5); 213 | } 214 | 215 | .hljs-built_in, 216 | .hljs-class, 217 | .hljs-type { 218 | color: @iris; 219 | } 220 | 221 | .hljs-function, 222 | .hljs-function > .hljs-title, 223 | .hljs-title.hljs-function { 224 | color: @rose; 225 | } 226 | 227 | .hljs-keyword, 228 | .hljs-literal, 229 | .hljs-symbol { 230 | color: @foam; 231 | } 232 | 233 | .hljs-number { 234 | color: @gold; 235 | } 236 | 237 | .hljs-regexp { 238 | color: @gold; 239 | } 240 | 241 | .hljs-string { 242 | color: @foam; 243 | } 244 | 245 | .hljs-title { 246 | color: @iris; 247 | } 248 | 249 | .hljs-params { 250 | color: @text; 251 | } 252 | 253 | .hljs-bullet { 254 | color: @foam; 255 | } 256 | 257 | .hljs-code { 258 | color: @iris; 259 | } 260 | 261 | .hljs-emphasis { 262 | font-style: italic; 263 | } 264 | 265 | .hljs-formula { 266 | color: @iris; 267 | } 268 | 269 | .hljs-strong { 270 | font-weight: 700; 271 | } 272 | 273 | .hljs-link:hover { 274 | text-decoration: underline; 275 | } 276 | 277 | .hljs-comment, 278 | .hljs-quote { 279 | color: @muted; 280 | } 281 | 282 | .hljs-doctag { 283 | color: @iris; 284 | } 285 | 286 | .hljs-meta, 287 | .hljs-meta .hljs-keyword { 288 | color: @pine; 289 | } 290 | 291 | .hljs-meta .hljs-string { 292 | color: @foam; 293 | } 294 | 295 | .hljs-attr { 296 | color: @iris; 297 | } 298 | 299 | .hljs-attribute { 300 | color: @text; 301 | } 302 | 303 | .hljs-name { 304 | color: @foam; 305 | } 306 | 307 | .hljs-section { 308 | color: @rose; 309 | } 310 | 311 | .hljs-tag { 312 | color: @foam; 313 | } 314 | 315 | .hljs-template-variable, 316 | .hljs-variable { 317 | color: @text; 318 | } 319 | 320 | .hljs-template-tag { 321 | color: @pine; 322 | } 323 | 324 | .language-abnf .hljs-attribute { 325 | color: @rose; 326 | } 327 | 328 | .language-abnf .hljs-symbol { 329 | color: @gold; 330 | } 331 | 332 | .language-apache .hljs-attribute { 333 | color: @rose; 334 | } 335 | 336 | .language-apache .hljs-section { 337 | color: @foam; 338 | } 339 | 340 | .language-arduino .hljs-built_in { 341 | color: @rose; 342 | } 343 | 344 | .language-aspectj .hljs-meta { 345 | color: @love; 346 | } 347 | 348 | .language-aspectj > .hljs-title { 349 | color: @rose; 350 | } 351 | 352 | .language-bnf .hljs-attribute { 353 | color: @iris; 354 | } 355 | 356 | .language-clojure .hljs-name { 357 | color: @rose; 358 | } 359 | 360 | .language-clojure .hljs-symbol { 361 | color: @gold; 362 | } 363 | 364 | .language-coq .hljs-built_in { 365 | color: @rose; 366 | } 367 | 368 | .language-cpp .hljs-meta .hljs-string { 369 | color: @iris; 370 | } 371 | 372 | .language-css .hljs-built_in { 373 | color: @rose; 374 | } 375 | 376 | .language-css .hljs-keyword { 377 | color: @love; 378 | } 379 | 380 | .language-diff .hljs-meta, 381 | .language-ebnf .hljs-attribute { 382 | color: @iris; 383 | } 384 | 385 | .language-glsl .hljs-built_in { 386 | color: @rose; 387 | } 388 | 389 | .language-groovy .hljs-meta:not(:first-child), 390 | .language-haxe .hljs-meta, 391 | .language-java .hljs-meta { 392 | color: @love; 393 | } 394 | 395 | .language-ldif .hljs-attribute { 396 | color: @iris; 397 | } 398 | 399 | .language-lisp .hljs-name, 400 | .language-lua .hljs-built_in, 401 | .language-moonscript .hljs-built_in, 402 | .language-nginx .hljs-attribute { 403 | color: @rose; 404 | } 405 | 406 | .language-nginx .hljs-section { 407 | color: @pine; 408 | } 409 | 410 | .language-pf .hljs-built_in, 411 | .language-processing .hljs-built_in { 412 | color: @rose; 413 | } 414 | 415 | .language-scss .hljs-keyword, 416 | .language-stylus .hljs-keyword { 417 | color: @foam; 418 | } 419 | 420 | .language-swift .hljs-meta { 421 | color: @love; 422 | } 423 | 424 | .language-vim .hljs-built_in { 425 | color: @rose; 426 | font-style: italic; 427 | } 428 | 429 | .language-yaml .hljs-meta { 430 | color: @love; 431 | } 432 | } 433 | } 434 | 435 | /* deno-fmt-ignore */ 436 | @rose-pine: { 437 | @main: { @base: #191724; @surface: #1f1d2e; @overlay: #26233a; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ebbcba; @pine: #31748f; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #21202e; @highlightMed: #403d52; @highlightHigh: #524f67; }; 438 | @moon: { @base: #232136; @surface: #2a273f; @overlay: #393552; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ea9a97; @pine: #3e8fb0; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #2a283e; @highlightMed: #44415a; @highlightHigh: #56526e; }; 439 | @dawn: { @base: #faf4ed; @surface: #fffaf3; @overlay: #f2e9e1; @muted: #9893a5; @subtle: #797593; @text: #575279; @love: #b4637a; @gold: #ea9d34; @rose: #d7827e; @pine: #286983; @foam: #56949f; @iris: #907aa9; @highlightLow: #f4ede8; @highlightMed: #dfdad9; @highlightHigh: #cecacd; }; 440 | }; 441 | -------------------------------------------------------------------------------- /styles/wikiwand/rose-pine.user.less: -------------------------------------------------------------------------------- 1 | /* ==UserStyle== 2 | @name Rosé Pine for Wikiwand 3 | @description Soho vibes for Wikiwand 4 | @version 1.0.0 5 | @license MIT 6 | @author Adrian Karlén (https://github.com/adriankarlen/) 7 | @namespace https://github.com/rose-pine/ 8 | @homepageURL https://github.com/rose-pine/userstyles 9 | @updateURL https://github.com/rose-pine/userstyles/raw/main/styles/wikiwand/rose-pine.user.less 10 | @preprocessor less 11 | 12 | @var select lightVariant "Light Variant" ["main:Rosé Pine", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn*"] 13 | @var select darkVariant "Dark Variant" ["main:Rosé Pine*", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn"] 14 | @var select accentColor "Accent" ["love:Love*", "gold:Gold", "rose:Rose", "pine:Pine", "foam:Foam", "iris:Iris"] 15 | ==/UserStyle== */ 16 | 17 | @-moz-document domain("wikiwand.com") { 18 | .root_light__Inhun { 19 | #rose-pine(@lightVariant, @accentColor); 20 | } 21 | 22 | .root_earth__3sDLo, 23 | .root_dark__oGh5X, 24 | .root_auto__Xg3qF, 25 | .root_grey__eKz_h { 26 | #rose-pine(@darkVariant, @accentColor); 27 | } 28 | 29 | #rose-pine(@lookup, @accent) { 30 | @base: @rose-pine[@@lookup][@base]; 31 | @surface: @rose-pine[@@lookup][@surface]; 32 | @overlay: @rose-pine[@@lookup][@overlay]; 33 | @muted: @rose-pine[@@lookup][@muted]; 34 | @subtle: @rose-pine[@@lookup][@subtle]; 35 | @text: @rose-pine[@@lookup][@text]; 36 | @love: @rose-pine[@@lookup][@love]; 37 | @gold: @rose-pine[@@lookup][@gold]; 38 | @rose: @rose-pine[@@lookup][@rose]; 39 | @pine: @rose-pine[@@lookup][@pine]; 40 | @foam: @rose-pine[@@lookup][@foam]; 41 | @iris: @rose-pine[@@lookup][@iris]; 42 | @highlightLow: @rose-pine[@@lookup][@highlightLow]; 43 | @highlightMed: @rose-pine[@@lookup][@highlightMed]; 44 | @highlightHigh: @rose-pine[@@lookup][@highlightHigh]; 45 | @accent-color: @rose-pine[@@lookup][@@accentColor]; 46 | 47 | & { 48 | --color-bg: @base; 49 | --color-text: @text; 50 | --color-grey: @subtle; 51 | --color-table: @surface; 52 | --color-table-border: @surface; 53 | --color-link: @accent-color; 54 | --toc-bg: @surface; 55 | --toc-text: @text; 56 | --toc-border: @highlightLow; 57 | --tag-bg: @surface; 58 | --tag-text: @muted; 59 | --navbar-bg: @highlightLow; 60 | --navbar-border: @overlay; 61 | --navbar-shadow: 62 | 0px 0px 2px rgba(0, 0, 0, 0.2), 0px 5px 10px rgba(0, 0, 0, 0.3); 63 | } 64 | .popover_arrow__pQSsX::before { 65 | background-color: @highlightMed; 66 | border: 1px solid @highlightLow; 67 | } 68 | *[class*="dropdown_item"] { 69 | color: @text; 70 | } 71 | .popover_popover__jgyGp { 72 | background-color: @highlightMed; 73 | border: 1px solid @highlightLow; 74 | border-radius: 0.625em; 75 | box-shadow: 0 0 2px rgba(0, 0, 0, 0.1), 0 5px 10px rgba(0, 0, 0, 0.1); 76 | } 77 | .draggable_wrapper__YB014 { 78 | background-color: @highlightMed; 79 | border: 1px solid @surface; 80 | box-shadow: 0 0 2px rgba(0, 0, 0, 0.2), 0 10px 20px rgba(0, 0, 0, 0.3); 81 | color: @text; 82 | } 83 | .checkbox_checkbox__uXwIZ { 84 | width: 1.125em; 85 | height: 1.125em; 86 | border-radius: 0.125em; 87 | border: 1px solid @highlightMed; 88 | background-color: @highlightLow; 89 | position: relative; 90 | } 91 | .checkbox_checkbox__uXwIZ::before { 92 | background-color: @accent-color; 93 | } 94 | svg.audio_icon__eZ5Bx { 95 | color: @text; 96 | } 97 | .checkbox_label__V5gon, 98 | .audio_select__kmOPL { 99 | color: @subtle !important; 100 | } 101 | .draggable_header__bfxdq { 102 | border: 1px solid @highlightMed !important; 103 | } 104 | .footer_donation__Cje_Q { 105 | display: none !important; 106 | } 107 | .dropdown_content__4NAxl { 108 | background-color: @highlightMed; 109 | border: 1px solid @highlightLow; 110 | } 111 | p.settings_setLabel__NrVBx:nth-child(3), 112 | article.settings_section__vRaq_:nth-child(1) { 113 | color: @text; 114 | } 115 | .toggle_label__y7mDQ { 116 | color: @text; 117 | } 118 | .toggle_bg__Qn4Oc { 119 | background-color: @accent-color; 120 | } 121 | .toggle_label__y7mDQ.toggle_active__l_k3F { 122 | color: @base; 123 | } 124 | .toggle_label__y7mDQ:not(.toggle_active__l_k3F):hover { 125 | color: @accent-color; 126 | } 127 | .themeBtn_wrapper__KTkHk.themeBtn_active__4gb_I, 128 | .themeBtn_wrapper__KTkHk:hover { 129 | color: @accent-color; 130 | } 131 | .themeBtn_label__GyvdH { 132 | color: @subtle; 133 | } 134 | .toggle_toggle__jzkKG { 135 | background-color: @highlightLow; 136 | } 137 | .settings_reset__GO2x4 { 138 | border-top: 1px solid @highlightLow; 139 | } 140 | .settings_resetBtn__3yLrG { 141 | color: @text; 142 | } 143 | .settings_resetBtn__3yLrG:not(.settings_disabled__7X7Nu):hover { 144 | color: @love; 145 | } 146 | .themeBtn_label__GyvdH span { 147 | background-color: @highlightLow; 148 | border: 1px solid @highlightLow; 149 | } 150 | .themeBtn_wrapper__KTkHk.themeBtn_active__4gb_I 151 | .themeBtn_demoWrapper__fdi7G { 152 | border: 1px solid @accent-color !important; 153 | } 154 | div.themeBtn_wrapper__KTkHk:nth-child(3) 155 | > p:nth-child(2) 156 | > span:nth-child(1)::before { 157 | background-color: @accent-color; 158 | } 159 | .item_item__uLhiz.item_active__4kaIV { 160 | color: @accent-color; 161 | } 162 | .item_item__uLhiz.item_active__4kaIV, 163 | .item_item__uLhiz:hover { 164 | background-color: @highlightLow; 165 | } 166 | .languages_wrapper__1Ad3R { 167 | color: @subtle; 168 | } 169 | .input_input__uGeT_ { 170 | color: @text; 171 | background-color: @highlightMed; 172 | border-radius: 4px; 173 | } 174 | .input_wrapper__aeypb { 175 | border: none !important; 176 | } 177 | .action_action___vLQg { 178 | color: @accent-color; 179 | } 180 | .share_btn__9IJpe { 181 | color: @text; 182 | background-color: @highlightLow; 183 | border: @highlightLow; 184 | } 185 | .share_btn__9IJpe span { 186 | color: @text; 187 | } 188 | .footer_socialWrapper__R1iSQ *:hover, 189 | .footer_link__TA4rr:hover { 190 | color: @accent-color; 191 | } 192 | .list_wrapper__TYM2l, 193 | .input_wrapper__aeypb { 194 | background-color: @highlightMed; 195 | color: @text; 196 | } 197 | .input_wrapper__aeypb * { 198 | color: @text; 199 | } 200 | .list_item_VVizU:hover { 201 | background-color: @highlightLow !important; 202 | } 203 | .search_header__gqnk7.search_article__L3Khv { 204 | background: transparent; 205 | } 206 | .item_item__jj0Ue { 207 | color: @text; 208 | } 209 | .item_item__jj0Ue:hover { 210 | background-color: @highlightLow !important; 211 | border-color: @accent-color; 212 | } 213 | .modal_header__t094_ { 214 | border-color: @highlightMed; 215 | color: @text; 216 | } 217 | .list_item__VVizU.list_active__ahAYX, 218 | .list_item__VVizU:hover { 219 | background-color: @highlightLow; 220 | } 221 | .button_btn__ln0Hv { 222 | color: @accent-color; 223 | background-color: @surface; 224 | } 225 | 226 | .navbarMobile_footer__y5Kwi.navbarMobile_dark__eIcxf 227 | .navbarMobile_icons__tirr9, 228 | .navbarMobile_footer__y5Kwi.navbarMobile_dark__eIcxf 229 | .navbarMobile_toc__iPfvP, 230 | .navbarMobile_footer__y5Kwi.navbarMobile_grey__5dmnP 231 | .navbarMobile_icons__tirr9, 232 | .navbarMobile_footer__y5Kwi.navbarMobile_grey__5dmnP 233 | .navbarMobile_toc__iPfvP { 234 | background-color: @highlightMed; 235 | color: @text; 236 | } 237 | .tooltip_tooltip_QQr79.tooltip_dark_ZWBHd, 238 | .tooltip_tooltip_QQr79.tooltip_dark_ZWBHd > * > * { 239 | background-color: @highlightLow !important; 240 | } 241 | .dropdown_item__yrn67:hover { 242 | background-color: @highlightLow; 243 | color: @accent-color; 244 | border-color: @accent-color !important; 245 | } 246 | .audio_dot__jeWOr.audio_active__li6PM { 247 | background-color: @accent-color; 248 | } 249 | .audio_dot__jeWOr { 250 | background-color: @highlightLow; 251 | box-shadow: 6.666px 0 0 0px @highlightLow; 252 | border-radius: 0px; 253 | border: 1px solid @highlightLow !important; 254 | } 255 | .gallery_icon__7LOBi { 256 | background-color: @highlightLow; 257 | color: @subtle; 258 | } 259 | .gallery_disable__1QuKw { 260 | background-color: @surface; 261 | } 262 | .gallery_icon__7LOBi:hover { 263 | background-color: @highlightMed; 264 | color: @accent-color; 265 | } 266 | .gallery_nav__BEeM3 { 267 | background-color: @base; 268 | } 269 | .image_wrapper__Dq3Jq { 270 | background-color: @highlightLow; 271 | } 272 | .stage_caption__BvSjQ { 273 | color: @subtle; 274 | } 275 | .gallery_wrapper__1a7bM, 276 | .thumbnails_wrapper__1Q5be { 277 | background-color: @overlay !important; 278 | } 279 | .thumbnails_thumbnail__H4tNf { 280 | background-color: #fafafa; 281 | border-radius: 4px; 282 | padding: 4px; 283 | } 284 | 285 | .list_loading__j43_R { 286 | color: @accent-color; 287 | } 288 | .info_wrapper__HpdJH, 289 | .info_arrow__ehjUI { 290 | background-color: @highlightMed; 291 | border-color: @highlightMed; 292 | } 293 | 294 | .info_wrapper__HpdJH::after { 295 | background: linear-gradient( 296 | 180deg, 297 | hsla(0, 0%, 98%, 0), 298 | @highlightMed 90% 299 | ); 300 | } 301 | .list_item__VVizU.list_active__ahAYX { 302 | color: @accent-color; 303 | } 304 | .item_star__arENF { 305 | color: @subtle; 306 | } 307 | .item_star__arENF.item_active__4kaIV { 308 | color: @gold; 309 | } 310 | .action_action___vLQg.action_remove__z6g_k { 311 | color: @text; 312 | } 313 | .action_action___vLQg:not(.action_limit__u0EDs):hover.action_remove__z6g_k { 314 | color: @accent-color; 315 | } 316 | .item_remove__f1A5k { 317 | background-color: @highlightMed; 318 | } 319 | .item_remove__f1A5k span, 320 | .item_remove__f1A5k svg { 321 | color: @love; 322 | } 323 | caption { 324 | background-color: @surface !important; 325 | border-color: @surface !important; 326 | } 327 | .summary_wordtuneWrapper__21QxG > img:nth-child(2) { 328 | background-color: @accent-color; 329 | } 330 | code > a { 331 | color: @accent-color !important; 332 | } 333 | table * { 334 | background-color: @surface !important; 335 | color: @text !important; 336 | border-color: @highlightLow !important; 337 | } 338 | table { 339 | background-color: @surface !important; 340 | border: none !important; 341 | } 342 | a.wl { 343 | color: @accent-color !important; 344 | } 345 | .summary_footer__Lk6z7 > span:nth-child(1), 346 | svg.icon_icon__0vohI, 347 | .icon_icon__0vohI.input_icon__He3sV, 348 | svg.icon_icon__0vohI:nth-child(2) > use:nth-child(1) { 349 | color: @accent-color; 350 | fill: @accent-color; 351 | } 352 | .wikitable tr::before { 353 | background-color: @surface !important; 354 | border-color: @highlightLow !important; 355 | } 356 | } 357 | } 358 | 359 | /* deno-fmt-ignore */ 360 | @rose-pine: { 361 | @main: { @base: #191724; @surface: #1f1d2e; @overlay: #26233a; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ebbcba; @pine: #31748f; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #21202e; @highlightMed: #403d52; @highlightHigh: #524f67; }; 362 | @moon: { @base: #232136; @surface: #2a273f; @overlay: #393552; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ea9a97; @pine: #3e8fb0; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #2a283e; @highlightMed: #44415a; @highlightHigh: #56526e; }; 363 | @dawn: { @base: #faf4ed; @surface: #fffaf3; @overlay: #f2e9e1; @muted: #9893a5; @subtle: #797593; @text: #575279; @love: #b4637a; @gold: #ea9d34; @rose: #d7827e; @pine: #286983; @foam: #56949f; @iris: #907aa9; @highlightLow: #f4ede8; @highlightMed: #dfdad9; @highlightHigh: #cecacd; }; 364 | }; 365 | -------------------------------------------------------------------------------- /styles/hetzner-cloud/rose-pine.user.less: -------------------------------------------------------------------------------- 1 | /* ==UserStyle== 2 | @name Rosé Pine for Hetzner Cloud 3 | @description Soho vibes for Hetzner Cloud 4 | @version 1.0.0 5 | @license MIT 6 | @author Rosé Pine (https://github.com/rose-pine) 7 | @namespace https://github.com/rose-pine 8 | @homepageURL https://github.com/rose-pine/userstyles 9 | @updateURL https://github.com/rose-pine/userstyles/raw/main/styles/hetzner-cloud/rose-pine.user.less 10 | @preprocessor less 11 | 12 | @var select lightVariant "Light Variant" ["main:Rosé Pine", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn*"] 13 | @var select darkVariant "Dark Variant" ["main:Rosé Pine*", "moon:Rosé Pine Moon", "dawn:Rosé Pine Dawn"] 14 | @var select accentColor "Accent" ["love:Love*", "gold:Gold", "rose:Rose", "pine:Pine", "foam:Foam", "iris:Iris"] 15 | ==/UserStyle== */ 16 | 17 | @-moz-document domain("console.hetzner.cloud") { 18 | :root { 19 | @media (prefers-color-scheme: light) { 20 | #rose-pine(@lightVariant); 21 | } 22 | @media (prefers-color-scheme: dark) { 23 | #rose-pine(@darkVariant); 24 | } 25 | } 26 | 27 | :root[data-theme="dark"] { 28 | #rose-pine(@darkVariant); 29 | } 30 | :root[data-theme="light"] { 31 | #rose-pine(@lightVariant); 32 | } 33 | 34 | #rose-pine(@variant) { 35 | @base: @rose-pine[@@variant][@base]; 36 | @surface: @rose-pine[@@variant][@surface]; 37 | @overlay: @rose-pine[@@variant][@overlay]; 38 | @muted: @rose-pine[@@variant][@muted]; 39 | @subtle: @rose-pine[@@variant][@subtle]; 40 | @text: @rose-pine[@@variant][@text]; 41 | @love: @rose-pine[@@variant][@love]; 42 | @gold: @rose-pine[@@variant][@gold]; 43 | @rose: @rose-pine[@@variant][@rose]; 44 | @pine: @rose-pine[@@variant][@pine]; 45 | @foam: @rose-pine[@@variant][@foam]; 46 | @iris: @rose-pine[@@variant][@iris]; 47 | @highlightLow: @rose-pine[@@variant][@highlightLow]; 48 | @highlightMed: @rose-pine[@@variant][@highlightMed]; 49 | @highlightHigh: @rose-pine[@@variant][@highlightHigh]; 50 | @accent-color: @rose-pine[@@variant][@@accentColor]; 51 | color-scheme: if(@variant = dawn, light, dark); 52 | 53 | ::selection { 54 | background-color: fade(@accent-color, 30%); 55 | } 56 | 57 | input, 58 | textarea { 59 | &::placeholder { 60 | color: @highlightLow !important; 61 | } 62 | } 63 | 64 | // TODO: find what selectors we need 65 | * { 66 | --color-primary: @accent-color; 67 | --color-primary--link: saturate(@accent-color, -10%); 68 | --color-primary--hover: saturate(@accent-color, 10%); 69 | --color-green--light: @pine; 70 | --color-green--background: saturate(@pine, -30%); 71 | --color-red-full--background: saturate(@love, -50%); 72 | --color-red-full--text: @love; 73 | --color-text: @text; 74 | --color-text--disabled: @muted; 75 | --color-back-link--hover: @subtle; 76 | --color-background--layer-0: @base; 77 | --color-background--layer-10: @base; 78 | --color-background--layer-20: @surface; 79 | --color-background--layer-30: @surface; 80 | --color-background--layer-40: @overlay; 81 | --color-background--layer-50: @overlay; 82 | --color-background--gradient-card-0: @highlightLow; 83 | --color-background--gradient-card-15: fade(@highlightLow, 8%); 84 | --color-background--overlay: rgba(0, 0, 0, 0.7); 85 | --color-background-empty-state: @highlightLow; 86 | --color-background-empty-state--side-sheet: darken(@highlightLow, 5%); 87 | --color-card-background: @surface; 88 | --color-card-background--disabled: darken(@surface, 5%); 89 | --color-card-background--hover: lighten(@surface, 3%); 90 | --color-card-background--light: lighten(@surface, 1%); 91 | --color-card--disabled-text: darken(@muted, 5%); 92 | --color-nav-primary-background--hover: darken(@overlay, 2%); 93 | --color-nav-primary-background--hover-mobile: @surface; 94 | --color-nav-primary-background--active: lighten(@overlay, 2%); 95 | --color-nav-primary-background--active-mobile: @highlightLow; 96 | --color-nav-primary--icon: lighten(@muted, 20%); 97 | --color-nav-secondary--hover: lighten(@muted, 30%); 98 | --color-nav-secondary--disabled: lighten(@muted, 10%); 99 | --color-nav-secondary--hover-background: lighten(@overlay, 2%); 100 | --color-mobile-menu-background: fade(@base, 80%); 101 | --color-form-border: lighten(@overlay, 10%); 102 | --color-form-border--disabled: lighten(@overlay, 2%); 103 | --color-form-addon-wrapper--background: lighten(@overlay, 2%); 104 | --color-input--background: darken(@base, 2%); 105 | --color-input--background-dropdown: lighten(@base, 3%); 106 | --color-input-hover--button: lighten(@overlay, 2%); 107 | --color-dropdown-background--hover: lighten(@overlay, 4%); 108 | --color-dropdown-background--active: lighten(@overlay, 2%); 109 | --color-dropdown-background--header: lighten(@base, 3%); 110 | --color-dropdown-background--disabled: lighten(@overlay, 2%); 111 | --color-dropdown-label-background: lighten(@overlay, 10%); 112 | --color-dropdown-button-grey: lighten(@overlay, 10%); 113 | --color-dropdown-button-grey--hover: lighten(@overlay, 13%); 114 | --color-dropdown-filter--background: lighten(@overlay, 2%); 115 | --color-dropdown-filter--hover: lighten(@overlay, 4%); 116 | --color-dropdown-filter--active: lighten(@overlay, 10%); 117 | --color-border: lighten(@overlay, 10%); 118 | --color-border--dark: lighten(@overlay, 2%); 119 | --color-button-secondary-background: lighten(@overlay, 10%); 120 | --color-button-secondary-background--hover: lighten(@overlay, 20%); 121 | --color-button-secondary-background--disabled: lighten(@overlay, 8%); 122 | --color-button-secondary-text--disabled: lighten(@muted, 10%); 123 | --color-button-secondary--seperator: lighten(@overlay, 2%); 124 | --color-button-vote: lighten(@overlay, 10%); 125 | --color-button-vote--hover: lighten(@overlay, 20%); 126 | --color-button-vote--voted: lighten(@overlay, 2%); 127 | --color-button-switch-background: lighten(@overlay, 2%); 128 | --color-button-switch-background--selected: lighten(@overlay, 10%); 129 | --color-button-switch-background--hover: lighten(@overlay, 20%); 130 | --color-button-switch--text-secondary: @text; 131 | --color-button-dashed-background--hover: darken(@base, 2%); 132 | --color-button-dashed-content: lighten(@overlay, 10%); 133 | --color-table-background--head: lighten(@base, 3%); 134 | --color-table-background--highlighted: lighten(@base, 3%); 135 | --color-badge--grey: lighten(@overlay, 10%); 136 | --color-status-badge-grey--background: lighten(@overlay, 2%); 137 | --color-status-badge-grey--color: lighten(@muted, 10%); 138 | --color-step-header-background: fade(@base, 60%); 139 | --color-stepper-sidenav--item-active: darken(@overlay, 2%); 140 | --color-ui-slider-background: lighten(@overlay, 2%); 141 | --color-ui-slider-background--limit: lighten(@base, 3%); 142 | --color-ui-slider-gradient--limit: darken(@overlay, 2%); 143 | --color-ui-slider--handle: lighten(@overlay, 10%); 144 | --color-select-box-border--default: lighten(@overlay, 2%); 145 | --color-select-box-border--hover: lighten(@overlay, 10%); 146 | --color-select-box-border--dropdown: @surface; 147 | --color-select-box-border--selected: @love; 148 | --color-select-box-background--default: @surface; 149 | --color-select-box-background--hover: lighten(@surface, 3%); 150 | --color-select-box-dropdown--default: lighten(@surface, 3%); 151 | --color-select-box-dropdown--hover: lighten(@overlay, 2%); 152 | --color-side-sheet--highlighted-header: darken(@overlay, 2%); 153 | --color-ghost-loading--fill: lighten(@base, 3%); 154 | --color-ghost-loading-highlight--gradient-0: fade(@highlightLow, 0%); 155 | --color-ghost-loading-highlight--gradient-20: fade(@highlightLow, 20%); 156 | --color-ghost-loading-highlight--gradient-60: fade(@highlightLow, 50%); 157 | --color-modal--background: @surface; 158 | --color-modal--overlay-mask: rgba(0, 0, 0, 0.7); 159 | --color-modal--footer: lighten(@base, 2%); 160 | --color-notification--info: lighten(@overlay, 10%); 161 | --color-load-mask-background--table: fade(@surface, 50%); 162 | --color-editable--hover: lighten(@muted, 20%); 163 | --color-spinner: lighten(@overlay, 2%); 164 | --color-click-to-copy-label: lighten(@overlay, 2%); 165 | --color-click-to-copy-label--snippet: @base; 166 | --color-box-code-background: darken(@overlay, 2%); 167 | --color-label-border: lighten(@overlay, 10%); 168 | --color-label-border--hover: lighten(@overlay, 13%); 169 | --color-label-key-background: lighten(@overlay, 10%); 170 | --color-label-key-background--hover: lighten(@overlay, 13%); 171 | --color-label-add-label-background--hover: lighten(@base, 3%); 172 | --color-tooltip--background: lighten(@overlay, 10%); 173 | --color-shadow: rgba(0, 0, 0, 0.35); 174 | --color-shadow--hover: rgba(0, 0, 0, 0.4); 175 | --color-ui-message-background: darken(@overlay, 2%); 176 | --color-ui-message-background--in-card: lighten(@overlay, 2%); 177 | --color-global-search-trigger: @base; 178 | --color-global-search-trigger--hover: lighten(@base, 2%); 179 | --color-search-result-background: @base; 180 | --color-search-result-background--hover: lighten(@base, 2%); 181 | --color-search-result-background--selected: @love; 182 | --color-search-result-background--busy: lighten(@love, 5%); 183 | --color-search-result-color: darken(@overlay, 2%); 184 | --color-search-result-color--hover: @text; 185 | --color-search-result-color--disabled: lighten(@muted, 10%); 186 | --color-search-result-color--match: @text; 187 | --color-search-result-color--match-disabled: lighten(@muted, 10%); 188 | --color-search-result-icon--background: darken(@love, 10%); 189 | --color-search-result-icon--background-hover: darken(@love, 10%); 190 | --color-search-result-icon--background-selected: fade(@text, 30%); 191 | --color-search-result-icon--background-busy: lighten(@love, 10%); 192 | --color-search-result-icon--color: @love; 193 | --color-search-result-icon--color-hover: @text; 194 | --color-dashboard-map: darken(@overlay, 2%); 195 | --color-dashboard-map--connection: @text; 196 | --color-pie-chart--empty: lighten(@overlay, 2%); 197 | --color-project-list-background--default: lighten(@base, 3%); 198 | --color-project-list-background--colored: darken(@base, 2%); 199 | --color-icon-fill: lighten(@muted, 10%); 200 | --color-icon-list-item--background: lighten(@muted, 10%); 201 | --color-icon-month-select--fill: lighten(@overlay, 2%); 202 | --color-icon-checkbox--fill: darken(@base, 5%); 203 | --color-icon-checkbox--fill-on-label: darken(@base, 5%); 204 | --color-icon-checkbox--stroke: lighten(@overlay, 10%); 205 | --color-icon-checkbox--stroke-on-label: lighten(@overlay, 10%); 206 | --color-icon-checkbox--hover: lighten(@overlay, 13%); 207 | --color-icon--map: lighten(@overlay, 10%); 208 | --color-icon-action--fill-active: lighten(@muted, 20%); 209 | --color-icon-action--background: lighten(@overlay, 1%); 210 | --color-icon-lock--background: darken(@overlay, 2%); 211 | --color-icon-volume-size-block-outline: lighten(@overlay, 10%); 212 | --color-icon-search: @text; 213 | --color-icon-activity--background: lighten(@overlay, 10%); 214 | --color-icon-activity--icon: @text; 215 | --color-icon-activity--status: lighten(@overlay, 10%); 216 | --color-illustration-snapshot--fill: lighten(@overlay, 10%); 217 | --color-illustration-sad-smiley--fill: lighten(@overlay, 10%); 218 | --color-logo-text: @text; 219 | --color-server-status-indicator-base--fill: @base; 220 | --color-server-status-indicator-base--stroke: @base; 221 | --color-server-status-indicator-off--fill: lighten(@overlay, 10%); 222 | --color-server-status-indicator-off--stroke: lighten(@overlay, 10%); 223 | --color-usage-preview-item-odd--background: darken(@overlay, 2%); 224 | --color-console--background: @surface; 225 | } 226 | 227 | .incidents-bar { 228 | background-color: @gold; 229 | } 230 | 231 | .detail-box__icon { 232 | color: @accent-color !important; 233 | } 234 | 235 | .variant--action .icon { 236 | --hc-icon-fill: @accent-color !important; 237 | } 238 | 239 | .datacenter-location--highlighted { 240 | fill: @accent-color !important; 241 | } 242 | } 243 | } 244 | 245 | /* deno-fmt-ignore */ 246 | @rose-pine: { 247 | @main: { @base: #191724; @surface: #1f1d2e; @overlay: #26233a; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ebbcba; @pine: #31748f; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #21202e; @highlightMed: #403d52; @highlightHigh: #524f67; }; 248 | @moon: { @base: #232136; @surface: #2a273f; @overlay: #393552; @muted: #6e6a86; @subtle: #908caa; @text: #e0def4; @love: #eb6f92; @gold: #f6c177; @rose: #ea9a97; @pine: #3e8fb0; @foam: #9ccfd8; @iris: #c4a7e7; @highlightLow: #2a283e; @highlightMed: #44415a; @highlightHigh: #56526e; }; 249 | @dawn: { @base: #faf4ed; @surface: #fffaf3; @overlay: #f2e9e1; @muted: #9893a5; @subtle: #797593; @text: #575279; @love: #b4637a; @gold: #ea9d34; @rose: #d7827e; @pine: #286983; @foam: #56949f; @iris: #907aa9; @highlightLow: #f4ede8; @highlightMed: #dfdad9; @highlightHigh: #cecacd; }; 250 | }; 251 | --------------------------------------------------------------------------------