├── .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 | 
23 | 
24 | 
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 | 
26 | 
27 | 
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 | 
25 | 
26 | 
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 | 
26 | 
27 | 
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 | 
26 | 
27 | 
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 | 
26 | 
27 | 
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 | 
26 | 
27 | 
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 | 
26 | 
27 | 
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 | 
26 | 
27 | 
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 | 
26 | 
27 | 
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 | |  |  |  |
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 |  
78 | 
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 |
--------------------------------------------------------------------------------