hungsu / typomagical-obsidian

An Obsidian theme for typographic appreciators, with support for Style Settings by mgmeyers
https://forum.obsidian.md/t/typomagical-a-theme-for-typographic-appreciators/26860
GNU General Public License v3.0
115 stars 5 forks source link

Custom CSS not always used on Publish #49

Closed DubiousCactus closed 1 year ago

DubiousCactus commented 1 year ago

Hi @hungsu , thanks for the time invested in this beautiful theme! I noticed that a lot of good CSS styling isn't being applied to my Publish blog, like numbered lists and callouts: image image

Is this something you can look into or is that a limitation of Obsidian Publish? EDIT: I found examples of blogs that do it, so it must be achievable: this one and that one RE-EDIT: Aaah, it seems that they're using custom-language code blocks to achieve that, as explained here. That's really disappointing, I love your callout styles but I can't get them on my blog :(

hungsu commented 1 year ago

Hi there @DubiousCactus !

I assume you mean callouts with the icon and gradient border like this:

image

It should be possible! Part of the problem is that my callouts require the Style Settings plugin, because I opted to not make them the default. Same for the circled numbered lists.

I think at this stage I feel safe to make my style the default, and require users to install style settings to turn them off. Doing that should also enable them on your publish site.

I'm rather busy today but might look into this on the weekend

DubiousCactus commented 1 year ago

Aaah yes I see! Those are what I meant yes. I've had similar issues with other themes that use Style Settings, and saw on the forums that it's quite tricky to bundle it in a Publish theme... If I have some time I'll try to figure that out, but I would greatly appreciate it if you'd make it the default style :)

DubiousCactus commented 1 year ago

Hi @hungsu ! Any news on this? I'd be happy to help if you could point me where to work in the CSS :)

hungsu commented 1 year ago

Hi @DubiousCactus ! I'm so so sorry, I had forgotten all about this! As it happens, I've actually been working on a very similar problem of getting CSS working with Digital Garden. I'm at work but I can get to this tonight. If you haven't heard from me by tomorrow feel free to nudge me again

hungsu commented 1 year ago

Hi @DubiousCactus , one thing you can try:

Copy the code below, save it to your Obsidian Vault as publish.css, then publish your site. I haven't ever used Obsidian Publish, but in theory this should work!

.callout {
    background-color: transparent !important;
    border-style: solid;
    border-width: 1px 1px 1px 0;
    border-image: linear-gradient(90deg, transparent, rgba(var(--callout-color), 0.25)) 1;
}
.callout .callout-icon {
    padding-right: 10px;
}
.callout svg {
    transform: scale(1.25);
}
.callout .callout-title {
    padding-left: 0;
    padding-top: 1em;
    padding-bottom: 1em;
}
.callout .callout-content {
    padding-left: 32px;
}
.callout .callout-content p:first-child {
    margin-top: 0;
}
DubiousCactus commented 1 year ago

Thanks a lot, @hungsu, that works! I've had to append it to my publish.css, which is a copy of your theme CSS. However, there's a slight inconsistency: links are purple instead of light blue/cyan in the callouts. Maybe you forgot to style them in the CSS? And also, the page title (when using the note title) isn't stylised like in Obsidian, as you can see on the picture: img

But thank you so much for this, I love your theme!

hungsu commented 1 year ago

Glad we have progress @DubiousCactus ! Could you link me to your publish site so I can see where the CSS is breaking? If you'd like to send it to me privately you can email me at hi@hung.su

DubiousCactus commented 1 year ago

Glad we have progress @DubiousCactus ! Could you link me to your publish site so I can see where the CSS is breaking? If you'd like to send it to me privately you can email me at hi@hung.su

No problem, my site is https://notes.theomorales.com

Thanks for helping me!

hungsu commented 1 year ago

Hi @DubiousCactus , thanks for giving me a chance to see how Publish works.

It appears that Publish users have no control of the HTML so you don't have a way of adding Style Settings which is frustrating.

I will have to give you a custom set of publish CSS for now. This should suit you

