mirror of
https://github.com/oczko24/Obsidian-transparent.git
synced 2026-07-22 03:50:23 +00:00
1863 lines
No EOL
91 KiB
CSS
1863 lines
No EOL
91 KiB
CSS
/*
|
||
This code was created by Oczko24.
|
||
For more details, visit:
|
||
https://github.com/Oczko24/Obsidian-transparent
|
||
|
||
Your feedback and suggestions are greatly appreciated!
|
||
I’m working to make this as polished and functional as possible. Thanks for your support!
|
||
|
||
Please don't copy this code without mentioning repository link
|
||
*/
|
||
|
||
|
||
/* Pluginy, pod które został napisany kod aby naprawić ich wyświetalnie:
|
||
|
||
|
||
- Style Settings
|
||
- Make.md
|
||
- MySnippets
|
||
- Day Planner
|
||
- Remotely Save
|
||
- [**Enchanted Animations**](https://github.com/Oczko24/Enchanted-Animations)
|
||
|
||
*/
|
||
/* ========= style settings plugin support ========== */
|
||
|
||
/* @settings
|
||
|
||
name: Obsidian-Transparent Theme Configuration
|
||
id: obsidian-transparent
|
||
settings:
|
||
-
|
||
id: info-section
|
||
title: "✨ Obsidian-Transparent"
|
||
description: |
|
||
I'm actively developing this theme to provide the best transparent experience for Obsidian:)
|
||
|
||
**Support the project:**
|
||
If you find this theme useful, please consider dropping a ⭐ on GitHub. It's a huge motivation for me to keep shipping updates and new features!
|
||
|
||
[View Repository on GitHub](https://github.com/Oczko24/Obsidian-transparent)
|
||
type: info-text
|
||
markdown: true
|
||
-
|
||
id: preset-mode
|
||
title: "🎨 Theme Preset"
|
||
description: "A coordinated look out of the box. Each preset works in both Dark and Light mode — just pick one and go."
|
||
type: class-select
|
||
allowEmpty: false
|
||
default: "preset-default"
|
||
options:
|
||
-
|
||
label: "Base"
|
||
value: preset-default
|
||
-
|
||
label: "Orange Autumn"
|
||
value: preset-orange
|
||
-
|
||
label: "True Glass (100% Transparent)"
|
||
value: preset-true-glass
|
||
-
|
||
id: glass-opacity
|
||
title: "True Glass Opacity"
|
||
description: "Adjust background opacity when True Glass is enabled. 0 = fully transparent."
|
||
type: variable-number-slider
|
||
default: 0
|
||
min: 0
|
||
max: 0.95
|
||
step: 0.01
|
||
-
|
||
id: bg-section
|
||
title: "🖼️ Background"
|
||
type: heading
|
||
level: 1
|
||
collapsed: false
|
||
-
|
||
id: bg-style-info
|
||
title: "How it works"
|
||
description: "**Auto** uses a blurred wallpaper in Dark mode and a soft gradient in Light mode. All other styles apply to both modes at once."
|
||
type: info-text
|
||
markdown: true
|
||
-
|
||
id: bg-type
|
||
title: "Background Style"
|
||
description: "Choose what appears behind your notes."
|
||
type: class-select
|
||
allowEmpty: false
|
||
default: "bg-auto"
|
||
options:
|
||
-
|
||
label: "Auto (Wallpaper / Gradient)"
|
||
value: bg-auto
|
||
-
|
||
label: "Gradient"
|
||
value: bg-gradient
|
||
-
|
||
label: "Solid Color (from Tint)"
|
||
value: bg-solid
|
||
-
|
||
label: "Custom Image URL"
|
||
value: bg-custom
|
||
-
|
||
id: bg-custom-url
|
||
title: "Custom Image URL"
|
||
description: "Paste your image URL. Example: url('https://example.com/photo.jpg'). Works in both Dark and Light mode."
|
||
type: variable-text
|
||
default: url('')
|
||
-
|
||
id: gradient-section
|
||
title: "🌈 Gradient"
|
||
type: heading
|
||
level: 2
|
||
collapsed: false
|
||
-
|
||
id: gradient-from
|
||
title: "Start Color"
|
||
description: "First color of the gradient (top-left corner at default angle)."
|
||
type: variable-color
|
||
opacity: false
|
||
format: hex
|
||
default: '#e8f5ee'
|
||
-
|
||
id: gradient-to
|
||
title: "End Color"
|
||
description: "Second color of the gradient (bottom-right corner at default angle)."
|
||
type: variable-color
|
||
opacity: false
|
||
format: hex
|
||
default: '#c8e6d4'
|
||
-
|
||
id: gradient-angle
|
||
title: "Angle"
|
||
description: "Direction of the gradient. 0 = top to bottom, 90 = left to right, 135 = diagonal."
|
||
type: variable-number-slider
|
||
default: 135
|
||
min: 0
|
||
max: 360
|
||
step: 5
|
||
format: deg
|
||
-
|
||
id: blur-section
|
||
title: "💨 Blur"
|
||
type: heading
|
||
level: 1
|
||
collapsed: false
|
||
-
|
||
id: background-blur
|
||
title: "Background Blur"
|
||
description: "Blur intensity on the background. Higher = smoother look, more GPU cost."
|
||
type: variable-number-slider
|
||
default: 80
|
||
min: 10
|
||
max: 200
|
||
step: 1
|
||
format: px
|
||
-
|
||
id: ui-blur
|
||
title: "UI Elements Blur"
|
||
description: "Blur on panels like Command Palette, Settings, and context menus."
|
||
type: variable-number-slider
|
||
default: 30
|
||
min: 0
|
||
max: 100
|
||
step: 1
|
||
format: px
|
||
-
|
||
id: tint-section
|
||
title: "🎨 Color Tint"
|
||
type: heading
|
||
level: 1
|
||
collapsed: false
|
||
-
|
||
id: tint-info
|
||
title: "What is a tint?"
|
||
description: "A color overlay applied on top of the background. Works in both Dark and Light mode. Set Intensity to 0 to disable — zero performance cost when off."
|
||
type: info-text
|
||
markdown: true
|
||
-
|
||
id: bg-tint-color
|
||
title: "Tint Color"
|
||
description: "Pick any color to overlay on the background."
|
||
type: variable-color
|
||
opacity: false
|
||
format: hsl-split
|
||
default: '#B13D00'
|
||
-
|
||
id: bg-tint-opacity
|
||
title: "Tint Intensity"
|
||
description: "How strongly the tint is applied. 0 = off, 0.3 = strong."
|
||
type: variable-number-slider
|
||
default: 0
|
||
min: 0
|
||
max: 0.3
|
||
step: 0.01
|
||
-
|
||
id: animation-settings-section
|
||
title: "⚛️ Animations"
|
||
type: heading
|
||
level: 1
|
||
collapsed: false
|
||
-
|
||
id: animationspeed
|
||
title: "Animation Speed"
|
||
description: "Adjust the overall speed of all transitions and animations. Warning: Very long speeds will cause layout delay or micro-stutters."
|
||
type: variable-number-slider
|
||
default: 500
|
||
min: 150
|
||
max: 1500
|
||
step: 50
|
||
format: ms
|
||
-
|
||
id: disable-modal-animation
|
||
title: "Disable Settings / Modal Animation"
|
||
description: "Turn off smooth scale + fade when opening any modal or settings window."
|
||
type: class-toggle
|
||
default: false
|
||
-
|
||
id: disable-splash-screen
|
||
title: "Disable Startup Animation (Splash Screen)"
|
||
description: "Turn off the fade-in and scale-up reveal of the vault workspace on startup."
|
||
type: class-toggle
|
||
default: false
|
||
-
|
||
id: disable-header-animations
|
||
title: "Disable Header Animations"
|
||
description: "Turn off the material pop animation and dynamic padding when focusing headers."
|
||
type: class-toggle
|
||
default: false
|
||
-
|
||
id: disable-formatting-animations
|
||
title: "Disable Inline Formatting Animations"
|
||
description: "Turn off the horizontal push animation for bold, italics, and other inline formatting."
|
||
type: class-toggle
|
||
default: false
|
||
-
|
||
id: disable-checkbox-animations
|
||
title: "Disable Checkbox Animations"
|
||
description: "Turn off enchanted checkbox animations. Synchronized with Enchanted Animations — disabling here also disables in the plugin."
|
||
type: class-toggle
|
||
default: false
|
||
-
|
||
id: animate-note-open
|
||
title: "Animate Note Opening (beta)"
|
||
description: "Slide-up + fade when opening or switching notes."
|
||
type: class-toggle
|
||
-
|
||
id: no-animation
|
||
title: "Disable All Animations"
|
||
description: "Kill switch — turns off every animation in Obsidian."
|
||
type: class-toggle
|
||
default: false
|
||
-
|
||
id: snippets-section
|
||
title: "🧩 Extras"
|
||
type: heading
|
||
level: 1
|
||
-
|
||
id: show-scrollbars
|
||
title: "Show Scrollbars"
|
||
description: "Always show scrollbars instead of hiding them until hover."
|
||
type: class-toggle
|
||
-
|
||
id: hide-canvas-dots
|
||
title: "Hide Canvas Dots"
|
||
description: "Remove the dot grid from the Canvas background."
|
||
type: class-toggle
|
||
-
|
||
id: file-line-width
|
||
title: "Note Max Width"
|
||
description: "Maximum width of the note editor."
|
||
type: variable-number-slider
|
||
default: 700
|
||
min: 400
|
||
max: 1400
|
||
step: 10
|
||
format: px
|
||
-
|
||
id: border-opacity
|
||
title: "Border Opacity"
|
||
description: "Visibility of subtle borders on tables and horizontal rules. 0 = invisible."
|
||
type: variable-number-slider
|
||
default: 0.063
|
||
min: 0
|
||
max: 1
|
||
step: 0.001
|
||
-
|
||
id: accent-everywhere
|
||
title: "Accent Color Everywhere"
|
||
description: "Apply your accent color to headings, icons, and sliders throughout the UI."
|
||
type: class-toggle
|
||
-
|
||
id: default-sync-error
|
||
title: "Default Sync Error Color"
|
||
description: "Use the default red color (var(--text-error)) for sync status errors instead of the theme's muted color."
|
||
type: class-toggle
|
||
default: false
|
||
-
|
||
id: mobile-exclusive-section
|
||
title: "📱 Mobile Exclusive"
|
||
type: heading
|
||
level: 1
|
||
-
|
||
id: disable-drawer-dimming
|
||
title: "Disable Drawer Dimming (beta)"
|
||
description: "Removes the dimming and blur effect from sidebars. This only makes sense when sliding sidebars are enabled."
|
||
type: class-toggle
|
||
*/
|
||
/* ===================== Style Settings UI Premium Styling ===================== */
|
||
|
||
|
||
|
||
div.setting-item.setting-item-heading.style-settings-heading[data-id="obsidian-transparent"] .setting-item-info .setting-item-name {
|
||
color: var(--interactive-accent);
|
||
}
|
||
|
||
div.setting-item[data-id="info-section"] {
|
||
background: var(--interactive-normal);
|
||
border-radius: 8px;
|
||
border: 1px solid var(--background-modifier-border);
|
||
padding: 1em;
|
||
margin-bottom: 1.5em;
|
||
}
|
||
|
||
body:not(.enchanted-animations-present) .style-settings-container {
|
||
padding-bottom: 0px;
|
||
transform-origin: top center;
|
||
animation: st-open 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;
|
||
}
|
||
|
||
@keyframes st-open {
|
||
0% {
|
||
opacity: 0;
|
||
transform: translateY(-10px) scaleY(0.98);
|
||
}
|
||
|
||
100% {
|
||
opacity: 1;
|
||
transform: translateY(0) scaleY(1);
|
||
}
|
||
}
|
||
|
||
/* ===================== vars ===================== */
|
||
:root {
|
||
/* tint - hsl-split vars (set by Style Settings color picker) */
|
||
--bg-tint-color-h: 240;
|
||
--bg-tint-color-s: 100%;
|
||
--bg-tint-color-l: 50%;
|
||
--bg-tint-opacity: 0;
|
||
/* 0 = off, zero GPU cost */
|
||
--border-opacity: 0.063;
|
||
--glass-opacity: 0;
|
||
|
||
--tr: #00000000;
|
||
|
||
/* Gradient background */
|
||
--gradient-from: #e8f5ee;
|
||
--gradient-to: #c8e6d4;
|
||
--gradient-angle: 135deg;
|
||
|
||
/* Custom image URL */
|
||
--bg-custom-url: url('');
|
||
|
||
--background-blur: 80px;
|
||
--ui-blur: 30px;
|
||
--mobile-sidebar-min-width: 100vw;
|
||
/* there is background */
|
||
--background-image-base64: url("data:image/jpg;base64,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");
|
||
}
|
||
|
||
/* ===================== Theme Presets ===================== */
|
||
/* ===================== Orange Autumn ===================== */
|
||
body.preset-orange {
|
||
/* Warm orange tint color — intensity controlled per-theme below */
|
||
--bg-tint-color-h: 21;
|
||
--bg-tint-color-s: 100%;
|
||
--bg-tint-color-l: 35%;
|
||
--border-opacity: 0.063;
|
||
--file-line-width: 700px;
|
||
}
|
||
|
||
/* Dark mode: rich orange tint over wallpaper */
|
||
body.theme-dark.preset-orange {
|
||
--bg-tint-opacity: 0.28;
|
||
}
|
||
|
||
/* Light mode: warm autumn gradient, very subtle tint */
|
||
body.theme-light.preset-orange {
|
||
--gradient-from: #fff8f0;
|
||
--gradient-to: #ffd9b3;
|
||
--bg-tint-opacity: 0.07;
|
||
}
|
||
|
||
body.preset-orange svg.canvas-background {
|
||
display: none;
|
||
}
|
||
|
||
/* ===================== Orange ===================== */
|
||
/* ===================== Theme Presets ===================== */
|
||
|
||
/* in general main things to make this theme work */
|
||
body {
|
||
--background-primary: var(--tr);
|
||
--background-secondary: var(--tr);
|
||
--divider-width: 0px;
|
||
--divider-color: var(--tr);
|
||
--background-modifier-border: var(--tr);
|
||
--input-radius: 5px;
|
||
--input-border-width: 1px;
|
||
--scrollbar-width: 10px;
|
||
|
||
/* ===================== Animation Speed Control ===================== */
|
||
|
||
/*
|
||
Base animation speed.
|
||
Set to 500ms (0.5s) as a baseline.
|
||
Changing this value scales all animations proportionally.
|
||
*/
|
||
--animationspeed: 500ms;
|
||
|
||
--anim-duration-superfast: calc(var(--animationspeed) / 4);
|
||
/* Result: 125ms */
|
||
--anim-duration-fast: calc(var(--animationspeed) / 2);
|
||
/* Result: 250ms */
|
||
--anim-duration-moderate: var(--animationspeed);
|
||
/* Result: 500ms */
|
||
--anim-duration-slow: calc(var(--animationspeed) * 2);
|
||
/* Result: 1000ms */
|
||
}
|
||
|
||
/* ===================== Specific Animation Overrides ===================== */
|
||
|
||
/*
|
||
Using 'body ...' selector to increase specificity.
|
||
This avoids using !important while still overriding default Obsidian styles.
|
||
*/
|
||
|
||
/*
|
||
Tooltips
|
||
Original hardcoded value: 200ms
|
||
New value: ~250ms
|
||
*/
|
||
body .tooltip,
|
||
body .tooltip.mod-right,
|
||
body .tooltip.mod-left {
|
||
animation-duration: var(--anim-duration-fast);
|
||
will-change: transform, opacity;
|
||
backface-visibility: hidden;
|
||
}
|
||
|
||
/* ===================== Performance Overrides (Scrollers) ===================== */
|
||
.cm-scroller, .markdown-preview-view {
|
||
transform: translateZ(0);
|
||
will-change: transform;
|
||
backface-visibility: hidden;
|
||
}
|
||
|
||
/*
|
||
Multi-select duplicate animation
|
||
Original: 2000ms
|
||
New: 3000ms
|
||
*/
|
||
body .multi-select-duplicate {
|
||
animation-duration: calc(var(--animationspeed) * 6);
|
||
}
|
||
|
||
/*
|
||
Text highlight (Ctrl+F)
|
||
Original: 250ms
|
||
New: 250ms
|
||
*/
|
||
body .textLayer .highlight {
|
||
transition-duration: var(--anim-duration-fast);
|
||
}
|
||
|
||
/*
|
||
Scroll handles
|
||
make sure they follow the fast duration 250ms
|
||
*/
|
||
body .v-scroll-handle,
|
||
body .h-scroll-handle {
|
||
transition-duration: var(--anim-duration-fast);
|
||
}
|
||
|
||
/* ===================== vars ===================== */
|
||
|
||
/* Global variables */
|
||
|
||
/* ===================== theme-light ===================== */
|
||
.theme-light .workspace {
|
||
--icon-color: #000000;
|
||
--workspace-drawer-background-color: #00000000;
|
||
}
|
||
|
||
.theme-light {
|
||
--customaccentcolor: #ffe8d2;
|
||
--brightness: 1.3;
|
||
--kolorboku: #1d1d1f;
|
||
/* text color readable black */
|
||
--tr06: rgba(255, 255, 255, 0.5);
|
||
/* Light, glass-like inputs */
|
||
--interactive-normal: var(--tr06);
|
||
--interactive-hover: rgba(255, 255, 255, 0.7);
|
||
--fakeblur: #f0f0ee;
|
||
--input-shadow-hover:
|
||
inset 0 0 0 1px rgba(0, 0, 0, 0.05),
|
||
0 0 4px 1px rgba(0, 0, 0, 0.02);
|
||
--background-modifier-border-focus: rgba(0, 0, 0, 0.1);
|
||
--overlay-color: rgba(255, 255, 255, 0.4);
|
||
/* Elegant, delicate white glass for modals */
|
||
/* --tab-text-color-focused: #b6ada3;*/
|
||
}
|
||
|
||
/* ===================== theme-light ===================== */
|
||
|
||
/* ===================== theme-dark ===================== */
|
||
.theme-dark .workspace {
|
||
--icon-color: #ffffff;
|
||
--workspace-drawer-background-color: #000000;
|
||
}
|
||
|
||
.theme-dark {
|
||
--customaccentcolor: #2e2515;
|
||
--kolorboku: #e2e0dc;
|
||
/* text color readable white */
|
||
--brightness: 0.5;
|
||
--tr06: #00000060;
|
||
--interactive-normal: var(--tr06);
|
||
--interactive-hover: var(--tr06);
|
||
--fakeblur: #0f0f0c;
|
||
/* fake blur specific to theme-dark */
|
||
--input-shadow-hover:
|
||
inset 0 0 0 1px rgba(255, 255, 255, 0.12),
|
||
0 0 4px 1px rgba(255, 255, 255, 0.08);
|
||
--background-modifier-border-focus: #55555560;
|
||
/* --color-base-40: #555555; but with 60 */
|
||
--overlay-color: #00000080;
|
||
/* 80 = 50% opacity */
|
||
/* --tab-text-color-focused: #666666;*/
|
||
}
|
||
|
||
/* ===================== theme-dark ===================== */
|
||
|
||
/* ===================== Background System ===================== */
|
||
/*
|
||
Priority (high wins): preset-true-glass > bg-custom > bg-solid > bg-gradient > bg-auto
|
||
bg-auto: dark = base64 wallpaper (dimmed), light = soft gradient
|
||
All styles work in both dark and light mode.
|
||
*/
|
||
|
||
/* Conditional UI: hide custom URL input unless bg-custom is selected */
|
||
body:not(.bg-custom) .setting-item[data-id*="bg-custom-url"] {
|
||
display: none;
|
||
}
|
||
|
||
/* Conditional UI: hide glass opacity input unless preset-true-glass is selected */
|
||
body:not(.preset-true-glass) .setting-item[data-id*="glass-opacity"] {
|
||
display: none;
|
||
}
|
||
|
||
/* Conditional UI: hide mobile exclusive settings on desktop */
|
||
body:not(.is-mobile) .setting-item[data-id*="mobile-exclusive-section"],
|
||
body:not(.is-mobile) .setting-item[data-id*="disable-drawer-dimming"] {
|
||
display: none;
|
||
}
|
||
|
||
/* isolation: isolate is mandatory — keeps z-index: -1 scoped inside .app-container */
|
||
.app-container {
|
||
position: relative;
|
||
isolation: isolate;
|
||
}
|
||
|
||
/* === BASE pseudo-element layout === */
|
||
.app-container::before {
|
||
content: "";
|
||
position: fixed;
|
||
inset: calc(-2 * var(--background-blur));
|
||
background-size: cover;
|
||
background-position: center;
|
||
contain: strict;
|
||
z-index: -1;
|
||
pointer-events: none;
|
||
transform: translateZ(0);
|
||
backface-visibility: hidden;
|
||
}
|
||
|
||
/* === AUTO (default) === */
|
||
/* Dark auto: base64 wallpaper, dimmed */
|
||
body.theme-dark:not(.bg-gradient):not(.bg-solid):not(.bg-custom):not(.preset-true-glass) .app-container::before {
|
||
background-image: var(--background-image-base64);
|
||
filter: brightness(0.54) blur(var(--background-blur));
|
||
}
|
||
|
||
/* Light auto: soft gradient */
|
||
body.theme-light:not(.bg-gradient):not(.bg-solid):not(.bg-custom):not(.preset-true-glass) .app-container::before {
|
||
background-image: linear-gradient(var(--gradient-angle), var(--gradient-from) 0%, var(--gradient-to) 100%);
|
||
background-color: unset;
|
||
filter: blur(var(--background-blur));
|
||
}
|
||
|
||
/* === GRADIENT (both modes) === */
|
||
body.bg-gradient .app-container::before {
|
||
background-image: linear-gradient(var(--gradient-angle), var(--gradient-from) 0%, var(--gradient-to) 100%);
|
||
background-color: unset;
|
||
filter: blur(var(--background-blur));
|
||
}
|
||
|
||
body.theme-dark.bg-gradient .app-container::before {
|
||
filter: brightness(0.75) blur(var(--background-blur));
|
||
}
|
||
|
||
/* === SOLID (from tint hue, both modes) === */
|
||
body.theme-light.bg-solid .app-container::before {
|
||
background-image: none;
|
||
background-color: hsl(var(--bg-tint-color-h), 30%, 90%);
|
||
filter: blur(var(--background-blur));
|
||
}
|
||
|
||
body.theme-dark.bg-solid .app-container::before {
|
||
background-image: none;
|
||
background-color: hsl(var(--bg-tint-color-h), 30%, 15%);
|
||
filter: blur(var(--background-blur));
|
||
}
|
||
|
||
/* === CUSTOM URL (both modes) === */
|
||
body.bg-custom .app-container::before {
|
||
background-image: var(--bg-custom-url);
|
||
background-size: cover;
|
||
background-position: center;
|
||
filter: blur(var(--background-blur));
|
||
}
|
||
|
||
body.theme-dark.bg-custom .app-container::before {
|
||
filter: brightness(0.54) blur(var(--background-blur));
|
||
}
|
||
|
||
/* === GLASS / TRUE GLASS (both modes) === */
|
||
body.preset-true-glass .app-container::before,
|
||
body.theme-light.preset-true-glass .app-container::before,
|
||
body.theme-dark.preset-true-glass .app-container::before {
|
||
background-image: none;
|
||
filter: blur(var(--background-blur));
|
||
-webkit-backdrop-filter: blur(var(--background-blur));
|
||
backdrop-filter: blur(var(--background-blur));
|
||
}
|
||
|
||
body.theme-light.preset-true-glass .app-container::before {
|
||
background-color: rgba(255, 255, 255, var(--glass-opacity));
|
||
}
|
||
|
||
body.theme-dark.preset-true-glass .app-container::before {
|
||
background-color: rgba(0, 0, 0, var(--glass-opacity));
|
||
}
|
||
|
||
/* ===================== Background Color Tint ===================== */
|
||
/*
|
||
Tint overlay via ::after. Works in both dark and light mode.
|
||
Default opacity: 0 — zero GPU cost when off.
|
||
mix-blend-mode: color preserves background luminosity, applies only the hue.
|
||
*/
|
||
|
||
.app-container::after {
|
||
content: "";
|
||
/* create the pseudo-element */
|
||
position: fixed;
|
||
/* cover the entire viewport */
|
||
inset: 0;
|
||
/* stretch to all edges */
|
||
/* build color from hsl-split vars + separate opacity slider */
|
||
background-color: hsla(var(--bg-tint-color-h),
|
||
var(--bg-tint-color-s),
|
||
var(--bg-tint-color-l),
|
||
var(--bg-tint-opacity));
|
||
z-index: -1;
|
||
/* above ::before (bg), below content */
|
||
pointer-events: none;
|
||
/* don't block any mouse/touch events */
|
||
/*
|
||
mix-blend-mode: color lets the luminosity of the blurred
|
||
background show through while applying the chosen hue.
|
||
*/
|
||
mix-blend-mode: color;
|
||
}
|
||
|
||
/* ===================== Background Color Tint ===================== */
|
||
|
||
/* ===================== blurred background via pseudo-element ===================== */
|
||
|
||
/* left menu text */
|
||
.nav-file-title,
|
||
.nav-folder-title {
|
||
color: var(--kolorboku);
|
||
}
|
||
|
||
.workspace-split.mod-root {
|
||
background-color: var(--background-primary);
|
||
}
|
||
|
||
/* background image is now on .app-container::before, not here */
|
||
.horizontal-main-container {
|
||
background-size: cover;
|
||
background-position: center;
|
||
}
|
||
|
||
body.is-focused .titlebar,
|
||
body.is-focused .workspace-ribbon.mod-left {
|
||
--titlebar-background: var(--tr);
|
||
}
|
||
|
||
.workspace-tab-header-container {
|
||
background-color: var(--tr);
|
||
}
|
||
|
||
/* Enhance visibility of the active tab for better navigation
|
||
body.is-focused .workspace-tab-header-container .workspace-tab-header {
|
||
color: #666666;
|
||
}*/
|
||
|
||
|
||
.is-hidden-frameless:not(.is-fullscreen).is-focused .titlebar-button-container.mod-right {
|
||
background-color: var(--tr);
|
||
}
|
||
|
||
.modal {
|
||
-webkit-backdrop-filter: blur(var(--ui-blur));
|
||
backdrop-filter: blur(var(--ui-blur));
|
||
transform: translateZ(0);
|
||
will-change: transform, opacity;
|
||
backface-visibility: hidden;
|
||
/* GPU acceleration */
|
||
contain: layout style paint;
|
||
border: 1px solid #00000000;
|
||
background-color: var(--overlay-color);
|
||
--settings-background: var(--overlay-color);
|
||
--modal-background: var(--overlay-color);
|
||
/* I think this is the best implementation */
|
||
position: relative;
|
||
z-index: 1000;
|
||
}
|
||
|
||
.is-tablet .workspace-drawer-tab-options-list {
|
||
background-color: #000000;
|
||
}
|
||
|
||
/* remember that phone and mobile are two different things, just so you don't get confused when editing after a break
|
||
is-phone
|
||
is-tablet
|
||
is-mobile - tablet and phone
|
||
*/
|
||
.is-phone .modal {
|
||
-webkit-backdrop-filter: blur(var(--ui-blur));
|
||
backdrop-filter: blur(var(--ui-blur));
|
||
/* brightness at 1 is as if it wasn't there at all */
|
||
}
|
||
|
||
.modal-bg {
|
||
width: 100%;
|
||
background-color: var(--tr);
|
||
}
|
||
|
||
.theme-dark .menu,
|
||
/* Specificity hack to override default Obsidian background */
|
||
.theme-light .menu {
|
||
-webkit-backdrop-filter: blur(var(--ui-blur));
|
||
backdrop-filter: blur(var(--ui-blur));
|
||
transform: translateZ(0);
|
||
will-change: transform, opacity;
|
||
backface-visibility: hidden;
|
||
/* GPU acceleration */
|
||
contain: layout style paint;
|
||
background-color: var(--overlay-color);
|
||
border: 1px solid #00000000;
|
||
}
|
||
|
||
hr {
|
||
border-color: var(--kolorboku);
|
||
/* horizontal line fix */
|
||
|
||
margin: 0;
|
||
}
|
||
|
||
|
||
.menu-separator {
|
||
border-bottom: 0px solid;
|
||
/* right mouse button */
|
||
}
|
||
|
||
body.theme-light .prompt,
|
||
body.theme-dark .prompt {
|
||
-webkit-backdrop-filter: blur(var(--ui-blur));
|
||
backdrop-filter: blur(var(--ui-blur));
|
||
transform: translateZ(0);
|
||
will-change: transform, opacity;
|
||
backface-visibility: hidden;
|
||
/* GPU acceleration */
|
||
contain: layout style paint;
|
||
border: 1px solid #00000000;
|
||
background-color: var(--overlay-color);
|
||
}
|
||
|
||
body:not(.is-mobile):not(.enchanted-animations-present) .prompt {
|
||
animation: promptSlideUp var(--anim-duration-moderate) cubic-bezier(0.2, 0.8, 0.2, 1);
|
||
}
|
||
|
||
@keyframes promptSlideUp {
|
||
0% {
|
||
opacity: 0;
|
||
transform: translateY(40px);
|
||
}
|
||
|
||
100% {
|
||
opacity: 1;
|
||
transform: translateY(0);
|
||
}
|
||
}
|
||
|
||
/* ==================== Mobile menu & prompt animations ==================== */
|
||
/* is-mobile covers both phone and tablet */
|
||
/* 750ms suits better here, but will be refined in a future update */
|
||
body.is-phone:not(.enchanted-animations-present) .menu {
|
||
/* phone only — on tablet this animation looks poor */
|
||
animation: tr-mobile-slide-up var(--anim-duration-slow) cubic-bezier(0.16, 1, 0.3, 1);
|
||
}
|
||
|
||
body.is-mobile:not(.enchanted-animations-present) .prompt {
|
||
animation: tr-mobile-slide-up var(--anim-duration-slow) cubic-bezier(0.16, 1, 0.3, 1);
|
||
}
|
||
|
||
/* ==================== Settings mobile bypass ==================== */
|
||
/* im really proud of this tbh */
|
||
@keyframes tr-settings-slide {
|
||
0% {
|
||
opacity: 0;
|
||
transform: translateX(var(--slide-start));
|
||
}
|
||
|
||
100% {
|
||
opacity: 1;
|
||
transform: translateX(0);
|
||
}
|
||
}
|
||
|
||
body.is-phone:not(.enchanted-animations-present) .modal.mod-settings .vertical-tab-content-container {
|
||
--slide-start: 30px;
|
||
animation: tr-settings-slide var(--anim-duration-slow) cubic-bezier(0.16, 1, 0.3, 1) both;
|
||
}
|
||
|
||
body.is-phone:not(.enchanted-animations-present) .modal.mod-settings .vertical-tab-header {
|
||
--slide-start: -30px;
|
||
animation: tr-settings-slide var(--anim-duration-slow) cubic-bezier(0.16, 1, 0.3, 1) both;
|
||
}
|
||
|
||
/* end ==================== Settings mobile drill-down ==================== */
|
||
|
||
@keyframes tr-mobile-slide-up {
|
||
from {
|
||
opacity: 0;
|
||
transform: translateY(30px);
|
||
}
|
||
|
||
to {
|
||
opacity: 1;
|
||
transform: translateY(0);
|
||
}
|
||
}
|
||
|
||
/* Mobile toolbar options list (tablet & phone bottom toolbar) */
|
||
/*.is-mobile .mobile-toolbar-options-container {
|
||
animation: tr-mobile-slide-up var(--anim-duration-moderate) cubic-bezier(0.16, 1, 0.3, 1);
|
||
}
|
||
commented out because it wasnt really good looking
|
||
*/
|
||
|
||
/* High specificity required to override default Obsidian styling */
|
||
body.theme-dark .modal-container .modal.mod-settings .vertical-tab-content,
|
||
body.theme-light .modal-container .modal.mod-settings .vertical-tab-content {
|
||
background-color: var(--tr);
|
||
background: var(--tr);
|
||
}
|
||
|
||
/* dont add blur in small places because its useless */
|
||
textarea,
|
||
input.metadata-input-text,
|
||
input[type="date"],
|
||
input[type="datetime-local"],
|
||
input[type="text"]:not(.prompt-input),
|
||
input[type="search"],
|
||
input[type="email"],
|
||
input[type="password"],
|
||
input[type="number"] {
|
||
background-color: var(--tr06);
|
||
}
|
||
|
||
/* sliders */
|
||
input[type="range"] {
|
||
background-color: hsla(var(--interactive-accent-hsl), 0.5);
|
||
accent-color: hsla(var(--color-accent-hsl), 0.6);
|
||
}
|
||
|
||
|
||
.suggestion-container.mod-search-suggestion {
|
||
background-color: var(--tr);
|
||
-webkit-backdrop-filter: brightness(var(--brightness)) blur(var(--ui-blur));
|
||
backdrop-filter: brightness(var(--brightness)) blur(var(--ui-blur));
|
||
border-color: var(--tr);
|
||
max-height: 600px;
|
||
}
|
||
/* Button styling */
|
||
button:not(.clickable-icon):not(.nn-icon-button):not(.nn-list-group-header-collapse-button):not(.nn-mobile-toolbar-button):not(.copy-code-button) { /* "nn" prefix = Notebook Navigator plugin integration */
|
||
background-color: var(--color-accent);
|
||
box-shadow: none;
|
||
color: var(--text-on-accent);
|
||
}
|
||
/* right click on top right centered down arrow adjustments */
|
||
.menu-scroll {
|
||
display: inline;
|
||
}
|
||
|
||
/* presentation background fix */
|
||
.reveal .slide-background-content {
|
||
background-image: var(--background-image-base64);
|
||
background-size: cover;
|
||
filter: brightness(var(--brightness)) blur(var(--background-blur));
|
||
}
|
||
|
||
.reveal .progress span {
|
||
background-color: var(--color-accent);
|
||
}
|
||
|
||
.reveal .controls {
|
||
color: var(--color-accent);
|
||
}
|
||
|
||
.reveal a {
|
||
color: var(--color-accent);
|
||
}
|
||
|
||
/* done task fix */
|
||
input[type="checkbox"]:checked:after {
|
||
background-color: #1c2e28;
|
||
}
|
||
|
||
select,
|
||
.dropdown {
|
||
background-color: var(--tr06);
|
||
box-shadow: none;
|
||
}
|
||
|
||
select.dropdown option {
|
||
background-color: var(--background-primary-alt);
|
||
}
|
||
|
||
|
||
|
||
/* blur of 80px looks bad there */
|
||
.status-bar {
|
||
-webkit-backdrop-filter: blur(2px);
|
||
backdrop-filter: blur(2px);
|
||
}
|
||
|
||
body:not(.enchanted-animations-present) .notice {
|
||
background-color: var(--tr);
|
||
-webkit-backdrop-filter: brightness(var(--brightness)) blur(var(--ui-blur));
|
||
backdrop-filter: brightness(var(--brightness)) blur(var(--ui-blur));
|
||
color: var(--kolorboku);
|
||
animation: tr-notice-in-desktop var(--anim-duration-slow) cubic-bezier(0.16, 1, 0.3, 1);
|
||
}
|
||
|
||
/* ==================== Notice animation ==================== */
|
||
body.is-phone:not(.enchanted-animations-present) .notice {
|
||
animation: tr-notice-in-mobile 1000ms cubic-bezier(0.16, 1, 0.3, 1);
|
||
}
|
||
|
||
@keyframes tr-notice-in-desktop {
|
||
from {
|
||
opacity: 0;
|
||
transform: translateX(40px);
|
||
}
|
||
|
||
to {
|
||
opacity: 1;
|
||
transform: translateX(0);
|
||
}
|
||
}
|
||
|
||
@keyframes tr-notice-in-mobile {
|
||
from {
|
||
opacity: 0;
|
||
transform: translateY(30px);
|
||
}
|
||
|
||
to {
|
||
opacity: 1;
|
||
transform: translateY(0);
|
||
}
|
||
}
|
||
|
||
/* ==================== Notice animation ==================== */
|
||
|
||
/* consistency */
|
||
.canvas-control-item:hover {
|
||
background-color: var(--background-modifier-hover);
|
||
}
|
||
|
||
|
||
/* graph view */
|
||
.graph-controls {
|
||
background-color: #00000080;
|
||
-webkit-backdrop-filter:
|
||
/*brightness(var(--brightness))*/
|
||
blur(12px);
|
||
backdrop-filter:
|
||
/*brightness(var(--brightness))*/
|
||
blur(12px);
|
||
}
|
||
|
||
.graph-controls:not(.is-close) {
|
||
box-shadow: none;
|
||
border: 0px solid var(--tr);
|
||
}
|
||
|
||
/* Table border styling */
|
||
body .markdown-rendered th,
|
||
body .markdown-rendered td,
|
||
body .cm-html-embed th,
|
||
body .cm-html-embed td,
|
||
body .markdown-rendered thead tr>th,
|
||
body .cm-html-embed thead tr>th {
|
||
border: var(--table-border-width) solid rgba(255, 255, 255, var(--border-opacity));
|
||
border-color: rgba(255, 255, 255, var(--border-opacity));
|
||
}
|
||
|
||
.markdown-source-view.mod-cm6 .cm-indent::before {
|
||
border-inline-end: 0;
|
||
}
|
||
|
||
/* Code block and inline code backgrounds */
|
||
.cm-s-obsidian div.HyperMD-codeblock-bg,
|
||
.cm-s-obsidian .cm-inline-code:not(.cm-formatting),
|
||
.markdown-rendered pre,
|
||
.markdown-rendered code,
|
||
.cm-s-obsidian span.cm-inline-code {
|
||
background-color: var(--tr06);
|
||
}
|
||
|
||
|
||
.checkbox-container:after {
|
||
background-color: #00000099;
|
||
}
|
||
|
||
.slider {
|
||
color: #000000;
|
||
background-color: #000000;
|
||
}
|
||
|
||
input[type="range"]::-webkit-slider-thumb {
|
||
background: var(--color-accent);
|
||
border-color: var(--color-accent);
|
||
}
|
||
|
||
/* canvas */
|
||
body.hide-canvas-dots svg.canvas-background {
|
||
display: none;
|
||
}
|
||
|
||
/* Canvas export / screenshot background fix */
|
||
.theme-dark .canvas-wrapper.is-screenshotting,
|
||
.theme-light .canvas-wrapper.is-screenshotting {
|
||
background-color: var(--fakeblur);
|
||
background-image: none;
|
||
}
|
||
|
||
.canvas-control-item {
|
||
background-color: #00000000;
|
||
border-radius: var(--canvas-controls-radius);
|
||
}
|
||
|
||
.canvas-card-menu,
|
||
.canvas-control-group {
|
||
box-shadow: none;
|
||
}
|
||
|
||
.canvas-control-group {
|
||
background-color: var(--tr);
|
||
}
|
||
|
||
.canvas-color-picker-item {
|
||
border: none;
|
||
/* smoother color pallet looks */
|
||
}
|
||
|
||
/* hover on links */
|
||
.popover.hover-popover .markdown-preview-view {
|
||
background-color: var(--tr);
|
||
-webkit-backdrop-filter: brightness(var(--brightness)) blur(var(--ui-blur));
|
||
backdrop-filter: brightness(var(--brightness)) blur(var(--ui-blur));
|
||
}
|
||
|
||
.file-embed {
|
||
background-color: var(--tr06);
|
||
}
|
||
|
||
/* tasks integration */
|
||
|
||
/* make.md integration */
|
||
|
||
.mk-menu-container {
|
||
width: auto;
|
||
}
|
||
|
||
/* templater code look better */
|
||
.cm-s-obsidian .templater-command-bg {
|
||
background-color: var(--tr06);
|
||
}
|
||
|
||
/* better settings */
|
||
.vertical-tab-header-group-title {
|
||
color: var(--color-accent);
|
||
}
|
||
|
||
/* you can find this in canvas for example after hovering over menu on the right */
|
||
|
||
.tooltip {
|
||
background-color: var(--fakeblur);
|
||
/* this color is a fake blur used in places where real blur can't be applied or it is soo small so it doesn't make sense to apply it */
|
||
color: var(--text-normal);
|
||
}
|
||
|
||
.tooltip .tooltip-arrow {
|
||
border-bottom: 5px solid var(--fakeblur);
|
||
}
|
||
|
||
.tooltip.mod-right .tooltip-arrow {
|
||
border-right: 5px solid var(--fakeblur);
|
||
}
|
||
|
||
.tooltip.mod-left .tooltip-arrow {
|
||
border-left: 5px solid var(--fakeblur);
|
||
}
|
||
|
||
/* bases */
|
||
/* there's definitely a lot to do with fake blur here because when elements overlap each other you get shades of black instead of the intended theme aesthetic */
|
||
.bases-table-container {
|
||
background: #00000000;
|
||
}
|
||
|
||
/* these 3 things are for the table in bases */
|
||
.bases-tr {
|
||
box-shadow: 0 calc(var(--bases-table-row-border-width) * -1) 0 rgba(255, 255, 255, var(--border-opacity));
|
||
/* only the color matters here but the rest must stay */
|
||
}
|
||
|
||
.bases-td {
|
||
box-shadow: calc(var(--bases-table-column-border-width) * -1) 0 0 rgba(255, 255, 255, var(--border-opacity));
|
||
}
|
||
|
||
.bases-header {
|
||
border-color: rgba(255, 255, 255, var(--border-opacity));
|
||
}
|
||
|
||
.markdown-source-view.mod-cm6 .cm-scroller {
|
||
background-color: var(--tr);
|
||
/* backdrop-filter: blur(var(--ui-blur)); */
|
||
}
|
||
|
||
.popover.hover-popover.is-editing {
|
||
outline: 0px var(--tr);
|
||
border-color: var(--tr);
|
||
}
|
||
|
||
.bases-query-container .filter-row .filter-operator {
|
||
border-width: 0 0px;
|
||
}
|
||
|
||
.bases-query-container .filter-expression {
|
||
--metadata-property-box-shadow: 0 0 0 0px var(--tr);
|
||
}
|
||
|
||
.popover,
|
||
.formula-editor .cm-tooltip.cm-tooltip-autocomplete,
|
||
.suggestion,
|
||
.suggestion-container,
|
||
.combobox .search-input-container,
|
||
.mk-menu-container {
|
||
background-color: var(--tr);
|
||
-webkit-backdrop-filter: brightness(var(--brightness)) blur(var(--ui-blur));
|
||
backdrop-filter: brightness(var(--brightness)) blur(var(--ui-blur));
|
||
}
|
||
|
||
|
||
/* ===================== mobile ===================== */
|
||
.is-phone .menu-group .menu-item.is-label {
|
||
/* better context menu label on folders */
|
||
padding: 6px 16px;
|
||
margin: 8px 12px 8px 12px;
|
||
color: var(--text-normal);
|
||
}
|
||
|
||
/* better settings on mobile */
|
||
.is-phone .vertical-tab-header-group-title {
|
||
color: var(--color-accent);
|
||
}
|
||
|
||
/* tab manager on mobile/ */
|
||
.mobile-tab-preview-empty {
|
||
box-shadow: none;
|
||
}
|
||
|
||
.mobile-tab-preview:before {
|
||
box-shadow: 0 0px 30px 15px rgba(0, 0, 0, 0.2);
|
||
}
|
||
|
||
/* */
|
||
|
||
.is-phone .workspace-drawer {
|
||
background-color: #00000000;
|
||
z-index: 15;
|
||
}
|
||
|
||
.mobile-toolbar-options-list {
|
||
background-color: var(--tr);
|
||
-webkit-backdrop-filter: brightness(var(--brightness)) blur(var(--ui-blur));
|
||
backdrop-filter: brightness(var(--brightness)) blur(var(--ui-blur));
|
||
border-color: var(--tr);
|
||
}
|
||
|
||
/* github issue #4 fix */
|
||
|
||
.mobile-toolbar {
|
||
background-color: var(--tr);
|
||
}
|
||
|
||
.is-mobile .mod-raised {
|
||
-webkit-backdrop-filter: brightness(var(--brightness)) blur(var(--ui-blur));
|
||
backdrop-filter: brightness(var(--brightness)) blur(var(--ui-blur));
|
||
}
|
||
|
||
.is-phone .workspace-split {
|
||
padding-top: 0;
|
||
}
|
||
|
||
.is-phone .mobile-tab-switcher {
|
||
background-color: var(--tr06);
|
||
-webkit-backdrop-filter: blur(var(--ui-blur));
|
||
backdrop-filter: blur(var(--ui-blur));
|
||
}
|
||
|
||
/* right sidebar menu for those extensions */
|
||
.is-phone .workspace-drawer-tab-options-list {
|
||
background-color: #000000;
|
||
}
|
||
|
||
.is-phone .menu-group .menu-item:not(.is-label):after {
|
||
background-color: var(--tr);
|
||
}
|
||
|
||
.theme-dark.is-phone .workspace-drawer .nav-buttons-container .nav-action-button {
|
||
/* background-color: #1d1e19;
|
||
Hardcoded value due to specificity challenges */
|
||
z-index: 1;
|
||
}
|
||
|
||
.theme-light.is-phone .workspace-drawer .nav-buttons-container .nav-action-button {
|
||
/* background-color: #ffffff;
|
||
Hardcoded value due to specificity challenges */
|
||
z-index: 1;
|
||
}
|
||
|
||
/* fade at the bottom of file list, behind nav buttons */
|
||
.is-phone .workspace-drawer .nav-files-container {
|
||
-webkit-mask-image: linear-gradient(to bottom,
|
||
black calc(100% - 120px),
|
||
var(--tr));
|
||
mask-image: linear-gradient(to bottom, black calc(100% - 120px), var(--tr));
|
||
}
|
||
|
||
.setting-group .setting-items {
|
||
background-color: var(--tr);
|
||
}
|
||
|
||
.setting-group .setting-group-search {
|
||
background-color: var(--tr);
|
||
}
|
||
|
||
.setting-item {
|
||
background-color: var(--tr);
|
||
}
|
||
|
||
/* Hide every scrollbar in obsidian based from https://github.com/Lithou/Sandbox/blob/main/.obsidian/snippets/scrollbar.css */
|
||
::-webkit-scrollbar {
|
||
visibility: hidden;
|
||
}
|
||
|
||
::-webkit-scrollbar-thumb {
|
||
visibility: hidden;
|
||
}
|
||
|
||
::-webkit-scrollbar:hover {
|
||
visibility: initial;
|
||
}
|
||
|
||
::-webkit-scrollbar-thumb:hover {
|
||
visibility: initial;
|
||
}
|
||
|
||
body.show-scrollbars ::-webkit-scrollbar {
|
||
visibility: initial;
|
||
}
|
||
|
||
body.show-scrollbars ::-webkit-scrollbar-thumb {
|
||
visibility: initial;
|
||
}
|
||
|
||
/* until there thanks Lithou */
|
||
|
||
.markdown-rendered hr {
|
||
border-color: rgba(255, 255, 255, var(--border-opacity));
|
||
}
|
||
|
||
.mobile-navbar {
|
||
position: absolute;
|
||
background-color: var(--tr);
|
||
transition:
|
||
opacity var(--anim-duration-moderate) cubic-bezier(0.16, 1, 0.3, 1),
|
||
margin-bottom var(--anim-duration-moderate) cubic-bezier(0.16, 1, 0.3, 1),
|
||
transform var(--anim-duration-moderate) cubic-bezier(0.16, 1, 0.3, 1);
|
||
will-change: transform, opacity;
|
||
backface-visibility: hidden;
|
||
}
|
||
|
||
.is-phone .view-header {
|
||
transition:
|
||
opacity var(--anim-duration-moderate) cubic-bezier(0.16, 1, 0.3, 1),
|
||
transform var(--anim-duration-moderate) cubic-bezier(0.16, 1, 0.3, 1);
|
||
will-change: transform, opacity;
|
||
backface-visibility: hidden;
|
||
}
|
||
|
||
|
||
.is-mobile.is-floating-nav .mod-raised {
|
||
-webkit-backdrop-filter: brightness(var(--brightness)) blur(12px);
|
||
backdrop-filter: brightness(var(--brightness)) blur(12px);
|
||
}
|
||
|
||
/* Remove backdrop-filter specifically from the settings icon in the mobile drawer header when beta option is enabled */
|
||
body.is-mobile.disable-drawer-dimming .clickable-icon.workspace-drawer-header-icon.mod-raised.mod-settings {
|
||
-webkit-backdrop-filter: none;
|
||
backdrop-filter: none;
|
||
}
|
||
|
||
/* blur + dimming when sliding sidebars is disabled */
|
||
.workspace-drawer-inner {
|
||
-webkit-backdrop-filter: brightness(var(--brightness)) blur(var(--ui-blur));
|
||
backdrop-filter: brightness(var(--brightness)) blur(var(--ui-blur));
|
||
will-change: width, filter, backdrop-filter;
|
||
transition: width cubic-bezier(0.16, 1, 0.3, 1) var(--anim-duration-slow);
|
||
}
|
||
|
||
body.is-mobile.disable-drawer-dimming .workspace-drawer-inner {
|
||
-webkit-backdrop-filter: none;
|
||
backdrop-filter: none;
|
||
}
|
||
|
||
/* when sliding sidebars is enabled - no blur or dimming */
|
||
.is-sliding .workspace-drawer-inner {
|
||
-webkit-backdrop-filter: none;
|
||
backdrop-filter: none;
|
||
}
|
||
|
||
/* background dimming behind drawer when sliding sidebars is disabled */
|
||
.workspace-drawer-backdrop {
|
||
background-color: rgba(0, 0, 0, 0);
|
||
/* was 0.5 */
|
||
transition: opacity cubic-bezier(0.16, 1, 0.3, 1) var(--anim-duration-slow);
|
||
}
|
||
|
||
.is-sliding .workspace-drawer-backdrop {
|
||
background-color: var(--tr);
|
||
}
|
||
|
||
.is-mobile .suggestion-container {
|
||
border-radius: var(--radius-l);
|
||
background-color: #00000000;
|
||
}
|
||
|
||
.popover,
|
||
.suggestion-container,
|
||
.cm-tooltip.cm-tooltip-autocomplete {
|
||
border: 0px;
|
||
}
|
||
|
||
/* community themes fix top right X button
|
||
.is-phone .community-modal-controls {
|
||
padding-top: var(--size-4-12);
|
||
}
|
||
*/
|
||
.is-mobile .metadata-content {
|
||
background-color: var(--tr);
|
||
}
|
||
|
||
.canvas-controls {
|
||
-webkit-backdrop-filter: blur(20px);
|
||
backdrop-filter: blur(20px);
|
||
border-radius: 24px;
|
||
/* fixed because of difference between mobile and desktop */
|
||
gap: 4px;
|
||
|
||
}
|
||
|
||
|
||
.metadata-property-icon {
|
||
padding: var(--size-4-1) 5px;
|
||
}
|
||
|
||
/* syncs */
|
||
.sync-status-icon.mod-error {
|
||
color: #dadada90;
|
||
}
|
||
|
||
body.default-sync-error .sync-status-icon.mod-error {
|
||
color: var(--text-error);
|
||
}
|
||
|
||
/* ===================== settings open animation ===================== */
|
||
@keyframes modal-open {
|
||
from {
|
||
opacity: 0;
|
||
transform: scale(0.93) translateY(15px);
|
||
}
|
||
|
||
to {
|
||
opacity: 1;
|
||
transform: scale(1) translateY(0);
|
||
}
|
||
}
|
||
|
||
@keyframes modal-bg-fade {
|
||
from {
|
||
opacity: 0;
|
||
}
|
||
|
||
to {
|
||
opacity: 1;
|
||
}
|
||
}
|
||
|
||
/* Settings Modal Open Animation – enabled by default, can be disabled via Style Settings */
|
||
body:not(.disable-modal-animation):not(.enchanted-animations-present) .modal {
|
||
animation: modal-open calc(var(--animationspeed) * 0.7) cubic-bezier(0.2, 0, 0, 1) forwards;
|
||
}
|
||
|
||
/* Modal Background Dimming */
|
||
body:not(.disable-modal-animation):not(.enchanted-animations-present) .modal-bg {
|
||
animation: modal-bg-fade calc(var(--animationspeed) * 0.7) cubic-bezier(0.2, 0, 0, 1) forwards;
|
||
}
|
||
|
||
/* ===================== code blocks border radius ===================== */
|
||
|
||
.cm-s-obsidian div.HyperMD-codeblock-begin-bg {
|
||
border-top-left-radius: var(--radius-l);
|
||
border-top-right-radius: var(--radius-l);
|
||
}
|
||
|
||
.cm-s-obsidian div.HyperMD-codeblock-end-bg {
|
||
border-bottom-left-radius: var(--radius-l);
|
||
border-bottom-right-radius: var(--radius-l);
|
||
}
|
||
|
||
.callout {
|
||
border-radius: var(--radius-l);
|
||
}
|
||
|
||
/* mobile settings improvements */
|
||
.is-phone .modal .vertical-tab-header-group-title {
|
||
color: var(--color-accent);
|
||
}
|
||
|
||
/* ===================== Accent Everywhere Snippet ===================== */
|
||
|
||
body.accent-everywhere.theme-dark,
|
||
body.accent-everywhere.theme-light {
|
||
--text-muted: var(--color-accent-2);
|
||
--titlebar-text-color: var(--color-accent);
|
||
--titlebar-text-color-focused: var(--color-accent);
|
||
--color-accent-tr-20: hsla(var(--color-accent-hsl), 0.2);
|
||
--color-accent-tr-50: hsla(var(--color-accent-hsl), 0.5);
|
||
--color-accent-tr-85: hsla(var(--color-accent-hsl), 0.85);
|
||
--text-faint: var(--color-accent-tr-85);
|
||
--slider-track-background: var(--color-accent-tr-50);
|
||
--hr-color: var(--color-accent);
|
||
|
||
--h1-color: var(--color-accent);
|
||
--h2-color: var(--color-accent);
|
||
--h3-color: var(--text-muted);
|
||
--h4-color: var(--text-muted);
|
||
--h5-color: var(--text-faint);
|
||
--h6-color: var(--text-faint);
|
||
|
||
--h1-weight: 800;
|
||
--h2-weight: 700;
|
||
--h3-weight: 600;
|
||
--h4-weight: 500;
|
||
--h5-weight: 400;
|
||
--h6-weight: 400;
|
||
}
|
||
|
||
body.accent-everywhere .clickable-icon,
|
||
body.accent-everywhere .workspace-tab-header-inner .workspace-tab-header-inner-icon,
|
||
body.accent-everywhere .vertical-tab-header-group-title {
|
||
color: var(--color-accent);
|
||
}
|
||
|
||
body.accent-everywhere:not(.is-grabbing) .tree-item-self.is-active:hover,
|
||
body.accent-everywhere .tree-item-self.is-active {
|
||
background-color: var(--color-accent-tr-20);
|
||
}
|
||
|
||
body.accent-everywhere hr {
|
||
border-color: var(--hr-color);
|
||
}
|
||
|
||
/* ===================== Accent Everywhere Snippet ===================== */
|
||
|
||
/* ===================== Animate Note Opening ===================== */
|
||
/*
|
||
Smooth fade-in + slide-up animation when opening or switching notes
|
||
Toggle via Style Settings > animate-note-open
|
||
Uses existing --animationspeed variable
|
||
*/
|
||
|
||
@keyframes tr-note-fade-in {
|
||
from {
|
||
opacity: 0;
|
||
transform: translateY(18px);
|
||
}
|
||
|
||
to {
|
||
opacity: 1;
|
||
transform: translateY(0);
|
||
}
|
||
}
|
||
|
||
/* Main note view - mod-root excludes side-panels, '>' excludes embeds */
|
||
body.preset-orange .workspace-split.mod-root .workspace-leaf-content[data-type="markdown"]>.view-content>.markdown-reading-view,
|
||
body.preset-orange .workspace-split.mod-root .workspace-leaf-content[data-type="markdown"]>.view-content>.markdown-source-view,
|
||
body.preset-orange .workspace-leaf.mod-active .workspace-leaf-content[data-type="markdown"]>.view-content>.markdown-reading-view,
|
||
body.preset-orange .workspace-leaf.mod-active .workspace-leaf-content[data-type="markdown"]>.view-content>.markdown-source-view,
|
||
body.animate-note-open .workspace-split.mod-root .workspace-leaf-content[data-type="markdown"]>.view-content>.markdown-reading-view,
|
||
body.animate-note-open .workspace-split.mod-root .workspace-leaf-content[data-type="markdown"]>.view-content>.markdown-source-view,
|
||
/* mod-active re-fires animation when switching note from the left file panel */
|
||
body.animate-note-open:not(.enchanted-animations-present) .workspace-leaf.mod-active .workspace-leaf-content[data-type="markdown"]>.view-content>.markdown-reading-view,
|
||
body.animate-note-open:not(.enchanted-animations-present) .workspace-leaf.mod-active .workspace-leaf-content[data-type="markdown"]>.view-content>.markdown-source-view {
|
||
animation: tr-note-fade-in var(--anim-duration-moderate) cubic-bezier(0.16, 1, 0.3, 1);
|
||
}
|
||
|
||
/* ===================== Animate Note Opening ===================== */
|
||
|
||
/* ===================== No animations ===================== */
|
||
body.no-animation *,
|
||
body.no-animation *::before,
|
||
body.no-animation *::after {
|
||
transition-duration: 0s;
|
||
animation-duration: 0s;
|
||
}
|
||
|
||
/* ===================== No animations ===================== */
|
||
|
||
/* ===================== Startup Animation (Splash Screen) ===================== */
|
||
/* as for 18 may 2026 this code works on mobile and computer */
|
||
/* this is not my code in general it is inspired by */
|
||
/* Benjamin Fernandez - github.com/benfernandezmedia */
|
||
|
||
body:not(.disable-splash-screen):not(.no-animation):not(.enchanted-animations-present)::before {
|
||
content: "";
|
||
position: fixed;
|
||
inset: 0;
|
||
z-index: 9998;
|
||
pointer-events: none;
|
||
background-color: var(--background-primary);
|
||
animation: splashFade 2.5s ease forwards;
|
||
}
|
||
|
||
body:not(.disable-splash-screen):not(.no-animation):not(.enchanted-animations-present) .workspace {
|
||
animation: vaultReveal 1.2s ease 1.2s backwards;
|
||
}
|
||
|
||
@keyframes vaultReveal {
|
||
from {
|
||
opacity: 0;
|
||
transform: scale(0.98);
|
||
}
|
||
|
||
to {
|
||
opacity: 1;
|
||
transform: scale(1);
|
||
}
|
||
}
|
||
|
||
@keyframes splashFade {
|
||
0% {
|
||
opacity: 1;
|
||
}
|
||
|
||
60% {
|
||
opacity: 1;
|
||
}
|
||
|
||
100% {
|
||
opacity: 0;
|
||
visibility: hidden;
|
||
}
|
||
}
|
||
|
||
/* ===================== Startup Animation (Splash Screen) ===================== */
|
||
|
||
/* ===================== Header Animations ===================== */
|
||
|
||
body:not(.disable-header-animations):not(.enchanted-animations-present) .markdown-source-view.mod-cm6 .cm-line.HyperMD-header .cm-formatting-header {
|
||
position: absolute;
|
||
top: auto;
|
||
animation: materialPopHeader 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
|
||
}
|
||
|
||
@keyframes materialPopHeader {
|
||
0% {
|
||
opacity: 0;
|
||
transform: translateX(-100%) scale(0.6) translateX(-10px);
|
||
}
|
||
|
||
100% {
|
||
opacity: 1;
|
||
transform: translateX(-100%) scale(1) translateX(0);
|
||
}
|
||
}
|
||
|
||
/* line loses focus */
|
||
body:not(.disable-header-animations) .markdown-source-view.mod-cm6 .cm-line.HyperMD-header {
|
||
position: relative;
|
||
transform: translateX(0);
|
||
transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
|
||
}
|
||
|
||
/* line gains focus */
|
||
body:not(.disable-header-animations) .markdown-source-view.mod-cm6 .cm-line.cm-active.HyperMD-header {
|
||
transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
|
||
}
|
||
|
||
/* Hardcoded indent per header level — may need revisiting if header font sizes change */
|
||
body:not(.disable-header-animations) .markdown-source-view.mod-cm6 .cm-line.cm-active {
|
||
&.HyperMD-header-1 {
|
||
transform: translateX(20px);
|
||
}
|
||
|
||
&.HyperMD-header-2 {
|
||
transform: translateX(30px);
|
||
}
|
||
|
||
&.HyperMD-header-3 {
|
||
transform: translateX(40px);
|
||
}
|
||
|
||
&.HyperMD-header-4 {
|
||
transform: translateX(50px);
|
||
}
|
||
|
||
&.HyperMD-header-5 {
|
||
transform: translateX(60px);
|
||
}
|
||
|
||
&.HyperMD-header-6 {
|
||
transform: translateX(70px);
|
||
}
|
||
}
|
||
|
||
/* ===================== Inline Formatting Animations ===================== */
|
||
/* ogolnie to mega dumny jestem z tego kawałka kodu :))) */
|
||
|
||
@keyframes premiumHorizontalPush {
|
||
0% {
|
||
/* left right */
|
||
opacity: 0;
|
||
transform: scale(0.85);
|
||
}
|
||
|
||
100% {
|
||
/* left right */
|
||
opacity: 1;
|
||
transform: scale(1);
|
||
}
|
||
}
|
||
|
||
/* Animates inline markers on the active line.
|
||
Excludes headings, list items, checkboxes, and multi-line code blocks.
|
||
*/
|
||
body:not(.disable-formatting-animations):not(.enchanted-animations-present) .markdown-source-view.mod-cm6 .cm-line.cm-active:not(.HyperMD-codeblock) .cm-formatting:not(.cm-formatting-header):not(.cm-formatting-list):not(.cm-formatting-task) {
|
||
display: inline-block;
|
||
vertical-align: baseline;
|
||
line-height: 0;
|
||
padding-block: 0;
|
||
/* top down */
|
||
will-change: margin-inline, transform, opacity;
|
||
backface-visibility: hidden;
|
||
animation: premiumHorizontalPush 0.3s cubic-bezier(0.25, 1, 0.5, 1.05) forwards;
|
||
}
|
||
|
||
/* ===================== Inline Formatting Animations ===================== */
|
||
|
||
/* ===================== Checkbox Animations (from Enchanted Animations) ===================== */
|
||
/*
|
||
Integration with Enchanted Animations plugin:
|
||
- disable-checkbox-animations is a shared kill switch (Style Settings toggle)
|
||
that disables checkbox animations from BOTH the theme AND the plugin.
|
||
- Plugin OFF → theme checkbox animations apply (using --animationspeed)
|
||
- Plugin ON, checkbox option OFF → theme checkbox animations still apply
|
||
- Plugin ON, checkbox option ON → plugin styles take priority
|
||
(with its own --enchanted-animations-speed / --enchanted-animations-easing)
|
||
- disable-checkbox-animations ON → no checkbox animations anywhere
|
||
*/
|
||
|
||
/* Smooth transition on checkbox scale */
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) input[type="checkbox"],
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) .task-list-item-checkbox {
|
||
transition: transform calc(var(--animationspeed) * 0.5) cubic-bezier(0.2, 0.8, 0.2, 1);
|
||
}
|
||
|
||
/* Press-down squish */
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) input[type="checkbox"]:active,
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) .task-list-item-checkbox:active {
|
||
transform: scale(0.85);
|
||
}
|
||
|
||
/* Pop animation when checked */
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) input[type="checkbox"]:checked,
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) .task-list-item-checkbox:checked {
|
||
animation: tr-checkbox-pop calc(var(--animationspeed) * 0.8) cubic-bezier(0.2, 0.8, 0.2, 1);
|
||
}
|
||
|
||
@keyframes tr-checkbox-pop {
|
||
0% { transform: scale(0.8); }
|
||
50% { transform: scale(1.15); }
|
||
100% { transform: scale(1); }
|
||
}
|
||
|
||
/* Checkmark icon transition */
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) input[type="checkbox"]::after,
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) .task-list-item-checkbox::after {
|
||
transition: transform calc(var(--animationspeed) * 0.5) cubic-bezier(0.2, 0.8, 0.2, 1),
|
||
opacity calc(var(--animationspeed) * 0.5) cubic-bezier(0.2, 0.8, 0.2, 1);
|
||
}
|
||
|
||
/* Checkmark pop on check */
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) input[type="checkbox"]:checked::after,
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) .task-list-item-checkbox:checked::after {
|
||
animation: tr-checkmark-pop calc(var(--animationspeed) * 0.8) cubic-bezier(0.2, 0.8, 0.2, 1);
|
||
transform: scale(1);
|
||
opacity: 1;
|
||
}
|
||
|
||
/* Checkmark disappear on uncheck */
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) input[type="checkbox"]:not(:checked)::after,
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) .task-list-item-checkbox:not(:checked)::after {
|
||
transform: scale(0);
|
||
opacity: 0;
|
||
}
|
||
|
||
@keyframes tr-checkmark-pop {
|
||
0% { transform: scale(0); opacity: 0; }
|
||
100% { transform: scale(1); opacity: 1; }
|
||
}
|
||
|
||
/* Strike-through animation for task list items (Reading View) */
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) .task-list-item {
|
||
transition: opacity calc(var(--animationspeed) * 0.8) cubic-bezier(0.2, 0.8, 0.2, 1),
|
||
color calc(var(--animationspeed) * 0.8) cubic-bezier(0.2, 0.8, 0.2, 1),
|
||
text-decoration-color calc(var(--animationspeed) * 0.8) cubic-bezier(0.2, 0.8, 0.2, 1);
|
||
text-decoration-line: line-through;
|
||
text-decoration-color: transparent;
|
||
}
|
||
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) .task-list-item.is-checked {
|
||
opacity: 0.6;
|
||
text-decoration-color: var(--text-muted);
|
||
color: var(--text-muted);
|
||
}
|
||
|
||
/* Animated strikethrough in Live Preview */
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) .markdown-source-view.mod-cm6 .HyperMD-task-line[data-task] {
|
||
text-decoration: none;
|
||
}
|
||
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) .markdown-source-view.mod-cm6 .HyperMD-task-line[data-task] .cm-line {
|
||
text-decoration: none;
|
||
}
|
||
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) .markdown-source-view.mod-cm6 .HyperMD-task-line[data-task] span:not(.cm-formatting):not(.cm-widgetBuffer):not(.task-list-label):not(.cm-hmd-list-indent):not(.cm-indent) {
|
||
background-image: linear-gradient(var(--text-muted), var(--text-muted));
|
||
background-position: left center;
|
||
background-size: 0% 1.5px;
|
||
background-repeat: no-repeat;
|
||
transition: background-size calc(var(--animationspeed) * 0.8) cubic-bezier(0.2, 0.8, 0.2, 1),
|
||
color calc(var(--animationspeed) * 0.8) cubic-bezier(0.2, 0.8, 0.2, 1);
|
||
}
|
||
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) .markdown-source-view.mod-cm6 .HyperMD-task-line[data-task]:not([data-task=" "]) span:not(.cm-formatting):not(.cm-widgetBuffer):not(.task-list-label):not(.cm-hmd-list-indent):not(.cm-indent) {
|
||
background-size: 100% 1.5px;
|
||
color: var(--text-muted);
|
||
}
|
||
|
||
/* Strikethrough line animation in Live Preview */
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) .cm-strikethrough {
|
||
display: inline-block;
|
||
position: relative;
|
||
text-decoration: none;
|
||
color: var(--text-muted);
|
||
}
|
||
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) .cm-strikethrough::after {
|
||
content: "";
|
||
position: absolute;
|
||
left: 0;
|
||
top: 50%;
|
||
width: 100%;
|
||
height: 1px;
|
||
background-color: currentColor;
|
||
transform-origin: left center;
|
||
animation: tr-strikethrough-anim calc(var(--animationspeed) * 0.8) cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
|
||
}
|
||
|
||
/* Reading mode strike-through */
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) .markdown-preview-view .task-list-item.is-checked s,
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) .markdown-preview-view .task-list-item.is-checked del {
|
||
text-decoration: none;
|
||
position: relative;
|
||
display: inline-block;
|
||
}
|
||
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) .markdown-preview-view .task-list-item.is-checked s::after,
|
||
body:not(.ea-checkbox-animations):not(.disable-checkbox-animations) .markdown-preview-view .task-list-item.is-checked del::after {
|
||
content: "";
|
||
position: absolute;
|
||
left: 0;
|
||
top: 50%;
|
||
width: 100%;
|
||
height: 1.5px;
|
||
background-color: currentColor;
|
||
transform-origin: left center;
|
||
animation: tr-strikethrough-anim calc(var(--animationspeed) * 0.8) cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
|
||
}
|
||
|
||
@keyframes tr-strikethrough-anim {
|
||
0% { transform: scaleX(0); }
|
||
100% { transform: scaleX(1); }
|
||
}
|
||
|
||
/* ===================== Checkbox Animations ===================== */
|
||
|
||
/* ===================== iOS Fixes ===================== */
|
||
body.is-ios .app-container .workspace,
|
||
body.is-ios .app-container .workspace-split,
|
||
body.is-ios .app-container .workspace-leaf,
|
||
body.is-ios .app-container .workspace-leaf-content,
|
||
body.is-ios .app-container .view-content,
|
||
body.is-ios .app-container .view-header {
|
||
background-color: var(--tr);
|
||
} |