mirror of
https://github.com/satosprod/programming-mono.git
synced 2026-07-22 05:00:27 +00:00
first commit
This commit is contained in:
commit
88bb70891e
7 changed files with 908 additions and 0 deletions
21
LICENSE
Normal file
21
LICENSE
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2026 Satoshi Hara
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
172
README.md
Normal file
172
README.md
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
# Programming Mono
|
||||
|
||||
> A sharp, monospace Obsidian theme built for programmers — zero border radius, JetBrains Mono everywhere, and a restrained syntax-inspired accent palette for both dark and light mode.
|
||||
|
||||
**Author:** [SATOSprod](https://github.com/SATOSprod)
|
||||
**License:** Proprietary — see [LICENSE](./LICENSE)
|
||||
|
||||
---
|
||||
|
||||
## Preview
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Why Programming Mono?
|
||||
|
||||
Most Obsidian themes are built around rounded corners and a proportional UI font, which feels out of place for anyone who spends their day in a code editor. **Programming Mono** flips that: every corner is square, every font — interface, text, and code — is monospace, and the accent colors are picked to double as a readable syntax-highlighting palette. The result is a vault that looks and feels like an IDE.
|
||||
|
||||
---
|
||||
|
||||
## Features
|
||||
|
||||
- **Full monospace UI** — interface, editor text, and code all use `JetBrains Mono` (falls back to `Fira Code`, `Cascadia Code`, `ui-monospace`)
|
||||
- **Zero border radius** — buttons, tabs, inputs, modals, panes, and scrollbars are all perfectly square
|
||||
- **Dark and light variants** — both built from the same warm, low-contrast neutral palette
|
||||
- **Four-color accent system** — headings H1–H4 each get a distinct accent color, reused consistently across links, tags, and code syntax
|
||||
- **Syntax-highlighting-aware colors** — `--code-keyword`, `--code-string`, `--code-function`, `--code-comment`, etc. are mapped so inline code and code blocks read like a real editor
|
||||
- **Flat, minimal chrome** — no shadows, no gradients, no rounded pills — just borders and flat fills
|
||||
- **Custom scrollbars** — square, low-profile scrollbars matching the rest of the UI
|
||||
|
||||
---
|
||||
|
||||
## Requirements
|
||||
|
||||
- Obsidian **1.7.2** or later
|
||||
- Works on **desktop and mobile**
|
||||
|
||||
---
|
||||
|
||||
## Installation
|
||||
|
||||
### From Community Themes
|
||||
|
||||
1. Open **Settings → Appearance → Themes**.
|
||||
2. Click **Manage** next to Themes.
|
||||
3. Search for `Programming Mono`.
|
||||
4. Click **Install and use**.
|
||||
|
||||
### Manual installation
|
||||
|
||||
1. Download the latest release from the [Releases page](../../releases), or clone the repository:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/SATOSprod/programming-mono.git
|
||||
```
|
||||
|
||||
2. Copy the theme folder into your vault:
|
||||
|
||||
```text
|
||||
<your-vault>/.obsidian/themes/programming-mono/
|
||||
├── theme.css
|
||||
└── manifest.json
|
||||
```
|
||||
|
||||
3. Open Obsidian → **Settings → Appearance → Themes** and select **Programming Mono**.
|
||||
|
||||
---
|
||||
|
||||
## Usage
|
||||
|
||||
1. Install the theme using one of the methods above.
|
||||
2. Open **Settings → Appearance**.
|
||||
3. Under **Base color scheme**, choose **Dark** or **Light** — Programming Mono ships full support for both.
|
||||
4. Under **Themes**, select **Programming Mono**.
|
||||
5. For the full intended look, pair the theme with a monospace font family such as `JetBrains Mono` installed on your system — the theme already references it by name and will fall back gracefully if it isn't installed.
|
||||
|
||||
---
|
||||
|
||||
## Color Palette
|
||||
|
||||
### Dark mode
|
||||
|
||||
| Role | Color |
|
||||
|---|---|
|
||||
| Background | `#0e0e0c` |
|
||||
| Background alt | `#161614` |
|
||||
| Code background | `#0a0a08` |
|
||||
| Border | `#282826` |
|
||||
| Text | `#b8b6ae` |
|
||||
| Text high | `#dedad0` |
|
||||
| Text low | `#686660` |
|
||||
|
||||
### Light mode
|
||||
|
||||
| Role | Color |
|
||||
|---|---|
|
||||
| Background | `#f5f4f1` |
|
||||
| Background alt | `#ebe9e4` |
|
||||
| Code background | `#eeece7` |
|
||||
| Border | `#d8d5cd` |
|
||||
| Text | `#3a3934` |
|
||||
| Text high | `#1c1b18` |
|
||||
| Text low | `#8a8778` |
|
||||
|
||||
### Accents (shared hues, adjusted per mode)
|
||||
|
||||
| Accent | Used for | Dark | Light |
|
||||
|---|---|---|---|
|
||||
| Accent 1 | H1, links, functions, tags | `#6a9ed4` | `#4a7fb5` |
|
||||
| Accent 2 | H2, keywords | `#a07cc8` | `#8a63a8` |
|
||||
| Accent 3 | H3, strings, properties | `#89c87c` | `#4f9a44` |
|
||||
| Accent 4 | H4, warnings, important values | `#c06f6f` | `#b05a5a` |
|
||||
|
||||
---
|
||||
|
||||
## Configuration Notes
|
||||
|
||||
| Element | Behaviour |
|
||||
|---|---|
|
||||
| **Corners** | All corner radii (`--radius-s/m/l/xl`, buttons, tabs, inputs, checkboxes) are forced to `0px` |
|
||||
| **Fonts** | `--font-text-theme`, `--font-monospace-theme`, and `--font-interface-theme` all resolve to the same monospace stack |
|
||||
| **Headings** | H1–H4 use the four accent colors; H1 also gets a bottom border, H6 is uppercased and letter-spaced |
|
||||
| **Code** | Inline code and code blocks use a dedicated background with a syntax-colored token set (`--code-keyword`, `--code-string`, `--code-function`, `--code-comment`, `--code-tag`, `--code-value`) |
|
||||
| **Links** | Standard links use Accent 1; unresolved internal links use Accent 4 |
|
||||
| **Tags** | Rendered with Accent 2, a soft tinted background, and a matching border |
|
||||
| **Buttons** | Flat, bordered, transparent background; fill with the accent color on hover |
|
||||
| **Scrollbars** | Square, theme-matched thumb and track colors for both modes |
|
||||
|
||||
---
|
||||
|
||||
## File Structure
|
||||
|
||||
```text
|
||||
programming-mono/
|
||||
├── theme.css
|
||||
├── manifest.json
|
||||
├── assets/
|
||||
│ ├── 1.png
|
||||
│ └── 2.png
|
||||
├── cover.png
|
||||
├── LICENSE
|
||||
└── README.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## How It Works
|
||||
|
||||
1. The theme defines a small set of raw palette variables (`--bg`, `--bg-alt`, `--bg-code`, `--border`, `--text`, `--accent-1..4`) separately for `.theme-dark` and `.theme-light`.
|
||||
2. Every Obsidian CSS variable (`--background-primary`, `--text-normal`, `--interactive-accent`, `--code-*`, `--h1-color` … `--h6-color`, etc.) is mapped from that small palette, so the whole theme can be re-tuned by editing a handful of values.
|
||||
3. A second block of rules forces `border-radius: 0` across buttons, tabs, inputs, modals, and panes to enforce the theme's square-corner identity regardless of Obsidian's own defaults.
|
||||
4. Syntax-relevant variables (`--code-keyword`, `--code-string`, `--code-function`, `--code-comment`, `--code-tag`, `--code-value`, `--code-property`) reuse the same four accents so inline code, code blocks, and headings feel visually consistent.
|
||||
5. All rules are scoped under `.theme-dark` and `.theme-light`, so switching Obsidian's base color scheme swaps the full palette instantly with no extra configuration.
|
||||
|
||||
---
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
||||
This project is released under a **proprietary license**.
|
||||
Copying source code into other projects is **not permitted**.
|
||||
See [LICENSE](./LICENSE) for full terms.
|
||||
|
||||
© 2026 SATOSprod
|
||||
BIN
assets/1.png
Normal file
BIN
assets/1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 256 KiB |
BIN
assets/2.png
Normal file
BIN
assets/2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 269 KiB |
BIN
cover.png
Normal file
BIN
cover.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 308 KiB |
6
manifest.json
Normal file
6
manifest.json
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"name": "Programming Mono",
|
||||
"version": "1.0.0",
|
||||
"minAppVersion": "1.7.2",
|
||||
"author": "SATOSprod"
|
||||
}
|
||||
709
theme.css
Normal file
709
theme.css
Normal file
|
|
@ -0,0 +1,709 @@
|
|||
/*
|
||||
Programming Mono — тема для Obsidian
|
||||
Автор: SATOS prod
|
||||
Стиль: программирование, без закруглений (angular), monospace-акценты
|
||||
Поддерживает тёмную (.theme-dark) и светлую (.theme-light) версии.
|
||||
|
||||
Палитра (тёмная):
|
||||
--bg: #0e0e0c
|
||||
--bg-alt: #161614
|
||||
--bg-code: #0a0a08
|
||||
--border: #282826
|
||||
--border-hi: #383836
|
||||
--text: #b8b6ae
|
||||
--text-hi: #dedad0
|
||||
--text-lo: #686660
|
||||
|
||||
Палитра (светлая):
|
||||
--bg: #f5f4f1
|
||||
--bg-alt: #ebe9e4
|
||||
--bg-code: #eeece7
|
||||
--border: #d8d5cd
|
||||
--border-hi: #c2beb3
|
||||
--text: #3a3934
|
||||
--text-hi: #1c1b18
|
||||
--text-lo: #8a8778
|
||||
|
||||
Акценты (общие для обеих тем):
|
||||
--accent-1: #6a9ed4 (H1 / кнопки / основной)
|
||||
--accent-2: #a07cc8 (H2 / выделения)
|
||||
--accent-3: #89c87c (H3 / выделения)
|
||||
--accent-4: #c06f6f (H4 / выделения)
|
||||
*/
|
||||
|
||||
.theme-dark {
|
||||
--background-primary: #0e0e0c;
|
||||
--background-primary-alt: #0a0a08;
|
||||
--background-secondary: #161614;
|
||||
--background-secondary-alt: #161614;
|
||||
--background-modifier-border: #282826;
|
||||
--background-modifier-border-hover: #383836;
|
||||
--background-modifier-border-focus: #6a9ed4;
|
||||
--background-modifier-hover: #1c1c1a;
|
||||
--background-modifier-active-hover: #1c1c1a;
|
||||
--background-modifier-form-field: #161614;
|
||||
--background-modifier-form-field-highlighted: #161614;
|
||||
--background-modifier-box-shadow: rgba(0, 0, 0, 0.5);
|
||||
--background-modifier-cover: rgba(0, 0, 0, 0.7);
|
||||
--background-modifier-message: #161614;
|
||||
--background-modifier-success: #6aaa58;
|
||||
--background-modifier-error: #c05040;
|
||||
--background-modifier-error-rgb: 192, 80, 64;
|
||||
--background-modifier-success-rgb: 106, 170, 88;
|
||||
|
||||
--text-normal: #b8b6ae;
|
||||
--text-muted: #686660;
|
||||
--text-faint: #4a4844;
|
||||
--text-error: #c05040;
|
||||
--text-error-hover: #c06f6f;
|
||||
--text-accent: #6a9ed4;
|
||||
--text-accent-hover: #89b6e6;
|
||||
--text-on-accent: #0e0e0c;
|
||||
--text-on-accent-inverted: #dedad0;
|
||||
--text-selection: rgba(106, 158, 212, 0.25);
|
||||
--text-highlight-bg: rgba(160, 124, 200, 0.25);
|
||||
|
||||
--interactive-normal: #161614;
|
||||
--interactive-hover: #1c1c1a;
|
||||
--interactive-accent: #6a9ed4;
|
||||
--interactive-accent-hsl: 210, 51%, 63%;
|
||||
--interactive-accent-hover: #89b6e6;
|
||||
--interactive-success: #6aaa58;
|
||||
|
||||
--icon-color: #686660;
|
||||
--icon-color-hover: #dedad0;
|
||||
--icon-color-active: #6a9ed4;
|
||||
|
||||
--divider-color: #282826;
|
||||
|
||||
--font-text-theme: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', ui-monospace, monospace;
|
||||
--font-monospace-theme: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', ui-monospace, monospace;
|
||||
--font-interface-theme: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', ui-monospace, monospace;
|
||||
|
||||
/* без закруглений — угловой стиль */
|
||||
--radius-s: 0px;
|
||||
--radius-m: 0px;
|
||||
--radius-l: 0px;
|
||||
--radius-xl: 0px;
|
||||
--checkbox-radius: 0px;
|
||||
--input-radius: 0px;
|
||||
--tab-radius: 0px;
|
||||
--tab-radius-active: 0px;
|
||||
--button-radius: 0px;
|
||||
|
||||
--code-background: #0a0a08;
|
||||
--code-normal: #b8b6ae;
|
||||
--code-comment: #686660;
|
||||
--code-function: #6a9ed4;
|
||||
--code-important: #c06f6f;
|
||||
--code-keyword: #a07cc8;
|
||||
--code-operator: #dedad0;
|
||||
--code-property: #89c87c;
|
||||
--code-punctuation: #686660;
|
||||
--code-string: #89c87c;
|
||||
--code-tag: #6a9ed4;
|
||||
--code-value: #c06f6f;
|
||||
|
||||
--h1-color: #6a9ed4;
|
||||
--h2-color: #a07cc8;
|
||||
--h3-color: #89c87c;
|
||||
--h4-color: #c06f6f;
|
||||
--h5-color: #a07cc8;
|
||||
--h6-color: #686660;
|
||||
|
||||
--bold-color: #dedad0;
|
||||
--italic-color: #b8b6ae;
|
||||
--link-color: #6a9ed4;
|
||||
--link-color-hover: #89b6e6;
|
||||
--link-external-color: #6a9ed4;
|
||||
--link-external-color-hover: #89b6e6;
|
||||
--link-unresolved-color: #c06f6f;
|
||||
|
||||
--blockquote-border-color: #383836;
|
||||
--hr-color: #282826;
|
||||
|
||||
--tag-color: #a07cc8;
|
||||
--tag-background: rgba(160, 124, 200, 0.12);
|
||||
--tag-border-color: rgba(160, 124, 200, 0.35);
|
||||
|
||||
--titlebar-background: #0e0e0c;
|
||||
--titlebar-background-focused: #0e0e0c;
|
||||
--titlebar-text-color: #b8b6ae;
|
||||
|
||||
--nav-item-background-active: #1c1c1a;
|
||||
--nav-item-color-active: #dedad0;
|
||||
--nav-item-color-hover: #dedad0;
|
||||
--nav-collapse-icon-color: #686660;
|
||||
|
||||
--tab-text-color: #686660;
|
||||
--tab-text-color-active: #dedad0;
|
||||
--tab-text-color-focused-active: #dedad0;
|
||||
--tab-background-active: #161614;
|
||||
--tab-outline-color: #282826;
|
||||
|
||||
--scrollbar-thumb-bg: #383836;
|
||||
--scrollbar-active-thumb-bg: #686660;
|
||||
--scrollbar-bg: #0e0e0c;
|
||||
}
|
||||
|
||||
/* ── Светлая тема ───────────────────────────────────────────────── */
|
||||
.theme-light {
|
||||
--background-primary: #f5f4f1;
|
||||
--background-primary-alt: #eeece7;
|
||||
--background-secondary: #ebe9e4;
|
||||
--background-secondary-alt: #ebe9e4;
|
||||
--background-modifier-border: #d8d5cd;
|
||||
--background-modifier-border-hover: #c2beb3;
|
||||
--background-modifier-border-focus: #6a9ed4;
|
||||
--background-modifier-hover: #e4e1da;
|
||||
--background-modifier-active-hover: #e4e1da;
|
||||
--background-modifier-form-field: #ffffff;
|
||||
--background-modifier-form-field-highlighted: #ffffff;
|
||||
--background-modifier-box-shadow: rgba(0, 0, 0, 0.1);
|
||||
--background-modifier-cover: rgba(255, 255, 255, 0.7);
|
||||
--background-modifier-message: #ebe9e4;
|
||||
--background-modifier-success: #5a9a4a;
|
||||
--background-modifier-error: #c05040;
|
||||
--background-modifier-error-rgb: 192, 80, 64;
|
||||
--background-modifier-success-rgb: 90, 154, 74;
|
||||
|
||||
--text-normal: #3a3934;
|
||||
--text-muted: #8a8778;
|
||||
--text-faint: #a5a294;
|
||||
--text-error: #c05040;
|
||||
--text-error-hover: #c06f6f;
|
||||
--text-accent: #4a7fb5;
|
||||
--text-accent-hover: #6a9ed4;
|
||||
--text-on-accent: #f5f4f1;
|
||||
--text-on-accent-inverted: #1c1b18;
|
||||
--text-selection: rgba(74, 127, 181, 0.2);
|
||||
--text-highlight-bg: rgba(160, 124, 200, 0.18);
|
||||
|
||||
--interactive-normal: #ffffff;
|
||||
--interactive-hover: #e4e1da;
|
||||
--interactive-accent: #4a7fb5;
|
||||
--interactive-accent-hsl: 210, 45%, 47%;
|
||||
--interactive-accent-hover: #6a9ed4;
|
||||
--interactive-success: #5a9a4a;
|
||||
|
||||
--icon-color: #8a8778;
|
||||
--icon-color-hover: #1c1b18;
|
||||
--icon-color-active: #4a7fb5;
|
||||
|
||||
--divider-color: #d8d5cd;
|
||||
|
||||
--font-text-theme: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', ui-monospace, monospace;
|
||||
--font-monospace-theme: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', ui-monospace, monospace;
|
||||
--font-interface-theme: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', ui-monospace, monospace;
|
||||
|
||||
/* без закруглений — угловой стиль */
|
||||
--radius-s: 0px;
|
||||
--radius-m: 0px;
|
||||
--radius-l: 0px;
|
||||
--radius-xl: 0px;
|
||||
--checkbox-radius: 0px;
|
||||
--input-radius: 0px;
|
||||
--tab-radius: 0px;
|
||||
--tab-radius-active: 0px;
|
||||
--button-radius: 0px;
|
||||
|
||||
--code-background: #eeece7;
|
||||
--code-normal: #3a3934;
|
||||
--code-comment: #8a8778;
|
||||
--code-function: #4a7fb5;
|
||||
--code-important: #b05a5a;
|
||||
--code-keyword: #8a63a8;
|
||||
--code-operator: #1c1b18;
|
||||
--code-property: #4f9a44;
|
||||
--code-punctuation: #8a8778;
|
||||
--code-string: #4f9a44;
|
||||
--code-tag: #4a7fb5;
|
||||
--code-value: #b05a5a;
|
||||
|
||||
--h1-color: #4a7fb5;
|
||||
--h2-color: #8a63a8;
|
||||
--h3-color: #4f9a44;
|
||||
--h4-color: #b05a5a;
|
||||
--h5-color: #8a63a8;
|
||||
--h6-color: #8a8778;
|
||||
|
||||
--bold-color: #1c1b18;
|
||||
--italic-color: #3a3934;
|
||||
--link-color: #4a7fb5;
|
||||
--link-color-hover: #6a9ed4;
|
||||
--link-external-color: #4a7fb5;
|
||||
--link-external-color-hover: #6a9ed4;
|
||||
--link-unresolved-color: #b05a5a;
|
||||
|
||||
--blockquote-border-color: #c2beb3;
|
||||
--hr-color: #d8d5cd;
|
||||
|
||||
--tag-color: #8a63a8;
|
||||
--tag-background: rgba(138, 99, 168, 0.1);
|
||||
--tag-border-color: rgba(138, 99, 168, 0.3);
|
||||
|
||||
--titlebar-background: #f5f4f1;
|
||||
--titlebar-background-focused: #f5f4f1;
|
||||
--titlebar-text-color: #3a3934;
|
||||
|
||||
--nav-item-background-active: #e4e1da;
|
||||
--nav-item-color-active: #1c1b18;
|
||||
--nav-item-color-hover: #1c1b18;
|
||||
--nav-collapse-icon-color: #8a8778;
|
||||
|
||||
--tab-text-color: #8a8778;
|
||||
--tab-text-color-active: #1c1b18;
|
||||
--tab-text-color-focused-active: #1c1b18;
|
||||
--tab-background-active: #ebe9e4;
|
||||
--tab-outline-color: #d8d5cd;
|
||||
|
||||
--scrollbar-thumb-bg: #c2beb3;
|
||||
--scrollbar-active-thumb-bg: #8a8778;
|
||||
--scrollbar-bg: #f5f4f1;
|
||||
}
|
||||
|
||||
/* ── Общие элементы: без скруглений, моно-акценты ─────────────── */
|
||||
.theme-dark,
|
||||
.theme-light {
|
||||
--font-ui-medium: 13px;
|
||||
--font-ui-small: 12px;
|
||||
}
|
||||
|
||||
.theme-dark .titlebar,
|
||||
.theme-dark .workspace,
|
||||
.theme-dark .workspace-tab-header-container,
|
||||
.theme-dark .status-bar,
|
||||
.theme-dark .side-dock-ribbon,
|
||||
.theme-light .titlebar,
|
||||
.theme-light .workspace,
|
||||
.theme-light .workspace-tab-header-container,
|
||||
.theme-light .status-bar,
|
||||
.theme-light .side-dock-ribbon {
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
||||
.theme-dark .prompt,
|
||||
.theme-dark .modal,
|
||||
.theme-dark .suggestion-container,
|
||||
.theme-dark .menu,
|
||||
.theme-dark input,
|
||||
.theme-dark textarea,
|
||||
.theme-dark select,
|
||||
/*.theme-dark .checkbox-container,
|
||||
.theme-dark .checkbox-container:after,*/
|
||||
.theme-dark .clickable-icon,
|
||||
.theme-dark .nav-file-title,
|
||||
.theme-dark .nav-folder-title,
|
||||
.theme-dark .workspace-tab-header,
|
||||
.theme-dark button:not(.mod-cta):not(.mod-warning),
|
||||
.theme-light .prompt,
|
||||
.theme-light .modal,
|
||||
.theme-light .suggestion-container,
|
||||
.theme-light .menu,
|
||||
.theme-light input,
|
||||
.theme-light textarea,
|
||||
.theme-light select,
|
||||
/*.theme-light .checkbox-container,
|
||||
.theme-light .checkbox-container:after,*/
|
||||
.theme-light .clickable-icon,
|
||||
.theme-light .nav-file-title,
|
||||
.theme-light .nav-folder-title,
|
||||
.theme-light .workspace-tab-header,
|
||||
.theme-light button:not(.mod-cta):not(.mod-warning) {
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
||||
/* ── Кнопки ─────────────────────────────────────────────────────── */
|
||||
.theme-dark button,
|
||||
.theme-dark .mod-cta {
|
||||
border-radius: 0;
|
||||
border: 1px solid #6a9ed4;
|
||||
background: transparent;
|
||||
color: #6a9ed4;
|
||||
font-family: var(--font-monospace-theme);
|
||||
font-size: 0.82rem;
|
||||
transition: background 0.1s, color 0.1s;
|
||||
}
|
||||
|
||||
.theme-dark button:hover,
|
||||
.theme-dark .mod-cta:hover {
|
||||
background: #6a9ed4;
|
||||
color: #0e0e0c;
|
||||
}
|
||||
|
||||
.theme-dark .mod-warning {
|
||||
border: 1px solid #c06f6f;
|
||||
color: #c06f6f;
|
||||
background: transparent;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.theme-dark .mod-warning:hover {
|
||||
background: #c06f6f;
|
||||
color: #0e0e0c;
|
||||
}
|
||||
|
||||
.theme-light button,
|
||||
.theme-light .mod-cta {
|
||||
border-radius: 0;
|
||||
border: 1px solid #4a7fb5;
|
||||
background: transparent;
|
||||
color: #4a7fb5;
|
||||
font-family: var(--font-monospace-theme);
|
||||
font-size: 0.82rem;
|
||||
transition: background 0.1s, color 0.1s;
|
||||
}
|
||||
|
||||
.theme-light button:hover,
|
||||
.theme-light .mod-cta:hover {
|
||||
background: #4a7fb5;
|
||||
color: #f5f4f1;
|
||||
}
|
||||
|
||||
.theme-light .mod-warning {
|
||||
border: 1px solid #b05a5a;
|
||||
color: #b05a5a;
|
||||
background: transparent;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.theme-light .mod-warning:hover {
|
||||
background: #b05a5a;
|
||||
color: #f5f4f1;
|
||||
}
|
||||
|
||||
/* ── Заголовки в редакторе и предпросмотре ──────────────────────── */
|
||||
.theme-dark .markdown-preview-view h1,
|
||||
.theme-dark .markdown-source-view h1,
|
||||
.theme-dark .cm-header-1 {
|
||||
color: #6a9ed4;
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid #282826;
|
||||
padding-bottom: 0.3rem;
|
||||
}
|
||||
|
||||
.theme-light .markdown-preview-view h1,
|
||||
.theme-light .markdown-source-view h1,
|
||||
.theme-light .cm-header-1 {
|
||||
color: #4a7fb5;
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid #d8d5cd;
|
||||
padding-bottom: 0.3rem;
|
||||
}
|
||||
|
||||
.theme-dark .markdown-preview-view h2,
|
||||
.theme-dark .markdown-source-view h2,
|
||||
.theme-dark .cm-header-2 {
|
||||
color: #a07cc8;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.theme-light .markdown-preview-view h2,
|
||||
.theme-light .markdown-source-view h2,
|
||||
.theme-light .cm-header-2 {
|
||||
color: #8a63a8;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.theme-dark .markdown-preview-view h3,
|
||||
.theme-dark .markdown-source-view h3,
|
||||
.theme-dark .cm-header-3 {
|
||||
color: #89c87c;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.theme-light .markdown-preview-view h3,
|
||||
.theme-light .markdown-source-view h3,
|
||||
.theme-light .cm-header-3 {
|
||||
color: #4f9a44;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.theme-dark .markdown-preview-view h4,
|
||||
.theme-dark .markdown-source-view h4,
|
||||
.theme-dark .cm-header-4 {
|
||||
color: #c06f6f;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.theme-light .markdown-preview-view h4,
|
||||
.theme-light .markdown-source-view h4,
|
||||
.theme-light .cm-header-4 {
|
||||
color: #b05a5a;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.theme-dark .markdown-preview-view h5,
|
||||
.theme-dark .cm-header-5 {
|
||||
color: #a07cc8;
|
||||
}
|
||||
|
||||
.theme-light .markdown-preview-view h5,
|
||||
.theme-light .cm-header-5 {
|
||||
color: #8a63a8;
|
||||
}
|
||||
|
||||
.theme-dark .markdown-preview-view h6,
|
||||
.theme-dark .cm-header-6 {
|
||||
color: #686660;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.06em;
|
||||
font-size: 0.85em;
|
||||
}
|
||||
|
||||
.theme-light .markdown-preview-view h6,
|
||||
.theme-light .cm-header-6 {
|
||||
color: #8a8778;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.06em;
|
||||
font-size: 0.85em;
|
||||
}
|
||||
|
||||
/* ── Выделения (highlight / mark) ───────────────────────────────── */
|
||||
.theme-dark mark,
|
||||
.theme-dark .cm-highlight {
|
||||
background: rgba(160, 124, 200, 0.25);
|
||||
color: #dedad0;
|
||||
border-radius: 0;
|
||||
padding: 0 0.15em;
|
||||
}
|
||||
|
||||
.theme-light mark,
|
||||
.theme-light .cm-highlight {
|
||||
background: rgba(138, 99, 168, 0.18);
|
||||
color: #1c1b18;
|
||||
border-radius: 0;
|
||||
padding: 0 0.15em;
|
||||
}
|
||||
|
||||
/* ── Инлайн-код и блоки кода ─────────────────────────────────────── */
|
||||
.theme-dark code,
|
||||
.theme-dark .cm-inline-code {
|
||||
background: #161614;
|
||||
color: #dedad0;
|
||||
border-radius: 0;
|
||||
border: 1px solid #282826;
|
||||
padding: 0.05em 0.35em;
|
||||
font-family: var(--font-monospace-theme);
|
||||
}
|
||||
|
||||
.theme-light code,
|
||||
.theme-light .cm-inline-code {
|
||||
background: #ebe9e4;
|
||||
color: #1c1b18;
|
||||
border-radius: 0;
|
||||
border: 1px solid #d8d5cd;
|
||||
padding: 0.05em 0.35em;
|
||||
font-family: var(--font-monospace-theme);
|
||||
}
|
||||
|
||||
.theme-dark pre,
|
||||
.theme-dark .cm-line pre,
|
||||
.theme-dark .markdown-preview-view pre {
|
||||
background: #0a0a08;
|
||||
border: 1px solid #282826;
|
||||
border-left: 3px solid #383836;
|
||||
border-radius: 0;
|
||||
padding: 1rem 1.25rem;
|
||||
}
|
||||
|
||||
.theme-light pre,
|
||||
.theme-light .cm-line pre,
|
||||
.theme-light .markdown-preview-view pre {
|
||||
background: #eeece7;
|
||||
border: 1px solid #d8d5cd;
|
||||
border-left: 3px solid #c2beb3;
|
||||
border-radius: 0;
|
||||
padding: 1rem 1.25rem;
|
||||
}
|
||||
|
||||
.theme-dark pre code,
|
||||
.theme-light pre code {
|
||||
background: none;
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* ── Ссылки ─────────────────────────────────────────────────────── */
|
||||
.theme-dark a,
|
||||
.theme-dark .cm-link,
|
||||
.theme-dark .internal-link {
|
||||
color: #6a9ed4;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.theme-dark a:hover,
|
||||
.theme-dark .internal-link:hover {
|
||||
color: #dedad0;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.theme-dark .internal-link.is-unresolved {
|
||||
color: #c06f6f;
|
||||
}
|
||||
|
||||
.theme-light a,
|
||||
.theme-light .cm-link,
|
||||
.theme-light .internal-link {
|
||||
color: #4a7fb5;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.theme-light a:hover,
|
||||
.theme-light .internal-link:hover {
|
||||
color: #1c1b18;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.theme-light .internal-link.is-unresolved {
|
||||
color: #b05a5a;
|
||||
}
|
||||
|
||||
/* ── Теги ───────────────────────────────────────────────────────── */
|
||||
.theme-dark .tag,
|
||||
.theme-dark a.tag {
|
||||
background: rgba(160, 124, 200, 0.12);
|
||||
border: 1px solid rgba(160, 124, 200, 0.35);
|
||||
color: #a07cc8;
|
||||
border-radius: 0;
|
||||
font-family: var(--font-monospace-theme);
|
||||
font-size: 0.78em;
|
||||
}
|
||||
|
||||
.theme-light .tag,
|
||||
.theme-light a.tag {
|
||||
background: rgba(138, 99, 168, 0.1);
|
||||
border: 1px solid rgba(138, 99, 168, 0.3);
|
||||
color: #8a63a8;
|
||||
border-radius: 0;
|
||||
font-family: var(--font-monospace-theme);
|
||||
font-size: 0.78em;
|
||||
}
|
||||
|
||||
/* ── Чекбоксы ────────────────────────────────────────────────────── */
|
||||
.theme-dark input[type="checkbox"] {
|
||||
border-radius: 0;
|
||||
border: 1px solid #383836;
|
||||
accent-color: #6a9ed4;
|
||||
}
|
||||
|
||||
.theme-light input[type="checkbox"] {
|
||||
border-radius: 0;
|
||||
border: 1px solid #c2beb3;
|
||||
accent-color: #4a7fb5;
|
||||
}
|
||||
|
||||
/* ── Цитаты ─────────────────────────────────────────────────────── */
|
||||
.theme-dark blockquote {
|
||||
border-left: 3px solid #383836;
|
||||
background: #161614;
|
||||
color: #b8b6ae;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.theme-light blockquote {
|
||||
border-left: 3px solid #c2beb3;
|
||||
background: #ebe9e4;
|
||||
color: #3a3934;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
/* ── Таблицы ────────────────────────────────────────────────────── */
|
||||
.theme-dark table th {
|
||||
color: #686660;
|
||||
font-family: var(--font-monospace-theme);
|
||||
text-transform: uppercase;
|
||||
font-size: 0.72rem;
|
||||
letter-spacing: 0.08em;
|
||||
border-bottom: 1px solid #282826;
|
||||
}
|
||||
|
||||
.theme-light table th {
|
||||
color: #8a8778;
|
||||
font-family: var(--font-monospace-theme);
|
||||
text-transform: uppercase;
|
||||
font-size: 0.72rem;
|
||||
letter-spacing: 0.08em;
|
||||
border-bottom: 1px solid #d8d5cd;
|
||||
}
|
||||
|
||||
.theme-dark table td {
|
||||
border-bottom: 1px solid #282826;
|
||||
}
|
||||
|
||||
.theme-light table td {
|
||||
border-bottom: 1px solid #d8d5cd;
|
||||
}
|
||||
|
||||
.theme-dark table,
|
||||
.theme-dark table th,
|
||||
.theme-dark table td,
|
||||
.theme-light table,
|
||||
.theme-light table th,
|
||||
.theme-light table td {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
/* ── Вкладки ────────────────────────────────────────────────────── */
|
||||
.theme-dark .workspace-tab-header,
|
||||
.theme-light .workspace-tab-header {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.theme-dark .workspace-tab-header.is-active {
|
||||
border-bottom: 2px solid #6a9ed4;
|
||||
}
|
||||
|
||||
.theme-light .workspace-tab-header.is-active {
|
||||
border-bottom: 2px solid #4a7fb5;
|
||||
}
|
||||
|
||||
/* ── Полоса статуса и боковая панель ────────────────────────────── */
|
||||
.theme-dark .status-bar,
|
||||
.theme-dark .workspace-ribbon-collapse-btn,
|
||||
.theme-dark .side-dock-ribbon-action,
|
||||
.theme-light .status-bar,
|
||||
.theme-light .workspace-ribbon-collapse-btn,
|
||||
.theme-light .side-dock-ribbon-action {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.theme-dark .nav-file-title.is-active,
|
||||
.theme-dark .nav-folder-title.is-active {
|
||||
background: #1c1c1a;
|
||||
color: #dedad0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.theme-light .nav-file-title.is-active,
|
||||
.theme-light .nav-folder-title.is-active {
|
||||
background: #e4e1da;
|
||||
color: #1c1b18;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
/* ── Скроллбар ──────────────────────────────────────────────────── */
|
||||
.theme-dark ::-webkit-scrollbar,
|
||||
.theme-light ::-webkit-scrollbar {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
}
|
||||
.theme-dark ::-webkit-scrollbar-track {
|
||||
background: #0e0e0c;
|
||||
}
|
||||
.theme-light ::-webkit-scrollbar-track {
|
||||
background: #f5f4f1;
|
||||
}
|
||||
.theme-dark ::-webkit-scrollbar-thumb {
|
||||
background: #383836;
|
||||
border-radius: 0;
|
||||
}
|
||||
.theme-light ::-webkit-scrollbar-thumb {
|
||||
background: #c2beb3;
|
||||
border-radius: 0;
|
||||
}
|
||||
.theme-dark ::-webkit-scrollbar-thumb:hover {
|
||||
background: #686660;
|
||||
}
|
||||
.theme-light ::-webkit-scrollbar-thumb:hover {
|
||||
background: #8a8778;
|
||||
}
|
||||
Loading…
Reference in a new issue