@charset "UTF-8";
@import url(https://fonts.bunny.net/css?family=spectral:200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i);
@import url("https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400..900;1,400..900&display=swap");
:root {
  /*
    Font size variables, made with https://type-scale.com/ and https://fluid-typography.netlify.app/
    Major Second scale of 1.125 seems comfortable on my phone
    Minor Third scale of 1.2 seems good on desktop
    window width where things start to wrap when Readable line length setting is turned on seems to be around 782px
  */
  --h6-size: clamp(1.125em, calc(1rem + 3vw), 1.2em);
  --h5-size: clamp(1.266em, calc(1rem + 3vw), 1.44em);
  --h4-size: clamp(1.424em, calc(1rem + 3vw), 1.728em);
  --h3-size: clamp(1.602em, calc(0.8rem + 2.5vw), 2.074em);
  --h2-size: clamp(1.802em, calc(0.6rem + 3.7vw), 2.488em);
  --h1-size: clamp(2.027em, calc(0.4rem + 5.1vw), 2.986em);
}

body.type-scale-none {
  --h6-size: var(--font-text-size);
  --h5-size: var(--font-text-size);
  --h4-size: var(--font-text-size);
  --h3-size: var(--font-text-size);
  --h2-size: var(--font-text-size);
  --h1-size: var(--font-text-size);
}

body.type-scale-slight {
  --h6-size: 1rem;
  --h5-size: clamp(1rem, 12vw - 3.7rem, 1.1rem);
  --h4-size: clamp(1rem, 12vw - 3.7rem, 1.2rem);
  --h3-size: clamp(1.125rem, 12vw - 3.7rem, 1.3rem);
  --h2-size: clamp(1.125rem, 12vw - 3.7rem, 1.4rem);
  --h1-size: clamp(1.125rem, 12vw - 3.7rem, 1.5rem);
}

/* 1.125 */
body.type-scale-minor-second {
  --h6-size: 1.067em;
  --h5-size: 1.138em;
  --h4-size: 1.215em;
  --h3-size: 1.296em;
  --h2-size: 1.383em;
  --h1-size: 1.476em;
}

/* 1.125 */
body.type-scale-major-second {
  --h6-size: 1.125em;
  --h5-size: 1.266em;
  --h4-size: 1.424em;
  --h3-size: 1.602em;
  --h2-size: 1.802em;
  --h1-size: 2.027em;
}

/* 1.2 */
body.type-scale-minor-third {
  --h6-size: 1.2em;
  --h5-size: 1.44em;
  --h4-size: 1.728em;
  --h3-size: 2.074em;
  --h2-size: 2.488em;
  --h1-size: 2.986em;
}

/* 1.25 */
body.type-scale-major-third {
  --h6-size: 1.25em;
  --h5-size: 1.563em;
  --h4-size: 1.953em;
  --h3-size: 2.441em;
  --h2-size: 3.052em;
  --h1-size: 3.815em;
}

/* latin-ext */
@font-face {
  font-family: "Source Sans Pro";
  font-style: italic;
  font-weight: 300;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZZMkidi18Smxg.woff2) format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: "Source Sans Pro";
  font-style: italic;
  font-weight: 300;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZZMkids18Q.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: "Source Sans Pro";
  font-style: italic;
  font-weight: 600;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdi18Smxg.woff2) format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: "Source Sans Pro";
  font-style: italic;
  font-weight: 600;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCds18Q.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: "Source Sans Pro";
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmRduz8A.woff2) format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: "Source Sans Pro";
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: "Source Sans Pro";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmRduz8A.woff2) format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: "Source Sans Pro";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: "Source Sans Pro";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmRduz8A.woff2) format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: "Source Sans Pro";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Amiri";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/amiri/v17/J7aRnpd8CGxBHpUutLM.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin */
@font-face {
  font-family: "Amiri";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/amiri/v17/J7acnpd8CGxBHp2VkaY_zp4.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: "Amiri";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/amiri/v17/J7acnpd8CGxBHp2VkaYxzp5yGw.woff2) format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: "Bitter";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/bitter/v19/raxhHiqOu8IVPmnRc6SY1KXhnF_Y8SjYOLjOXQ.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: "Bitter";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/bitter/v19/raxhHiqOu8IVPmnRc6SY1KXhnF_Y8SjYOLbOXWh2.woff2) format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
:root {
  /* A good Title font should have a beautiful Ampersand (&) and ligatures */
  --font-title: "Amiri";
  --line-height-headings: 1.2;
  --heading-weight: 600;
}

h1,
h1.embedded-note-title,
.cm-header.cm-header-1,
.inline-title,
.cm-s-obsidian .cm-header.cm-header-1,
.HyperMD-header-1.HyperMD-header .cm-header-1,
.markdown-preview-view h1 {
  font-weight: 700;
  color: var(--text-title-h1);
  font-family: var(--font-title);
  padding-bottom: 7px;
}

.css-settings-manager h1,
.css-settings-manager h1.embedded-note-title,
.css-settings-manager .cm-header.cm-header-1,
.css-settings-manager .inline-title {
  font-weight: var(--title-weight);
}

h1.embedded-note-title.embedded-note-title,
.cm-header-1,
.markdown-preview-view h1,
.cm-header-2,
.markdown-preview-view h2,
.cm-header-3,
.markdown-preview-view h3,
.cm-header-4,
.markdown-preview-view h4,
.cm-header-5,
.markdown-preview-view h5,
.cm-header-6,
.markdown-preview-view h6 {
  line-height: var(--line-height-headings);
}

.cm-s-obsidian .cm-header,
h2,
h3,
h4,
h5,
h6 {
  font-weight: var(--heading-weight);
}

.cm-header-2,
.markdown-preview-view h2,
.cm-header-3,
.markdown-preview-view h3,
.cm-header-4,
.markdown-preview-view h4,
.cm-header-5,
.markdown-preview-view h5,
.cm-header-6,
.markdown-preview-view h6 {
  font-weight: var(--heading-weight);
  letter-spacing: -0.03em;
}

/* @settings

name: Typomagical Headings
id: typomagical-title
settings:
    -
        id: font-title
        title: Title font
        description: Titles, or H1s, are special. Thus, they should look special. Choose a Title font that suits you!
        type: variable-select
        default: Amiri
        options:
                - Amiri
                - Bitter
                - Playfair Display
    -
        id: title-weight
        title: Title weight
        description: The boldness of H1 text
        type: variable-number-slider
        default: 650
        min: 400
        max: 900
        step: 25
    -
        id: alignment-title
        title: Title alignment
        description: The horizontal alignment
        type: class-select
        default: align-title-center
        options:
            -
                label: Left
                value: align-title-left
            -
                label: Centered
                value: align-title-center
    -
        id: title-gradient
        title: Title gradient
        description: Apply a vertical gradient to titles
        type: class-select
        allowEmpty: false
        default: ss-title-solid
        options:
            -
                label: No gradient
                value: ss-title-solid
            -
                label: Vertical gradient
                value: ss-title-gradient
    -
        id: heading-weight
        title: Heading weight
        description: The boldness of headings. I recommend choosing something different from your Title weight, and Body weight
        type: variable-number-slider
        default: 600
        min: 200
        max: 800
        step: 100
    -
        id: text-scale
        title: Heading scale
        description: The rate of growth between text and heading sizes. No scaling means headings and body text are the same size. Blank means Typomagical will attempt to choose the right scale based on your screen size.
        type: class-select
        allowEmpty: true
        default: none
        options:
            -
                label: 1.00 No scaling
                value: type-scale-none
            -
                label: 1.067 Minor Second
                value: type-scale-minor-second
            -
                label: 1.125 Major Second
                value: type-scale-major-second
            -
                label: 1.20 Minor Third
                value: type-scale-minor-third
            -
                label: 1.25 Major Third
                value: type-scale-major-third
    -
        id: line-height-headings
        title: Heading line height
        description: Height of each line in headings. I recommend around 1.2. If you have Embedded Note Titles plugin, that setting overrides this.
        type: variable-number-slider
        default: 1.2
        min: 1.00
        max: 2.00
        step: 0.05
    -
        id: heading-ligatures
        title: Heading ligatures
        description: Decorative conjoined characters, such as the "ffi" in "office" and "ft" in "often".
        type: class-toggle
        default: true
    */
.theme-light {
  --title-gradient-top: var(--link-color);
  --title-gradient-bottom: hsl(249, 34%, 35%);
}

.theme-dark {
  --title-gradient-top: var(--text-normal);
  --title-gradient-bottom: var(--link-color);
}

.ss-title-gradient h1,
.ss-title-gradient .inline-title,
.ss-title-gradient h1.embedded-note-title.embedded-note-title.embedded-note-title,
.ss-title-gradient .cm-header-1 {
  background-image: -webkit-linear-gradient(-90deg, var(--title-gradient-top) 0%, var(--title-gradient-bottom) 100%);
  -webkit-text-fill-color: transparent;
  -webkit-background-clip: text;
}
.ss-title-gradient h1 .is-unresolved.is-unresolved {
  background-image: -webkit-linear-gradient(-90deg, var(--title-gradient-top) 0%, var(--title-gradient-bottom) 100%);
  -webkit-text-fill-color: transparent;
  -webkit-background-clip: text;
}
.ss-title-gradient.vileplume .cm-header-1,
.ss-title-gradient.vileplume .markdown-preview-section.markdown-preview-section h1 {
  text-shadow: none !important;
}

body:not(.align-title-left) .HyperMD-header-line.HyperMD-header-line-1.cm-line,
body:not(.align-title-left) .inline-title,
body:not(.align-title-left) .embedded-note-title.embedded-note-title,
body:not(.align-title-left) .HyperMD-header-1,
body:not(.align-title-left) .markdown-preview-section.markdown-preview-section h1 {
  text-align: center;
}

.cm-header-2,
.markdown-preview-section h2 {
  color: var(--text-title-h2);
}

.cm-header-3,
.markdown-preview-section h3 {
  color: var(--text-title-h3);
}

.cm-header-4,
.markdown-preview-section h4 {
  color: var(--text-title-h4);
}

.cm-header-5,
.markdown-preview-section h5 {
  color: var(--text-title-h5);
}

.cm-header-6,
.markdown-preview-section h6 {
  color: var(--text-title-h6);
}

.css-settings-manager h1,
.css-settings-manager h2,
.css-settings-manager h3,
.css-settings-manager h4,
.css-settings-manager h5,
.css-settings-manager h6 {
  font-variant-ligatures: none;
}
.css-settings-manager.heading-ligatures h1,
.css-settings-manager.heading-ligatures .cm-header-1,
.css-settings-manager.heading-ligatures .inline-title,
.css-settings-manager.heading-ligatures h2,
.css-settings-manager.heading-ligatures .cm-header-2,
.css-settings-manager.heading-ligatures h3,
.css-settings-manager.heading-ligatures .cm-header-3,
.css-settings-manager.heading-ligatures h4,
.css-settings-manager.heading-ligatures .cm-header-4,
.css-settings-manager.heading-ligatures h5,
.css-settings-manager.heading-ligatures .cm-header-5,
.css-settings-manager.heading-ligatures h6,
.css-settings-manager.heading-ligatures .cm-header-6 {
  font-variant-ligatures: common-ligatures;
  font-feature-settings: "liga";
}

/* Headings END */
.mod-left-split .workspace-tabs .workspace-leaf-content h1, .mod-left-split .workspace-tabs .workspace-leaf-content h1.embedded-note-title.embedded-note-title {
  font-size: var(--h2-size);
}

body:not(.no-image-alttext-caption) .image-embed[alt]:not([alt$=".png"], [alt$=".jpg"], [alt$=".jpeg"], [alt$=".tiff"])::after {
  display: block;
  content: attr(alt);
  color: var(--text-muted);
  margin-bottom: 1em;
  text-align: center;
}

/*
Links
[[]]
*/
/* latin */
@font-face {
  font-family: "Alegreya SC";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/alegreyasc/v15/taiOGmRtCJ62-O0HhNEa-Z6v2ZA.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: "Alegreya SC";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/alegreyasc/v15/taiOGmRtCJ62-O0HhNEa-Z6h2ZAJaQ.woff2) format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: "Alegreya SC";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/alegreyasc/v15/taiTGmRtCJ62-O0HhNEa-ZYU_IU2SKo.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: "Alegreya SC";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/alegreyasc/v15/taiTGmRtCJ62-O0HhNEa-ZYU_IU4SKqGFQ.woff2) format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
body {
  --font-links: "Alegreya SC", "Spectral", serif;
}

a,
.cm-url,
.cm-hmd-internal-link,
.cm-s-obsidian span.cm-hmd-internal-link,
.cm-link,
.markdown-rendered .internal-link,
.markdown-preview-view .internal-link {
  font-family: var(--font-links);
  font-variant-ligatures: none;
}

.markdown-rendered .internal-link:hover {
  text-decoration: underline;
}

.markdown-source-view.mod-cm6 .cm-url,
.markdown-source-view.mod-cm6 .cm-underline {
  text-decoration: none;
}

body.ss-links-spectral {
  --font-links: "Spectral", serif;
}

body.ss-links-sans {
  --font-links: "Source Sans Pro", sans-serif;
}

.markdown-source-view.mod-cm6 .cm-url {
  font-family: var(--font-monospace);
  font-size: 0.8em;
  color: var(--link-external-color);
}

.cm-s-obsidian .cm-formatting-hashtag {
  font-family: var(--font-normal);
}

.empty-state-action {
  color: var(--link-color);
}

.cm-s-obsidian .cm-formatting-hashtag,
.cm-hashtag {
  font-size: 0.8em;
  font-family: var(--font-monospace);
}

.is-live-preview .external-link {
  position: relative;
  top: -4px;
  background-position-y: 0;
}

/* Lists START */
/*
  Concourse Index by Matthew Butterick
  https://practicaltypography.com/concourse-index.html
  Encoded to base64 for CSS using https://hellogreg.github.io/woff2base/
    14KB
*/
@font-face {
  font-family: "Concourse Index";
  src: url(data:application/octet-stream;base64,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);
}
/* List font END */
ul {
  list-style-type: circle;
}

ol {
  padding-inline-start: 36px;
  counter-reset: foobar;
}
ol li {
  list-style: none;
  margin-left: 0;
}
ol li::before {
  counter-increment: foobar;
  content: counter(foobar);
  font-size: 1.1rem;
  position: absolute;
  margin-left: -2.3rem;
  font-family: "Concourse Index";
  font-variant-ligatures: common-ligatures;
}

.mod-top-left-space ol li::before {
  font-size: 1em;
}

/* Lists END */
body {
  --table-column-first-border-width: 0;
  --table-column-last-border-width: 0;
  --table-header-border-width: 0;
  --table-row-last-border-width: 0;
}

.markdown-preview-view td,
.markdown-preview-view th {
  border-right-color: transparent;
  border-left-color: transparent;
}

.markdown-rendered table {
  margin: 1.5em 0;
}

/*
    Blockquotes
    >
    Official variables from app.css:
    --blockquote-font-style: normal;
    --blockquote-color: inherit;
    --blockquote-background-color: transparent;
*/
body {
  --blockquote-border-thickness: 1px;
  --blockquote-border-color: var(--text-normal) ;
}

.blockquote-bustle blockquote {
  padding: var(--size-4-4) 0 0 0;
  margin-inline-start: 0;
  margin-inline-end: 0;
  font-size: 1.25em;
  font-weight: 500;
  letter-spacing: -0.05em;
  border-top: 1px solid var(--blockquote-border-color);
  border-left: none;
  margin: 0 auto;
  max-width: 20em;
}
.blockquote-bustle .mod-left-split blockquote {
  margin-left: var(--size-4-4);
}

.blockquote-neuomorphic .markdown-preview-view blockquote {
  border-radius: 10px;
  border: 1px solid rgba(255, 255, 255, 0.03);
  padding: 10px 20px;
  position: relative;
  box-shadow: -10px -10px 30px rgba(255, 255, 255, 0.05), 10px 10px 30px rgba(0, 0, 0, 0.2);
  background-color: rgba(255, 255, 255, 0.01);
}

.callout {
  background-color: transparent !important;
  border-style: solid;
  border-width: 1px 1px 1px 0;
  border-image: linear-gradient(90deg, transparent, rgba(var(--callout-color), 0.25)) 1;
}
.callout .callout-icon {
  padding-right: 10px;
}
.callout svg {
  transform: scale(1.25);
}
.callout .callout-title {
  padding-left: 0;
  padding-top: 1em;
  padding-bottom: 1em;
  background-color: transparent;
}
.callout .callout-content {
  padding-left: 32px;
}
.callout .callout-content p:first-child {
  margin-top: 0;
}

.svg-icon.svg-icon.lucide-quote {
  transform: rotate(180deg) scale(1.25);
}

.callout-quote-style [data-callout=quote].callout.callout {
  background-color: transparent;
  border: none;
  display: flex;
  flex-direction: column-reverse;
  padding: 0;
}
.callout-quote-style [data-callout=quote].callout.callout .callout-icon {
  display: none;
}
.callout-quote-style [data-callout=quote]::after {
  font-family: "Times New Roman", "Playfair Display";
  font-size: 3em;
  text-align: center;
  line-height: 1;
  content: "“";
  font-weight: 900;
}
.callout-quote-style [data-callout=quote] .callout-content.callout-content {
  padding: 0;
  font-size: 1.35em;
  text-align: center;
  font-weight: 300;
  font-variant-ligatures: discretionary-ligatures;
  font-feature-settings: "liga";
}
.callout-quote-style [data-callout=quote] .callout-title.callout-title {
  padding-top: 0;
  justify-content: center;
  color: var(--text-normal);
}
.callout-quote-style [data-callout=quote] .callout-title.callout-title .callout-title-inner {
  font-weight: 400;
}
.callout-quote-style [data-callout=quote] .callout-title.callout-title::before {
  content: "―";
}
.callout-quote-style [data-callout=quote].is-collapsible .callout-title:hover {
  cursor: pointer;
}
.callout-quote-style [data-callout=quote] .callout-fold {
  transform: scale(0.75);
}
.callout-quote-style [data-callout=quote] .callout-fold svg {
  stroke: var(--text-accent);
}

sup.footnote-ref {
  position: relative;
  bottom: 0.2em;
  padding-left: 0.1em;
}

.footnote-link {
  text-decoration: none;
  font-weight: 500;
  letter-spacing: 0.05em;
}
.footnote-link:hover {
  text-decoration: none;
}

body.theme-light .modal-bg {
  --background-modifier-cover: rgba(0,0,0,0.1) ;
}

body.theme-dark .modal-bg {
  --background-modifier-cover: rgba(0,0,0,0.2) ;
}

.modal.mod-settings {
  max-width: none;
  width: 100%;
  align-self: flex-end;
  box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);
}

.setting-item-description {
  line-height: 1.4;
}

.community-theme.is-selected.is-selected .community-theme-info {
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
}
.community-theme.is-selected.is-selected .community-theme-info::after {
  content: "Customize using the Style Settings plugin!";
  line-height: 1.4;
  position: relative;
  background: var(--background-primary-alt);
  white-space: pre-wrap;
  text-align: center;
  padding: 0.5em;
}

body.ficus-ruby {
  --link-external-color: #fa858f;
}
body.ficus-ruby.theme-dark {
  --graph-line: #fa858f;
}

/* Same as Obsidian's default triangle but with #C94458 as fill colour. https://yoksel.github.io/url-encoder/ */
.ficus-ruby .dropdown {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='292.4' height='292.4'%3E%3Cpath fill='%23C94458' d='M287 69.4a17.6 17.6 0 0 0-13-5.4H18.4c-5 0-9.3 1.8-12.9 5.4A17.6 17.6 0 0 0 0 82.2c0 5 1.8 9.3 5.4 12.9l128 127.9c3.6 3.6 7.8 5.4 12.8 5.4s9.2-1.8 12.8-5.4L287 95c3.5-3.5 5.4-7.8 5.4-12.8 0-5-1.9-9.2-5.5-12.8z'/%3E%3C/svg%3E%0A");
}

body.ficus-ruby.theme-light {
  --background-primary: #f5f5f5;
  --background-primary-alt: hsl(180, 13%, 86%);
  --background-secondary: #b0c6c2;
  --background-secondary-alt: #d7e0e0;
  --background-modifier-border: hsl(45, 27%, 65%);
  --background-modifier-form-field: #fff;
  --background-modifier-form-field-highlighted: #fff;
  --background-modifier-box-shadow: rgba(0, 0, 0, 0.1);
  --background-modifier-success: #a4e7c3;
  --background-modifier-error: #990000;
  --background-modifier-error-rgb: 230, 135, 135;
  --background-modifier-error-hover: #bb0000;
  --background-modifier-cover: rgba(0, 0, 0, 0.8);
  --link-color: #800000;
  --link-color-hover: #c94458;
  --text-normal: #333834;
  --text-muted: #525e5b;
  --text-muted-rgb: 136, 136, 136;
  --text-faint: #525e5b;
  --text-error: #800000;
  --text-error-hover: #990000;
  --text-highlight-bg: rgba(201, 68, 88, 0.3);
  --text-highlight-bg-active: rgba(255, 128, 0, 0.4);
  --text-selection: rgba(242, 186, 179, 0.66);
  --text-on-accent: #f2f2f2;
  --text-title-h1: hsl(159, 17%, 41%);
  --text-title-h2: #417262;
  --text-title-h3: #E3764F;
  --text-title-h4: #E66D9B;
  --text-title-h5: #9359db;
  --text-title-h6: #4065dc;
  --interactive-normal: #f2f3f5;
  --interactive-hover: #e9e9e9;
  --interactive-accent: #c94458;
  --interactive-accent-rgb: 201, 68, 88;
  --interactive-accent-hover: #c94458;
  --interactive-success: #333834;
  --scrollbar-active-thumb-bg: rgba(0, 0, 0, 0.2);
  --scrollbar-bg: rgba(0, 0, 0, 0.05);
  --scrollbar-thumb-bg: rgba(0, 0, 0, 0.1);
  --highlight-mix-blend-mode: darken;
}

body.ficus-ruby.theme-dark {
  --background-primary: #305654;
  --background-primary-alt: #1e3735;
  --background-secondary: #305654;
  --background-secondary-alt: #1e3735;
  --background-accent: #fff;
  --background-modifier-border: #e8aa99;
  --background-modifier-form-field: rgba(0, 0, 0, 0.2);
  --background-modifier-form-field-highlighted: rgba(0, 0, 0, 0.5);
  --background-modifier-box-shadow: rgba(0, 0, 0, 0.3);
  --background-modifier-success: #197300;
  --background-modifier-error: #361c1e;
  --background-modifier-error-rgb: 61, 0, 0;
  --background-modifier-error-hover: #563032;
  --background-modifier-cover: rgba(0, 0, 0, 0.6);
  --link-color: #fa858f;
  --link-color-hover: #f4465d;
  --text-normal: #f9ead9;
  --text-muted: #d5c4a1;
  --text-faint: #bdae93;
  --text-highlight-bg: rgba(181, 118, 20, 0.5);
  --text-error: #800000;
  --text-error-hover: #990000;
  --text-selection: rgba(89, 75, 95, 0.99);
  --text-title-h2: #DADC8F;
  --text-title-h3: #a5e6f9;
  --text-title-h4: #D1ABFF;
  --text-title-h5: #FFA3C6;
  --text-title-h6: #e8bb89;
  --text-on-accent: #fbf1c7;
  --interactive-normal: #f4465d;
  --interactive-hover: #f9a8b1;
  --interactive-accent: #f4465d;
  --interactive-accent-rgb: 205, 123, 130;
  --interactive-accent-hover: #f9a8b1;
  --scrollbar-active-thumb-bg: rgba(0, 0, 0, 0.4);
  --scrollbar-bg: rgba(0, 0, 0, 0.05);
  --scrollbar-thumb-bg: rgba(0, 0, 0, 0.2);
  --inline-code: #b48ead;
  --code-block: #b48ead;
  --pre-code-bg: rgba(0, 0, 0, 0.2);
  --blockquote-border: #b57614;
  --vim-cursor: #d65d0e;
  --border-color: #504945;
  --hover-bg: rgba(0, 0, 0, 0.5);
}

body.ficus-ruby.theme-light .is-selected kbd {
  background-color: var(--background-secondary-alt);
}

body.ficus-ruby.theme-light .view-header {
  border-top: 1px solid var(--background-primary-alt);
  border-bottom: 2px solid var(--background-primary-alt);
  background-color: var(--background-primary-alt);
}

body.plugin-sliding-panes-rotate-header .workspace > .mod-root > .workspace-leaf > .workspace-leaf-content > .view-header > .view-header-title-container:before {
  background: linear-gradient(to top, transparent, transparent) !important;
}

body.plugin-sliding-panes-rotate-header .workspace > .mod-root > .workspace-leaf > .workspace-leaf-content > .view-header > .view-header-title-container:after {
  background: linear-gradient(to top, transparent, transparent) !important;
}

body.ficus-ruby.theme-light .workspace-ribbon.mod-right.is-collapsed {
  border-left-color: var(--background-secondary-alt);
}

body.ficus-ruby.theme-light .workspace-ribbon {
  border-left: 2px solid transparent;
}

body.ficus-ruby.theme-light .status-bar {
  border-top: 2px solid var(--background-secondary-alt);
}

body.ficus-ruby.theme-light .view-action {
  color: var(--text-muted);
}

body.ficus-ruby.theme-dark .view-action {
  color: var(--text-muted);
}

body.ficus-ruby.theme-dark .suggestion-item.is-selected {
  background-color: var(--link-color-hover);
}

body.ficus-ruby.theme-dark .workspace-ribbon.mod-right.is-collapsed {
  border-left-color: var(--background-secondary-alt);
}

body.ficus-ruby.theme-dark .workspace-ribbon {
  border-left: 2px solid transparent;
}

body.ficus-ruby.theme-dark .status-bar {
  border-top: 2px solid var(--background-secondary-alt);
}

/* Calendar by liamcain START */
#calendar-container {
  --color-background-today: var(--link-color);
}
#calendar-container .active .dot-container svg {
  fill: white;
}

#calendar-container h3.title {
  font-family: var(--font-title);
}

#calendar-container .year {
  color: var(--text);
  letter-spacing: -0.05em;
}

#calendar-container .month {
  font-weight: 700;
}

#calendar-container .today {
  font-style: italic;
}

#calendar-container .today:not(.active) {
  color: var(--color-text-day);
  box-shadow: inset 0 0 1px var(--link-color);
}

#calendar-container .reset-button {
  color: var(--link-color);
  text-transform: initial;
  font-family: "Alegreya SC";
  font-size: 0.9em;
  font-weight: 500;
}

/* Calendar END */
ul.dataview-ul {
  list-style: none;
  padding-inline-start: 0;
  margin-block-start: 0.5em;
  margin-block-end: 0.5em;
}

.dataview.inline-field-value,
.dataview.inline-field-key {
  font-family: var(--font-text);
  padding: 0;
  background-color: transparent;
}

.dataview.inline-field-value::before {
  content: "·";
  color: var(--text-muted);
  padding: 0 var(--size-4-1);
}

body {
  --font-default: "Spectral", -apple-system, BlinkMacSystemFont, "Segoe UI",
    "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", serif;
  --font-text: var(--font-default);
  --link-unresolved-color: #d5aecf;
  --link-unresolved-opacity: 1;
  --link-external-decoration: none;
  --link-external-decoration-hover: underline;
  --tag-color: #eeb662;
  --tag-color-hover: #f7d865;
  --code-normal: #62d770;
  --link-decoration: none;
  --modal-height: 75vh;
  --line-height-body: 1.45;
}

.theme-light {
  --code-normal: #4db95a;
  --link-color-hover: #8177eb;
  --link-external-color: #2f9bb7;
  --link-external-color-hover: rgb(72, 191, 224);
  --tag-color: var(--text-normal);
  --tag-color-hover: var(--text-normal);
  --tag-background: #eeb662;
  --tag-background-hover: #f7d865;
}

.theme-dark {
  --text-accent: hsl(248, 75%, 79%);
  --text-accent-hover: #8177eb;
  --link-external-color: #7fcae6;
  --link-external-color-hover: #89ebe5;
}

body {
  font-weight: var(--body-weight);
}

b,
.cm-s-obsidian .cm-strong {
  font-weight: 600;
  font-weight: var(--bold-weight);
}

.markdown-preview-view hr {
  border-width: 1px 0 0;
  border-style: dotted;
}

.hr-shadow .markdown-preview-view hr {
  border: none;
  height: 3em;
  background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.2) 0, transparent 65%);
}
.hr-shadow .markdown-preview-view hr::after {
  height: 1.5em;
  content: " ";
  display: block;
  background-color: var(--background-primary);
}

.theme-light.hr-shadow .markdown-preview-view hr {
  background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.05) 0, transparent 65%);
}

/* GRAPH */
.theme-light .graph-view.color-fill-tag {
  color: #e07d1a;
}

.theme-dark .graph-view.color-fill-tag {
  color: #df964e;
}

.theme-light .graph-view.color-fill-attachment {
  color: #2f9bb7;
}

.theme-dark .graph-view.color-fill-attachment {
  color: #7fcae6;
}

.markdown-preview-section iframe {
  width: 100%;
}

/* Wrap long nav text*/
.nav-file-title,
.nav-folder-title,
.nav-file-title-content,
.nav-folder-title-content {
  white-space: normal;
  width: auto;
}

/* @settings

name: Typomagical Text
id: typomagical-text
settings:
    -
        id: body-ligatures
        title: Text Ligatures
        description: Decorative conjoined characters, such as the "ffi" in "office" and "ft" in "often".
        type: class-toggle
    -
        id: mjx-font
        title: MathJax font
        description: Font for MathJax e.g. $inline equation$ and $$centered equation$$
        type: class-select
        default: mathjax-font-default
        options:
            -
                label: MJXZERO, MJXTEX (Obsidian Default)
                value: mathjax-font-default
            -
                label: Spectral
                value: mathjax-font-typomagical
    -
        id: ordered-lists
        title: List numbers
        description: Whether numerical lists should have circled, or ordinary numbers
        type: class-select
        default: circled-ol
        options:
            -
                label: Circled
                value: circled-ol
            -
                label: Ordinary
                value: ordinary-ol
    -
        id: font-default
        title: Body font
        description: The font for body
        type: variable-select
        default: Spectral
        options:
            -
                label: Spectral
                value: Spectral
            -
                label: Source Sans Pro
                value: Source Sans Pro
    -
        id: body-weight
        title: Body text weight
        description: The boldness of body text. For high resolution displays I recommend 300 or 400.
        type: variable-number-slider
        default: 400
        min: 200
        max: 800
        step: 100
    -
        id: bold-weight
        title: Bold text weight
        description: The boldness of **bold** text. I recommend 600 or 700.
        type: variable-number-slider
        default: 600
        min: 200
        max: 800
        step: 100
    -
        id: line-height-body
        title: Body line height
        description: Height of each line in a multi-line passage. Obsidian default is 1.5.
        type: variable-number-slider
        default: 1.45
        min: 1.00
        max: 2.00
        step: 0.05
    -
        id: link-font
        title: Link font
        description: The font for links
        type: class-select
        default: ss-links-sc
        options:
            -
                label: Alegreya SC
                value: ss-links-sc
            -
                label: Spectral (Serif)
                value: ss-links-spectral
            -
                label: Source Sans Pro
                value: ss-links-sans
    -
        id: blockquote
        title: Blockquotes
        description: How all blockquotes should look
        type: class-select
        default: blockquote-plain
        options:
            -
                label: Plain box
                value: blockquote-plain
            -
                label: Big with top border
                value: blockquote-bustle
            -
                label: Neuomorphic soft shadows
                value: blockquote-neuomorphic
    -
        id: callout-style
        title: Callout style
        type: class-select
        default: callout-border-gradient
        options:
            -
                label: Obsidian default
                value: callout-default
            -
                label: Icon only
                value: callout-icon-only
            -
                label: Icon and gradient border
                value: callout-border-gradient
    -
        id: callout-quote-style
        title: Quote Callout style
        description: Change [!quote] callouts to magazine style
        type: class-toggle
    -
        id: hr-shadow
        title: Horizontal divider shadows
        description: Add a subtle shadow to --- lines
        type: class-toggle
    -
        id: alignment
        title: Alignment
        description: How all text is aligned
        type: class-select
        default: align-left
        options:
            -
                label: Left
                value: align-left
            -
                label: Justified
                value: align-justified
    */
/* Change inline mhchem equations font to better blend with the text */
.mathjax-font-typomagical mjx-container mjx-math mjx-texatom {
  font-family: var(--default-font);
}

/*
    Ligatures
    No class is needed for all-ligatures, because ligatures are enabled by default.
*/
body {
  font-variant-ligatures: none;
}

body.css-settings-manager.body-ligatures {
  font-variant-ligatures: common-ligatures;
  font-feature-settings: "liga";
}

.ordinary-ol .markdown-source-view.mod-cm6 .cm-formatting-list-ol,
.ordinary-ol ol li::marker {
  font-family: var(--default-font);
}

body {
  --file-line-width: calc(var(--font-text-size) * 35);
}

.cm-content .cm-line,
.markdown-preview-view {
  line-height: var(--line-height-body);
}

.align-justified p {
  text-align: justify;
}

.is-mobile .markdown-rendered .heading-collapse-indicator {
  margin-left: -30px;
  transform: translateX(6px);
}

/* @settings

name: Typomagical Colour
id: typomagical-colour
settings:
    -
        id: theme-variant
        title: Theme variant
        description: Palette swaps. Don't see one you like? Let me know on forum.obsidian.md/u/hungsu!
        type: class-select
        allowEmpty: false
        default: obsidian
        options:
            -
                label: Obsidian
                value: obsidian
            -
                label: Ficus Ruby
                value: ficus-ruby
            -
                label: Vileplume
                value: vileplume
            -
                label: Golden Ice
                value: golden-ice
            -
                label: Obsidian High Contrast
                value: obsidian-high-contrast
    -
        id: background-color-enable
        title: Allow Background color override
        description: The next setting will work when this is on
        type: class-toggle
    -
        id: background-color
        title: Background color
        description: Overwrite background color with one of your choice
        type: variable-color
        opacity: false
        format: hex
        default: '#000000'
    */
.background-color-enable.background-color-enable.background-color-enable {
  --background-primary: var(--background-color) ;
}

.markdown-source-view.mod-cm6 .cm-gutters {
  background-color: transparent !important;
}

body.golden-ice {
  --text-accent: hsl(33, 63%, 61%);
  --text-accent-hover: hsl(33, 73%, 51%);
}

/* START Vileplume */
body.vileplume {
  --dark0: hsl(219, 38%, 21%);
  --dark1: hsl(219, 37%, 36%);
  --dark2: hsl(220, 22%, 51%);
  --dark3: hsl(221, 22%, 55%);
  --light0: #d8dee9;
  --light1: #e5e9f0;
  --light2: #eceff4;
  --light3: #ffffff;
  --frost0: #8fbcbb;
  --frost1: #88c0d0;
  --red53: hsl(355, 35%, 53%);
  --red: hsl(352, 56%, 62%);
  --orange: #d08770;
  --yellow59: hsl(24, 33%, 59%);
  --yellow: hsl(27, 49%, 68%);
  --green: #a3be8c;
  --bloddish64: hsl(204, 24%, 64%);
  --purple: #b48ead;
  --text-title-h1: var(--red);
  --text-title-h2: var(--orange);
  --text-title-h3: var(--yellow);
  --text-title-h4: var(--green);
  --text-title-h5: var(--bloddish64);
  --text-title-h6: var(--purple);
  --text-mark: var(--red);
  --pre-code: var(--dark1);
  --text-highlight-bg: var(--red);
  --interactive-accent: var(--yellow59);
  --interactive-accent-hover: var(--red);
  --interactive-hover: var(--dark0);
  --interactive-before: var(--dark3);
  --background-modifier-border: var(--dark2);
  --link-color: var(--yellow);
  --link-color-hover: var(--yellow59);
  --interactive-accent-rgb: var(--orange);
  --inline-code: var(--frost1);
  --code-block: var(--frost1);
  --vim-cursor: var(--orange);
  --text-selection: var(
   --red53
  );
  /* Annoying - affects both Edit and Preview, but Preview has translucency */
}

.vileplume ::-webkit-scrollbar {
  background-color: transparent;
}

.vileplume.theme-dark ::-webkit-scrollbar-thumb {
  background-color: var(--dark3);
}

body.vileplume.theme-dark {
  --background-primary: var(--dark0);
  --background-primary-alt: var(--dark0);
  --background-secondary: var(--dark1);
  --background-secondary-alt: var(--dark2);
  --text-normal: var(--light2);
  --text-faint: var(--light0);
  --text-muted: var(--light1);
  --text-link: var(--frost0);
  --opacity-translucency: 0.9;
  --title-gradient-bottom: var(--text-title-h1) ;
}

body.vileplume.theme-light {
  --background-primary: var(--light3);
  --background-primary-alt: var(--light3);
  --background-secondary: var(--light2);
  --background-secondary-alt: var(--light1);
  --text-normal: var(--dark1);
  --text-faint: var(--dark3);
  --text-muted: var(--dark2);
  --text-link: var(--frost0);
  --text-highlight-bg: var(--light0);
  --text-selection: var(--light0);
  --link-color-hover: var(--yellow);
  --link-color: var(--yellow59);
  --title-gradient-top: var(--text-title-h1);
  --title-gradient-bottom: var(--text-normal);
}

.vileplume .cm-header-1.cm-header-1,
.vileplume .markdown-preview-section.markdown-preview-section h1 {
  color: var(--text-title-h1);
  text-shadow: 1px 1px rgba(0, 0, 0, 0.05), 2px 2px rgba(0, 0, 0, 0.05), 3px 3px rgba(0, 0, 0, 0.05), 4px 4px rgba(0, 0, 0, 0.05), 5px 5px rgba(0, 0, 0, 0.05), 6px 6px rgba(0, 0, 0, 0.05), 7px 7px rgba(0, 0, 0, 0.05), 8px 8px rgba(0, 0, 0, 0.05), 9px 9px rgba(0, 0, 0, 0.05);
}

.vileplume.theme-light .cm-header-1.cm-header-1,
.vileplume.theme-light .markdown-preview-section.markdown-preview-section h1 {
  text-shadow: 1px 1px rgba(235, 235, 235, 0.5), 2px 2px rgba(235, 235, 235, 0.5), 3px 3px rgba(235, 235, 235, 0.5), 4px 4px rgba(235, 235, 235, 0.4), 5px 5px rgba(235, 235, 235, 0.3), 6px 6px rgba(235, 235, 235, 0.2), 7px 7px rgba(235, 235, 235, 0.1), 8px 8px rgba(235, 235, 235, 0.1);
}

.vileplume .dropdown {
  background-image: url("https://cdn.discordapp.com/attachments/560318304472793114/808721915627307058/lets_go_arrow.png");
}

.vileplume .side-dock-ribbon-tab:hover,
.vileplume .side-dock-ribbon-action:hover,
.vileplume .side-dock-ribbon-action.is-active:hover,
.vileplume .nav-action-button:hover,
.vileplume .side-dock-collapse-btn:hover {
  color: var(--link-color);
}

.vileplume .graph-view.color-text {
  color: var(--link-color-hover);
}

.vileplume .graph-view.graph-view.color-fill-focused {
  color: var(--yellow59);
}

.vileplume.theme-dark .graph-view.color-fill {
  color: white;
}

.vileplume.theme-light .graph-view.color-line {
  color: #d9e1cc;
}

.vileplume.theme-light .graph-view.color-fill {
  color: #62a368;
}

.vileplume.theme-light .graph-view.graph-view.color-fill-attachment {
  color: #f19f65;
}

/* END Vileplume */
.side-dock-ribbon-tab:hover,
body.obsidian-high-contrast .side-dock-ribbon-action:hover {
  color: var(--link-color-hover);
}

body.obsidian-high-contrast.theme-light {
  --background-secondary: #fff;
  --background-secondary-alt: #fff;
  --link-color: hsl(250, 65%, 50%);
  --link-external-color: hsl(193.2, 100%, 31.2%);
  --link-external-color-hover: rgb(72, 191, 224);
}

body.obsidian-high-contrast.theme-dark {
  --background-primary: hsl(0, 0%, 0%);
  --background-primary-alt: black;
  --background-secondary: hsl(0, 0%, 0%);
  --text-faint: #ccc;
}

body.obsidian-high-contrast.theme-dark .checkbox-container {
  box-shadow: 0 0 2px white;
}

body.obsidian-high-contrast.theme-dark .tooltip {
  --tooltip-bg: white;
  background-color: var(--tooltip-bg);
  color: black;
}

/* tooltip appears below cursor */
body.obsidian-high-contrast.theme-dark .tooltip .tooltip-arrow {
  border-bottom-color: var(--tooltip-bg);
}

body.obsidian-high-contrast.theme-dark .tooltip.mod-right .tooltip-arrow {
  border-right-color: var(--tooltip-bg);
  border-bottom-color: transparent;
}

body.obsidian-high-contrast.theme-dark .tooltip.mod-left .tooltip-arrow {
  border-left-color: var(--tooltip-bg);
  border-bottom-color: transparent;
}

body.obsidian-high-contrast.theme-dark .tooltip.mod-top .tooltip-arrow {
  border-top-color: var(--tooltip-bg);
  border-bottom-color: transparent;
}

body.obsidian-high-contrast.theme-dark .suggestion-item.is-selected {
  color: black;
  background-color: white;
}

/* kbd */
body.obsidian-high-contrast.theme-dark .suggestion-hotkey {
  color: white;
}

/* kbd */
body.obsidian-high-contrast.theme-light .suggestion-hotkey {
  color: var(--text-normal);
}

/* The Link icon when we embed with ![[]] */
.markdown-embed-link {
  right: 0;
  top: 0;
}

.markdown-embed .markdown-preview-view {
  padding: 1em;
}

.workspace-ribbon.mod-left.is-collapsed {
  border-right-color: transparent;
}

/* File explorer */
/* The name of the vault */
.mod-root > .nav-folder-title .nav-folder-title-content {
  /* font-family: var(--font-title); */
  font-weight: 700;
}

/* For wobbly inline mathjax - Issue #13 */
.math-inline mjx-math {
  padding: 0;
}
hungsu commented 1 year ago

Alternatively, here's a link https://res.cloudinary.com/didjqvf50/raw/upload/v1675237992/obsidian/publish-dubious-cactus.css

DubiousCactus commented 1 year ago

Thank you @hungsu ! I'm not sure what was added since your previous reply but it looks very close to how it is in Obsidian now! Thanks a ton!