Creating a blog

35 min read Original article ↗

~11787 words. ~58 minutes.

Introduction

I have been blogging by manually exporting my org-mode files into HTML with a custom CSS file and then SCP-ing the generated HTML file into my SDF personal page. While this works fine, The page doesn't have any SSL certificate, which just makes my website look bad. So I have recently decided to switch my blog over to Codeberg and utilize their pages facility.

The implementation

After some research, I've found out that Codeberg pages doesn't have any support for static site generators like Github pages does, But I am not deterred by this. I have devised a plan to use Codeberg effectively.

Firstly, I have created a private repository with all my articles on it (in org-mode format of course), I also have the scripts necessary to perform this on there, which are

  • An Emacs lisp script, and
  • A shell script

Emacs Lisp script

The Emacs lisp script actually exports the Emacs Org-files into a HTML directory.

I will go over each (interesting) part one by one.

Cleaning public

(message "Cleaning public/")
(shell-command "rm public/*")
(message "Done!")

This block just removes the old public directory, this is done to ensure that no files that were "removed" or "drafted" stay public.

Customizing HTML output

(setq org-html-postamble t                          org-html-head-include-scripts nil             org-html-head-include-default-style nil       org-confirm-babel-evaluate nil                org-html-html5-fancy t
      org-html-htmlize-output-type 'css
      user-full-name "tusharhero"
      user-mail-address "tusharhero@sdf.org"
      org-html-with-latex 'verbatim
      )

I would say the most interesting part is the line where I disable prompt for asking permission before evaluating the babel source blocks, that is because, I am using emacs-lisp org-babel source blocks to generate text here and there, particularly I am using it right now to copy code from actual files during build time. I won't go over how exactly that is done, because I am still figuring it out.

Add setup.org to every page

(add-hook 'org-export-before-processing-hook
          #'(lambda (backend)
              (insert "#+INCLUDE: \"../setup.org\"\n")))

I currently use this to add a tag list to each page.

#+HTML_HEAD: <meta name="darkreader-lock">
#+HTML_HEAD: <link rel="stylesheet" href="style.css">
#+HTML_HEAD: <link rel="alternate" type="application/rss+xml" href="rss.xml" title="RSS 2.0">
#+HTML_HEAD: <meta name="fediverse:creator" content="@tusharhero@mathstodon.xyz">

#+name: word-count
#+begin_src elisp :results raw :exports results
  (let* ((word-count (save-excursion (search-forward "#+title:" nil nil 2)
                                   (forward-line 3)
                                   (count-words (point) (point-max))))
         (reading-speed 200)
         (reading-time (/ word-count reading-speed)))
    (format "/~%s words. ~%d minutes./" word-count reading-time))
#+end_src

#+name: tagging
#+begin_src elisp :results html :exports results
  (defun p/get-tags ()
    "Get the tags in buffer."
    (save-excursion 
      (goto-char (point-min))
      (search-forward "#+tags:" nil nil 2)
      (string-split
       (string-trim (thing-at-point 'line t) ".*tags:\s*")
       ":")))

  (let ((tags (delete "special" (p/get-tags))))
    (if (not (= (length tags) 0))
        (format "<div class=\"tagbar\"><span><a href=\"tags.html\">tags:</a></span> %s</div>"
                (string-join (mapcar (lambda (tag) (format "<span><a href=\"tags.html#%s\">%s</a></span>" tag tag)) tags) " "))
      ""))
#+end_src
#+OPTIONS: toc:nil
#+TOC: headlines 5

I also have a listing of all pages according to their tags here.

Defining publishing project

Now, all of this is pretty standard, I think you can just guess what each part does, but the most interesting part is :html-home/up-format option, it allows to put the navigation bar in the general HTML, even though I could have done by defining a completely new element, but I decided that reusing old functionality is probably best here.

CSS minifier at home

As you can see in Styling, my CSS is a bit too large (by my standards). So I decided to minify it a bit… and this is what I wrote

(message "Starting the minification of CSS...")
(save-excursion
  (find-file "public/style.css")

    (replace-regexp-buffer
   (rx "/*"
       (zero-or-more (or (not (any "*")) (seq "*" (not (any "/")))))
       (one-or-more "*") "/")
   "")

    (replace-regexp-buffer (rx "\n") "")

    (replace-regexp-buffer  (rx (>= 2 "\s")) " ")

    (dolist (symbol (list ?{ ?} ?\; ?, ?> ?~ ?-))
    (replace-regexp-buffer (format "%s " symbol) (format "%s" symbol))
    (replace-regexp-buffer (format " %s" symbol) (format "%s" symbol)))
  (replace-regexp-buffer  (rx ": ") ":")

  (save-buffer))

Here is the definition of replace-regexp-buffer.

(defun replace-regexp-buffer (regexp to-string)

It is a very basic minifer it doesn't really do anything complicated but I have managed to save up to 2.4KB using it, which is pretty good.

Full script

Here is the script, (It's licensed under the GPLv3 Copyright @ tusharhero 2024, although most of it has been taken from this tutorial.)

(message "Cleaning public/")
(shell-command "rm public/*")
(message "Done!")

(message "Getting dependencies, may take some time...")

(require 'package)
(setq package-user-dir (expand-file-name "./.packages"))

(package-initialize)
(unless package-archive-contents
  (package-refresh-contents))

(dolist (package '(htmlize
                   webfeeder
                   dash))
  (unless (package-installed-p package)
    (package-install package)))


(require 'dash)

(define-minor-mode unpackaged/org-export-html-with-useful-ids-mode
  "Attempt to export Org as HTML with useful link IDs.
Instead of random IDs like \"#orga1b2c3\", use heading titles,
made unique when necessary."
  :global t
  (if unpackaged/org-export-html-with-useful-ids-mode
      (advice-add #'org-export-get-reference :override #'unpackaged/org-export-get-reference)
    (advice-remove #'org-export-get-reference #'unpackaged/org-export-get-reference)))

(defun unpackaged/org-export-get-reference (datum info)
  "Like `org-export-get-reference', except uses heading titles instead of random numbers."
  (let ((cache (plist-get info :internal-references)))
    (or (car (rassq datum cache))
        (let* ((crossrefs (plist-get info :crossrefs))
               (cells (org-export-search-cells datum))
                                                                                                                                                                                                                  (new (or (cl-some
                         (lambda (cell)
                           (let ((stored (cdr (assoc cell crossrefs))))
                             (when stored
                               (let ((old (org-export-format-reference stored)))
                                 (and (not (assoc old cache)) stored)))))
                         cells)
                        (when (org-element-property :raw-value datum)
                                                    (unpackaged/org-export-new-title-reference datum cache))
                                                                        (org-export-format-reference
                         (org-export-new-reference cache))))
               (reference-string new))
                                        (dolist (cell cells) (push (cons cell new) cache))
                                        (push (cons reference-string datum) cache)
          (plist-put info :internal-references cache)
          reference-string))))

(defun unpackaged/org-export-new-title-reference (datum cache)
  "Return new reference for DATUM that is unique in CACHE."
  (cl-macrolet ((inc-suffixf (place)
                  `(progn
                     (string-match (rx bos
                                       (minimal-match (group (1+ anything)))
                                       (optional "--" (group (1+ digit)))
                                       eos)
                                   ,place)
                                          (-let* (((s1 suffix) (list (match-string 1 ,place)
                                                (match-string 2 ,place)))
                             (suffix (if suffix
                                         (string-to-number suffix)
                                       0)))
                       (setf ,place (format "%s--%s" s1 (cl-incf suffix)))))))
    (let* ((title (org-element-property :raw-value datum))
           (ref (url-hexify-string (substring-no-properties title)))
           (parent (org-element-property :parent datum)))
      (while (--any (equal ref (car it))
                    cache)
                (if parent
                        (setf title (concat (org-element-property :raw-value parent)
                                "--" title)
                  ref (url-hexify-string (substring-no-properties title))
                  parent (org-element-property :parent parent))
                    (inc-suffixf ref)))
      ref)))

(unpackaged/org-export-html-with-useful-ids-mode)

(require 'ox-publish)
(message "Done!")


(message "Setting customizations...")
(setq org-html-postamble t                          org-html-head-include-scripts nil             org-html-head-include-default-style nil       org-confirm-babel-evaluate nil                org-html-html5-fancy t
      org-html-htmlize-output-type 'css
      user-full-name "tusharhero"
      user-mail-address "tusharhero@sdf.org"
      org-html-with-latex 'verbatim
      )

(setq org-html-postamble-format
      `(("en" ,(concat
                "<p class=\"author\">Author: %a"
                "<details>"
                                "<summary>email</summary>"
                "replace [at] with @, and put the domain for username, and vice versa: "
                (string-join
                 (reverse (string-split user-mail-address "@")) " [at] ")
                "</details>"
                "</p>
<p class=\"license\">
© tusharhero 2024-2026, check <a href=\"/licenses.html\">licenses page</a> for details.
</p>
<p class=\"date\">Date: %d</p>
<p class=\"creator\">%c</p>"))))


(setq org-html-home/up-format
      "<div class=\"navbar\" id=\"org-div-home-and-up\">
<a accesskey=\"H\" %s href=\"%s\">tusharhero's pages</a>
<span class=\"craftering\">
  <a class=\"arrow\" href=\"https://craftering.systemcrafters.net/@tusharhero/previous\">←</a>
  <a href=\"https://craftering.systemcrafters.net/\">craftering</a>
  <a class=\"arrow\" href=\"https://craftering.systemcrafters.net/@tusharhero/next\">→</a>
</span>
</div>"
      )

(setopt org-export-global-macros (list (cons "video"
                                             "
#+BEGIN_EXPORT html
<div class=\"video-title\">$2</div>
<video controls title=\"$2\">
<source src=\"$1\">
<a href=\"$1\">$2</a>
</video>
#+END_EXPORT
")
                                       (cons "screenshot"
                                             "
#+BEGIN_EXPORT html
<div class=\"screenshot-title\">$2</div>
<img title=\"$2\" src=\"$1\">
#+END_EXPORT
")))

(add-hook 'org-export-before-processing-hook
          #'(lambda (backend)
              (insert "#+INCLUDE: \"../setup.org\"\n")))

(setq org-publish-project-alist
      (list
       (list "org-site:main"
             :recursive t
             :base-directory "./content"
             :publishing-function 'org-html-publish-to-html
             :publishing-directory "./public"
             :exclude-tags '("draft" "noexport")
             :exclude "draft*"
             :with-author  t
             :with-creator t
             :with-toc t
             :with-email t
             :html-link-home "/"
             :section-numbers nil
             :time-stamp-file nil)))

(message "Complete!")

(defun remove-org-element (string)
  "Delete the first element which contains STRING."
  (save-excursion
    (search-backward string nil t 2)
    (goto-char (match-beginning 0))
    (org-mark-element)
    (delete-region (region-beginning) (region-end))))

(defun replace-org-element (string new-string)
  "Replace the first element which contains STRING with NEW-STRING."
  (save-excursion
    (search-backward string nil t 2)
    (goto-char (match-beginning 0))
    (org-mark-element)
    (replace-region-contents (region-beginning) (region-end) new-string))
  nil)

(message "Actually building the files...")
(org-publish-all t)
(message "Complete!")

(message "Copying CSS file over to public directory...")
(copy-file "style.css" "public/style.css")
(message "Done!")

(message "Copying favicon file over to public directory...")
(copy-file "favicon.ico" "public/favicon.ico")
(message "Done!")

(message "Copying domains file over to public directory...")
(copy-file ".domains" "public/.domains" t)
(message "Done!")

(defun replace-regexp-buffer (regexp to-string)
  "Replace things macthing REGEXP with TO-STRING in all of the buffer."
  (goto-char (point-min))
  (while (re-search-forward regexp nil t)
    (replace-match to-string nil nil)))

(defmacro get-file-size (filename)
  "Get the size of FILENAME."
  (file-attribute-size (file-attributes filename)))

(message "Starting the minification of CSS...")
(save-excursion
  (find-file "public/style.css")

    (replace-regexp-buffer
   (rx "/*"
       (zero-or-more (or (not (any "*")) (seq "*" (not (any "/")))))
       (one-or-more "*") "/")
   "")

    (replace-regexp-buffer (rx "\n") "")

    (replace-regexp-buffer  (rx (>= 2 "\s")) " ")

    (dolist (symbol (list ?{ ?} ?\; ?, ?> ?~ ?-))
    (replace-regexp-buffer (format "%s " symbol) (format "%s" symbol))
    (replace-regexp-buffer (format " %s" symbol) (format "%s" symbol)))
  (replace-regexp-buffer  (rx ": ") ":")

  (save-buffer))

(message "Done, saved %s in the CSS!"
         (file-size-human-readable
          (- (get-file-size "style.css") (get-file-size "public/style.css"))))

(org-babel-load-file (expand-file-name "tags.org" "content"))
(webfeeder-build
 "rss.xml"
 "./public"
 "https://tusharhero.codeberg.page/"
 (let ((filenames (directory-files "./public" t directory-files-no-dot-files-regexp)))
   (dolist (filename
            (append (mapcar (lambda (file) (expand-file-name file "public"))
                            (list ".git" "favicon.ico" "style.css" "style.css~" ".domains"))
                    (delq nil (mapcar (lambda (article)
                                        (when-let* ((tags (nth 2 article))
                                                    ((member "special" tags))
                                                    (filename (car article))
                                                    (webpage (expand-file-name
                                                              (file-name-with-extension
                                                               (file-name-nondirectory filename)
                                                               "html")
                                                              "public")))
                                          webpage))
                                      (p/tags-table)))))
     (setq filenames (delete filename filenames)))
   (mapcar (lambda (filename)
             (file-name-nondirectory filename))
           filenames))
 :title "tusharhero's pages"
 :description "Articles written by tusharhero (and some other stuff)!"
 :builder 'webfeeder-make-rss)

(webfeeder-build
 "emacs.xml"
 "./public"
 "https://tusharhero.codeberg.page/"
 (delq nil (mapcar (lambda (article)
                     (when-let* ((tags (nth 2 article))
                                 ((member "emacs" tags))
                                 (filename (car article))
                                 (webpage (file-name-with-extension
                                           (file-name-nondirectory filename)
                                           "html")))
                       webpage))
                   (p/tags-table)))
 :title "tusharhero's pages about Emacs"
 :description "Emacs related articles"
 :builder 'webfeeder-make-rss)

(provide 'build-site)

The shell script

But commit-pushing twice is a bit repetitive, and things that are repetitive should be scripted away. So here is the script, It's licensed under the GPLv3 Copyright @ tusharhero 2024

This script checks if there are any new changes in the remote (in this case my private repository containing the sources of all the articles in org format), if there are it runs the build.sh script after which it makes a commit in the pages repository and pushes it.

shgit fetch
DIFFNUMBER=$(git diff origin/master | wc -l | sed -e 's/ .*//')
echo $DIFFNUMBER

if [ $DIFFNUMBER = 0 ]
then echo "Nope! Nothing on the remote!"
     exit
fi

echo "We seem to have new content!"
git pull

./build.sh

cd public
git add .
git commit -am "Automated Content Update"
git push

Web hook

I run this web hook script every time there is a push to my repository.

bash
http_response="HTTP/1.1 202 Accepted\nContent-Type: text/plain\nContent-Length: 4\r\n\nOkay"

while true;
do
    nc -l -p $WEBHOOK_PORT -c "echo \"$http_response\""
    ./buildauto.sh
done

Styling

For styling I have this custom CSS file, its not really anything super interesting so I won't bother explaining anything.

body {
    color: #232323;
    background-color: #fcffff;
    margin: auto;
    width: 60em; max-width: 98%;
}

.tagbar {
    color: #7a5f2f;
    padding: 0.2em;
}

pre,
code,
.status,
.tagbar,
.navbar,
hr {
    border-style: dashed;
    border-width: 0.1em;
    border-color: #b0b7c0;
    border-radius: 0.1em;    
}

:is(h1, h2, h3, h4, h5, h6, h7, h8, h9) {
    font-weight: bold;
}

h1 {
    color: #007a85;
}
h2 {
    color: #004fc0;
}
h3 {
    color: #00845f;
}
h4 {
    color: #7f5ae0;
}
h5 {
    color: #1f6fbf;
}
h6 {
    color: #4244ef;
}
h7 {
    color: #468400;
}
h8 {
    color: #aa44c5;
}
h9 {
    color: #3a6dd2;
}

::selection {
    background-color: #d4eaf3;
}

p.verse {
    font-size: 1em;
    font-style: italic;
    margin-bottom: 10px;
}

img,
video {
    overflow-x: scroll;
    scrollbar-width: none;
    max-width: 100%;
    height: auto;
    margin: 0.2em 0;
}

.video-title,
.screenshot-title {
    position: relative;
    overflow: auto;
    padding: 1pt;
    font-family: monospace;
    margin-left: 3%;
    font-size: 0.8em;
}

.navbar {
    border-color: #cceff5;
    border-top: 0;
    border-width: 0.12em;
    padding: 0.1em;
    display: flex;
    flex-direction: row;
    justify-content: space-between;
}

a {
    color: #1f6fbf;
    text-decoration: none;
}

a:hover {
    color: #aa44c5;
    text-decoration: underline;
}

code {
    background: #eaefef;
}



#content { max-width: 60em; margin: auto; }
.title  { text-align: center;
          margin-bottom: .2em; }
.subtitle { text-align: center;
            font-size: medium;
            font-weight: bold;
            margin-top:0; }
.todo   { font-family: monospace; color: #f00; }
.done   { font-family: monospace; color: #008000; }
.priority { font-family: monospace; color: #ffa500; }
.tag    { background-color: #eee; font-family: monospace;
          padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.org-right  { margin-left: auto; margin-right: 0px;  text-align: right; }
.org-left   { margin-left: 0px;  margin-right: auto; text-align: left; }
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
    padding: 8pt;
    font-family: monospace;
    overflow: auto;
    margin: 1.2em;
}
pre.src {
    position: relative;
    overflow: auto;
}
.org-src-container:before {
    position: relative;
    overflow: auto;
    padding: 1pt;
    font-family: monospace;
    margin-left: 3%;
    font-size: 0.8em;
    opacity: 50%;
}

.org-src-container:has(pre.src-diff):before { content: 'diff'; }


.org-src-container:has(pre.src-asymptote):before { content: 'Asymptote'; }
.org-src-container:has(pre.src-awk):before { content: 'Awk'; }
.org-src-container:has(pre.src-authinfo)::before { content: 'Authinfo'; }
.org-src-container:has(pre.src-C):before { content: 'C'; }

.org-src-container:has(pre.src-clojure):before { content: 'Clojure'; }
.org-src-container:has(pre.src-css):before { content: 'CSS'; }
.org-src-container:has(pre.src-D):before { content: 'D'; }
.org-src-container:has(pre.src-ditaa):before { content: 'ditaa'; }
.org-src-container:has(pre.src-dot):before { content: 'Graphviz'; }
.org-src-container:has(pre.src-calc):before { content: 'Emacs Calc'; }
.org-src-container:has(pre.src-emacs-lisp):before { content: 'Emacs Lisp'; }
.org-src-container:has(pre.src-elisp):before { content: 'Emacs Lisp'; }
.org-src-container:has(pre.src-fortran):before { content: 'Fortran'; }
.org-src-container:has(pre.src-gnuplot):before { content: 'gnuplot'; }
.org-src-container:has(pre.src-haskell):before { content: 'Haskell'; }
.org-src-container:has(pre.src-hledger):before { content: 'hledger'; }
.org-src-container:has(pre.src-java):before { content: 'Java'; }
.org-src-container:has(pre.src-js):before { content: 'Javascript'; }
.org-src-container:has(pre.src-latex):before { content: 'LaTeX'; }
.org-src-container:has(pre.src-ledger):before { content: 'Ledger'; }
.org-src-container:has(pre.src-lisp):before { content: 'Lisp'; }
.org-src-container:has(pre.src-lilypond):before { content: 'Lilypond'; }
.org-src-container:has(pre.src-lua):before { content: 'Lua'; }
.org-src-container:has(pre.src-matlab):before { content: 'MATLAB'; }
.org-src-container:has(pre.src-mscgen):before { content: 'Mscgen'; }
.org-src-container:has(pre.src-ocaml):before { content: 'Objective Caml'; }
.org-src-container:has(pre.src-octave):before { content: 'Octave'; }
.org-src-container:has(pre.src-org):before { content: 'Org mode'; }
.org-src-container:has(pre.src-oz):before { content: 'OZ'; }
.org-src-container:has(pre.src-plantuml):before { content: 'Plantuml'; }
.org-src-container:has(pre.src-processing):before { content: 'Processing.js'; }
.org-src-container:has(pre.src-python):before { content: 'Python'; }
.org-src-container:has(pre.src-R):before { content: 'R'; }
.org-src-container:has(pre.src-ruby):before { content: 'Ruby'; }
.org-src-container:has(pre.src-sass):before { content: 'Sass'; }
.org-src-container:has(pre.src-scheme):before { content: 'Scheme'; }
.org-src-container:has(pre.src-screen):before { content: 'Gnu Screen'; }
.org-src-container:has(pre.src-sed):before { content: 'Sed'; }
.org-src-container:has(pre.src-sh):before { content: 'shell'; }
.org-src-container:has(pre.src-sql):before { content: 'SQL'; }
.org-src-container:has(pre.src-sqlite):before { content: 'SQLite'; }

.org-src-container:has(pre.src-forth):before { content: 'Forth'; }
.org-src-container:has(pre.src-io):before { content: 'IO'; }
.org-src-container:has(pre.src-J):before { content: 'J'; }
.org-src-container:has(pre.src-makefile):before { content: 'Makefile'; }
.org-src-container:has(pre.src-maxima):before { content: 'Maxima'; }
.org-src-container:has(pre.src-perl):before { content: 'Perl'; }
.org-src-container:has(pre.src-picolisp):before { content: 'Pico Lisp'; }
.org-src-container:has(pre.src-scala):before { content: 'Scala'; }
.org-src-container:has(pre.src-shell):before { content: 'Shell Script'; }
.org-src-container:has(pre.src-ebnf2ps):before { content: 'ebfn2ps'; }

.org-src-container:has(pre.src-cpp):before  { content: 'C++'; }
.org-src-container:has(pre.src-abc):before  { content: 'ABC'; }
.org-src-container:has(pre.src-coq):before  { content: 'Coq'; }
.org-src-container:has(pre.src-groovy):before  { content: 'Groovy'; }

.org-src-container:has(pre.src-bash):before  { content: 'bash'; }
.org-src-container:has(pre.src-csh):before  { content: 'csh'; }
.org-src-container:has(pre.src-ash):before  { content: 'ash'; }
.org-src-container:has(pre.src-dash):before  { content: 'dash'; }
.org-src-container:has(pre.src-ksh):before  { content: 'ksh'; }
.org-src-container:has(pre.src-mksh):before  { content: 'mksh'; }
.org-src-container:has(pre.src-posh):before  { content: 'posh'; }

.org-src-container:has(pre.src-ada):before { content: 'Ada'; }
.org-src-container:has(pre.src-asm):before { content: 'Assembler'; }
.org-src-container:has(pre.src-caml):before { content: 'Caml'; }
.org-src-container:has(pre.src-delphi):before { content: 'Delphi'; }
.org-src-container:has(pre.src-html):before { content: 'HTML'; }
.org-src-container:has(pre.src-idl):before { content: 'IDL'; }
.org-src-container:has(pre.src-mercury):before { content: 'Mercury'; }
.org-src-container:has(pre.src-metapost):before { content: 'MetaPost'; }
.org-src-container:has(pre.src-modula-2):before { content: 'Modula-2'; }
.org-src-container:has(pre.src-pascal):before { content: 'Pascal'; }
.org-src-container:has(pre.src-ps):before { content: 'PostScript'; }
.org-src-container:has(pre.src-prolog):before { content: 'Prolog'; }
.org-src-container:has(pre.src-simula):before { content: 'Simula'; }
.org-src-container:has(pre.src-tcl):before { content: 'tcl'; }
.org-src-container:has(pre.src-tex):before { content: 'TeX'; }
.org-src-container:has(pre.src-plain-tex):before { content: 'Plain TeX'; }
.org-src-container:has(pre.src-verilog):before { content: 'Verilog'; }
.org-src-container:has(pre.src-vhdl):before { content: 'VHDL'; }
.org-src-container:has(pre.src-xml):before { content: 'XML'; }
.org-src-container:has(pre.src-nxml):before { content: 'XML'; }

.org-src-container:has(pre.src-conf):before { content: 'Configuration File'; }
.org-src-container:has(pre.src-conf-toml):before { content: 'TOML Configuration File'; }

table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top;  }
th.org-right  { text-align: center;  }
th.org-left   { text-align: center;   }
th.org-center { text-align: center; }
td.org-right  { text-align: right;  }
td.org-left   { text-align: left;   }
td.org-center { text-align: center; }
dt { font-weight: bold; }
.footpara { display: inline; }
.footdef  { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.equation-container {
    display: table;
    text-align: center;
    width: 100%;
}
.equation {
    vertical-align: middle;
}
.equation-label {
    display: table-cell;
    text-align: right;
    vertical-align: middle;
}
.inlinetask {
    padding: 10px;
    border: 2px outset #808080;
    margin: 10px;
    background: #ffffcc;
}
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
.org-svg { }



.org-abbrev-table-name {
    
    color: #004fc0;
    font-weight: bold;
}
.org-ansi-color-black {
    
    color: #000000;
    background-color: #000000;
}
.org-ansi-color-blue {
    
    color: #004fc0;
    background-color: #004fc0;
}
.org-ansi-color-bold {
    
    font-weight: bold;
}
.org-ansi-color-bright-black {
    
    color: #595959;
    background-color: #595959;
}
.org-ansi-color-bright-blue {
    
    color: #4244ef;
    background-color: #4244ef;
}
.org-ansi-color-bright-cyan {
    
    color: #007a85;
    background-color: #007a85;
}
.org-ansi-color-bright-green {
    
    color: #00845f;
    background-color: #00845f;
}
.org-ansi-color-bright-magenta {
    
    color: #7f5ae0;
    background-color: #7f5ae0;
}
.org-ansi-color-bright-red {
    
    color: #d03003;
    background-color: #d03003;
}
.org-ansi-color-bright-white {
    
    color: #ffffff;
    background-color: #ffffff;
}
.org-ansi-color-bright-yellow {
    
    color: #b6532f;
    background-color: #b6532f;
}
.org-ansi-color-cyan {
    
    color: #1f6fbf;
    background-color: #1f6fbf;
}
.org-ansi-color-faint {
}
.org-ansi-color-fast-blink {
}
.org-ansi-color-green {
    
    color: #008a00;
    background-color: #008a00;
}
.org-ansi-color-inverse {
}
.org-ansi-color-italic {
    
    font-style: italic;
}
.org-ansi-color-magenta {
    
    color: #aa44c5;
    background-color: #aa44c5;
}
.org-ansi-color-red {
    
    color: #c42d2f;
    background-color: #c42d2f;
}
.org-ansi-color-slow-blink {
}
.org-ansi-color-underline {
    
    text-decoration: underline;
}
.org-ansi-color-white {
    
    color: #a6a6a6;
    background-color: #a6a6a6;
}
.org-ansi-color-yellow {
    
    color: #aa6100;
    background-color: #aa6100;
}
.org-blink-matching-paren-offscreen {
    
    background-color: #cab0ef;
}
.org-bold {
    
    font-weight: bold;
}
.org-bookmark {
    
    color: #008a00;
}
.org-bookmark-menu-bookmark {
    
    color: #3a6dd2;
}
.org-border {
}
.org-bracket {
    
    color: #232323;
}
.org-breadcrumb {
    
    color: #204f9a;
}
.org-breadcrumb-imenu-crumbs {
    
    color: #204f9a;
}
.org-breadcrumb-imenu-leaf {
    
    color: #002580;
}
.org-breadcrumb-project-base {
    
    color: #204f9a;
}
.org-breadcrumb-project-crumbs {
    
    color: #204f9a;
}
.org-breadcrumb-project-leaf {
}
.org-browse-url-button {
    
    color: #1f6fbf;
    text-decoration: underline;
}
.org-buffer-menu-buffer {
    
    color: #3a6dd2;
}
.org-bui-action-button {
    
    color: #232323;
    background-color: #b5b8b8;
}
.org-bui-action-button-mouse {
    
    color: #232323;
    background-color: #eab5ff;
}
.org-bui-file-name {
    
    color: #1f6fbf;
    text-decoration: underline;
}
.org-bui-hint-key {
    
    color: #996c4f;
}
.org-bui-history-button {
    
    color: #1f6fbf;
    text-decoration: underline;
}
.org-bui-info-heading {
    
    font-size: 120%;
    font-weight: bold;
}
.org-bui-info-param-title {
    
    color: #7f5ae0;
}
.org-bui-time {
    
    color: #065fff;
}
.org-bui-url {
    
    color: #1f6fbf;
    text-decoration: underline;
}
.org-builtin {
    
    color: #1f6fbf;
}
.org-button {
    
    color: #1f6fbf;
    text-decoration: underline;
}
.org-c-annotation {
    
    color: #065fff;
}
.org-calc-nonselected {
    
    color: #66657f;
    font-style: italic;
}
.org-calc-selected {
    
    font-weight: bold;
}
.org-calendar-month-header {
}
.org-calendar-today {
    
    color: #232323;
}
.org-calendar-weekday-header {
    
    color: #1f6fbf;
}
.org-calendar-weekend-header {
    
    color: #9a4366;
}
.org-change-log-acknowledgment {
    
    color: #605f9f;
}
.org-change-log-conditionals {
    
    color: #c42d2f;
}
.org-change-log-date {
    
    color: #007a85;
}
.org-change-log-email {
    
    color: #204f9a;
}
.org-change-log-file {
}
.org-change-log-function {
    
    color: #996c4f;
}
.org-change-log-list {
}
.org-change-log-name {
    
    color: #3a6dd2;
}
.org-child-frame-border {
    
    background-color: #b0b7c0;
}
.org-comint-highlight-input {
}
.org-comint-highlight-prompt {
    
    color: #1f6fbf;
}
.org-comment {
    
    color: #7a5f2f;
}
.org-comment-delimiter {
    
    color: #7a5f2f;
}
.org-compilation-column-number {
    
    color: #66657f;
}
.org-compilation-error {
    
    color: #c42d2f;
}
.org-compilation-info {
    
    color: #008a00;
}
.org-compilation-line-number {
    
    color: #66657f;
}
.org-compilation-mode-line-exit {
}
.org-compilation-mode-line-fail {
    
    color: #7f0000;
}
.org-compilation-mode-line-run {
    
    color: #5f0070;
}
.org-compilation-warning {
    
    color: #996c4f;
}
.org-completion-preview {
    
    color: #66657f;
}
.org-completion-preview-common {
    
    color: #66657f;
    text-decoration: underline;
}
.org-completion-preview-highlight {
    
    color: #232323;
    background-color: #eab5ff;
}
.org-completions-annotations {
    
    color: #605f9f;
}
.org-completions-common-part {
    
    color: #4244ef;
    font-weight: bold;
}
.org-completions-first-difference {
    
    color: #00845f;
    font-weight: bold;
}
.org-completions-group-separator {
    
    color: #66657f;
    text-decoration: line-through;
}
.org-completions-group-title {
    
    color: #66657f;
    font-style: italic;
}
.org-completions-highlight {
    
    background-color: #cceff5;
    font-weight: bold;
}
.org-confusingly-reordered {
    
    text-decoration: underline;
}
.org-constant {
    
    color: #065fff;
}
.org-consult-async-failed {
    
    color: #c42d2f;
}
.org-consult-async-finished {
    
    color: #008a00;
}
.org-consult-async-option {
    
    color: #996c4f;
}
.org-consult-async-running {
    
    color: #996c4f;
}
.org-consult-async-split {
    
    color: #c42d2f;
}
.org-consult-bookmark {
    
    color: #065fff;
}
.org-consult-buffer {
}
.org-consult-file {
    
    color: #008a00;
}
.org-consult-grep-context {
    
    color: #66657f;
}
.org-consult-help {
    
    color: #66657f;
}
.org-consult-highlight-mark {
    
    color: #232323;
    background-color: #ffe9bf;
}
.org-consult-highlight-match {
    
    color: #232323;
    background-color: #ffe9bf;
}
.org-consult-line-number {
    
    color: #66657f;
}
.org-consult-line-number-prefix {
    
    color: #66657f;
}
.org-consult-line-number-wrapped {
    
    color: #996c4f;
}
.org-consult-narrow-indicator {
    
    color: #996c4f;
}
.org-consult-preview-insertion {
    
    background-color: #eaefef;
}
.org-consult-preview-line {
    
    background-color: #eaefef;
}
.org-consult-preview-match {
    
    color: #232323;
    background-color: #fac200;
}
.org-consult-separator {
    
    color: #ccc;
}
.org-css-property {
    
    color: #004fc0;
}
.org-css-selector {
    
    color: #00845f;
}
.org-cursor {
    
    background-color: #0055bb;
}
.org-custom-button {
    
    color: #232323;
    background-color: #b5b8b8;
}
.org-custom-button-mouse {
    
    color: #232323;
    background-color: #eab5ff;
}
.org-custom-button-pressed {
    
    color: #232323;
    background-color: #fcffff;
}
.org-custom-button-pressed-unraised {
    
    color: #8b008b;
    text-decoration: underline;
}
.org-custom-button-unraised {
    
    text-decoration: underline;
}
.org-custom-changed {
    
    background-color: #f4e8bd;
}
.org-custom-comment {
    
    color: #7a5f2f;
}
.org-custom-comment-tag {
    
    color: #7a5f2f;
}
.org-custom-documentation {
}
.org-custom-face-tag {
    
    color: #7f5ae0;
}
.org-custom-group-subtitle {
    
    font-weight: bold;
}
.org-custom-group-tag {
    
    color: #1f6fbf;
}
.org-custom-group-tag-1 {
    
    color: #065fff;
}
.org-custom-invalid {
    
    color: #c42d2f;
    text-decoration: line-through;
}
.org-custom-link {
    
    color: #1f6fbf;
    text-decoration: underline;
}
.org-custom-modified {
    
    background-color: #f4e8bd;
}
.org-custom-rogue {
    
    color: #c42d2f;
    text-decoration: line-through;
}
.org-custom-saved {
    
    text-decoration: underline;
}
.org-custom-set {
    
    color: #008a00;
}
.org-custom-state {
    
    color: #996c4f;
}
.org-custom-themed {
    
    background-color: #f4e8bd;
}
.org-custom-variable-button {
    
    font-weight: bold;
    text-decoration: underline;
}
.org-custom-variable-obsolete {
    
    color: #66657f;
}
.org-custom-variable-tag {
    
    color: #3a6dd2;
}
.org-custom-visibility {
    
    color: #1f6fbf;
    font-size: 80%;
    text-decoration: underline;
}
.org-default {
    
    color: #232323;
    background-color: #fcffff;
}
.org-delimiter {
    
    color: #232323;
}
.org-diary {
    
    color: #007a85;
}
.org-diary-anniversary {
    
    color: #c0469a;
}
.org-diary-button {
}
.org-diary-time {
    
    color: #007a85;
}
.org-diff-added {
    
    color: #004840;
    background-color: #c9ffea;
}
.org-diff-changed {
    
    color: #553d00;
    background-color: #f4e8bd;
}
.org-diff-changed-unspecified {
    
    color: #553d00;
    background-color: #f4e8bd;
}
.org-diff-context {
}
.org-diff-error {
    
    color: #c42d2f;
}
.org-diff-file-header {
}
.org-diff-function {
    
    background-color: #f7f9f9;
}
.org-diff-header {
}
.org-diff-hunk-header {
    
    background-color: #f7f9f9;
}
.org-diff-index {
}
.org-diff-indicator-added {
    
    color: #006700;
    background-color: #c9ffea;
}
.org-diff-indicator-changed {
    
    color: #655000;
    background-color: #f4e8bd;
}
.org-diff-indicator-removed {
    
    color: #aa2222;
    background-color: #ffd6e0;
}
.org-diff-nonexistent {
}
.org-diff-refine-added {
    
    color: #004840;
    background-color: #b3efdf;
}
.org-diff-refine-changed {
    
    color: #553d00;
    background-color: #efd299;
}
.org-diff-refine-removed {
    
    color: #8f1313;
    background-color: #f5bfc8;
}
.org-diff-removed {
    
    color: #8f1313;
    background-color: #ffd6e0;
}
.org-dired-broken-symlink {
    
    color: #c42d2f;
    text-decoration: underline;
}
.org-dired-directory {
    
    color: #4244ef;
}
.org-dired-flagged {
    
    color: #c42d2f;
    background-color: #ffdfda;
    font-weight: bold;
}
.org-dired-header {
}
.org-dired-ignored {
    
    color: #66657f;
}
.org-dired-mark {
}
.org-dired-marked {
    
    color: #008a00;
    background-color: #ccefcf;
    font-weight: bold;
}
.org-dired-perm-write {
    
    color: #66657f;
}
.org-dired-set-id {
    
    color: #996c4f;
}
.org-dired-special {
    
    color: #3a6dd2;
}
.org-dired-symlink {
    
    color: #204f9a;
    text-decoration: underline;
}
.org-dired-warning {
    
    color: #996c4f;
}
.org-display-time-date-and-time {
}
.org-doc {
    
    color: #605f9f;
}
.org-doc-markup {
    
    color: #605f9f;
}
.org-doc-view-svg {
    
    color: #000000;
    background-color: #ffffff;
}
.org-ecfpawXscratch-buffer-subtitle {
}
.org-ecfpawXscratch-buffer-title {
    
    font-size: 200%;
    font-style: italic;
}
.org-edebug-disabled-breakpoint {
    
    background-color: #ddffdd;
}
.org-edebug-enabled-breakpoint {
    
    color: #232323;
    background-color: #eab5ff;
}
.org-ediff-current-diff-a {
    
    color: #8f1313;
    background-color: #ffd6e0;
}
.org-ediff-current-diff-ancestor {
    
    background-color: #d4eaf3;
}
.org-ediff-current-diff-b {
    
    color: #004840;
    background-color: #c9ffea;
}
.org-ediff-current-diff-c {
    
    color: #553d00;
    background-color: #f4e8bd;
}
.org-ediff-even-diff-a {
    
    background-color: #eaefef;
}
.org-ediff-even-diff-ancestor {
    
    background-color: #eaefef;
}
.org-ediff-even-diff-b {
    
    background-color: #eaefef;
}
.org-ediff-even-diff-c {
    
    background-color: #eaefef;
}
.org-ediff-fine-diff-a {
    
    color: #8f1313;
    background-color: #f5bfc8;
}
.org-ediff-fine-diff-ancestor {
    
    color: #232323;
    background-color: #b5b8b8;
}
.org-ediff-fine-diff-b {
    
    color: #004840;
    background-color: #b3efdf;
}
.org-ediff-fine-diff-c {
    
    color: #553d00;
    background-color: #efd299;
}
.org-ediff-odd-diff-a {
    
    background-color: #eaefef;
}
.org-ediff-odd-diff-ancestor {
    
    background-color: #eaefef;
}
.org-ediff-odd-diff-b {
    
    background-color: #eaefef;
}
.org-ediff-odd-diff-c {
    
    background-color: #eaefef;
}
.org-edit-indirect-edited-region {
    
    color: #232323;
    background-color: #aae0bf;
}
.org-edmacro-label {
    
    color: #4244ef;
}
.org-eldoc-highlight-function-argument {
    
    color: #996c4f;
    background-color: #ffe9bf;
}
.org-elisp-shorthand-font-lock {
    
    color: #aa44c5;
}

.org-error {
    
    color: #c42d2f;
}
.org-ert-test-result-expected {
    
    color: #008a00;
    background-color: #ccefcf;
}
.org-ert-test-result-unexpected {
    
    color: #c42d2f;
    background-color: #ffdfda;
}
.org-escape {
    
    color: #aa44c5;
}
.org-escape-glyph {
    
    color: #065fff;
}
.org-eww-form-checkbox {
    
    color: #232323;
    background-color: #eaefef;
}
.org-eww-form-file {
    
    color: #232323;
    background-color: #b5b8b8;
}
.org-eww-form-select {
    
    color: #232323;
    background-color: #b5b8b8;
}
.org-eww-form-submit {
    
    color: #232323;
    background-color: #b5b8b8;
}
.org-eww-form-text {
    
    color: #232323;
    background-color: #eaefef;
    text-decoration: underline;
}
.org-eww-form-textarea {
    
    color: #232323;
    background-color: #eaefef;
    text-decoration: underline;
}
.org-eww-invalid-certificate {
    
    color: #c42d2f;
}
.org-eww-valid-certificate {
    
    color: #008a00;
}
.org-ffap {
    
    color: #232323;
    background-color: #eab5ff;
}
.org-file-name-shadow {
    
    color: #66657f;
}
.org-fill-column-indicator {
    
    color: #b5b8b8;
    background-color: #b5b8b8;
}
.org-fixed-pitch {
}
.org-fixed-pitch-serif {
}
.org-flyspell-duplicate {
    
    text-decoration: underline;
}
.org-flyspell-incorrect {
    
    text-decoration: underline;
}
.org-fringe {
    
    color: #232323;
}
.org-function-call {
    
    color: #517f3c;
}
.org-function-name {
    
    color: #00845f;
}
.org-geiser-font-lock-autodoc-current-arg {
    
    color: #996c4f;
    background-color: #ffe9bf;
}
.org-geiser-font-lock-autodoc-identifier {
    
    color: #605f9f;
}
.org-geiser-font-lock-doc-button {
    
    color: #1f6fbf;
    text-decoration: underline;
}
.org-geiser-font-lock-doc-link {
    
    color: #1f6fbf;
    text-decoration: underline;
}
.org-geiser-font-lock-doc-title {
    
    font-weight: bold;
}
.org-geiser-font-lock-error-link {
    
    color: #c42d2f;
    text-decoration: underline;
}
.org-geiser-font-lock-image-button {
    
    color: #008a00;
    text-decoration: underline;
}
.org-geiser-font-lock-repl-input {
}
.org-geiser-font-lock-repl-output {
    
    color: #004fc0;
}
.org-geiser-font-lock-repl-prompt {
    
    color: #1f6fbf;
}
.org-geiser-font-lock-xref-header {
}
.org-geiser-font-lock-xref-link {
    
    color: #1f6fbf;
    text-decoration: underline;
}
.org-git-commit-comment-action {
    
    color: #7a5f2f;
}
.org-git-commit-comment-branch-local {
    
    color: #4244ef;
}
.org-git-commit-comment-branch-remote {
    
    color: #00845f;
}
.org-git-commit-comment-detached {
    
    color: #4244ef;
}
.org-git-commit-comment-file {
    
    color: #c0469a;
}
.org-git-commit-keyword {
    
    color: #004fc0;
}
.org-git-commit-nonempty-second-line {
    
    color: #c42d2f;
}
.org-git-commit-overlong-summary {
    
    color: #996c4f;
}
.org-git-commit-summary {
    
    color: #204f9a;
}
.org-git-commit-trailer-token {
    
    color: #004fc0;
}
.org-git-commit-trailer-value {
    
    color: #4244ef;
}
.org-glyphless-char {
    
    font-size: 60%;
}
.org-grep-heading {
    
    color: #008a00;
}
.org-hbut {
    
    color: #232323;
    background-color: #b5b8b8;
}
.org-hbut-flash {
    
    color: #232323;
    background-color: #ff8f88;
}
.org-hbut-item {
    
    color: #008a00;
}
.org-header-line {
    
    background-color: #eaefef;
}
.org-header-line-active {
    
    background-color: #eaefef;
}
.org-header-line-highlight {
    
    color: #232323;
    background-color: #eab5ff;
}
.org-header-line-inactive {
    
    color: #66657f;
    background-color: #eaefef;
}
.org-help-argument-name {
    
    color: #3a6dd2;
}
.org-help-for-help-header {
    
    font-size: 126%;
}
.org-hi-aquamarine {
    
    color: #232323;
    background-color: #88c8ff;
}
.org-hi-black-b {
    
    color: #fcffff;
    background-color: #232323;
}
.org-hi-black-hb {
    
    color: #fcffff;
    background-color: #204f9a;
}
.org-hi-blue {
    
    color: #232323;
    background-color: #baeeff;
}
.org-hi-blue-b {
    
    color: #232323;
    background-color: #cbcfff;
}
.org-hi-green {
    
    color: #232323;
    background-color: #b3f6d0;
}
.org-hi-green-b {
    
    color: #232323;
    background-color: #8adf90;
}
.org-hi-pink {
    
    color: #232323;
    background-color: #df8fff;
}
.org-hi-red-b {
    
    color: #232323;
    background-color: #ff8f88;
}
.org-hi-salmon {
    
    color: #63192a;
    background-color: #f1c8b5;
}
.org-hi-yellow {
    
    color: #232323;
    background-color: #fac200;
}
.org-highlight {
    
    color: #232323;
    background-color: #eab5ff;
}
.org-hl-line {
    
    background-color: #dff6e4;
}
.org-holiday {
    
    color: #c0469a;
}
.org-homoglyph {
    
    color: #996c4f;
}
.org-ibut {
    
    color: #204f9a;
    text-decoration: underline;
}
.org-icomplete-first-match {
    
    color: #4244ef;
    font-weight: bold;
}
.org-icomplete-section {
    
    color: #66657f;
    font-style: italic;
}
.org-icomplete-selected-match {
    
    background-color: #cceff5;
    font-weight: bold;
}
.org-icomplete-vertical-selected-prefix-indicator {
    
    color: #065fff;
}
.org-icomplete-vertical-unselected-prefix-indicator {
    
    color: #66657f;
}
.org-icon {
}
.org-icon-button {
    
    color: #232323;
    background-color: #b5b8b8;
}
.org-info-header-node {
    
    color: #66657f;
}
.org-info-header-xref {
    
    color: #1f6fbf;
}
.org-info-index-match {
    
    color: #232323;
    background-color: #ffe9bf;
}
.org-info-menu-header {
    
    color: #4244ef;
    font-weight: bold;
}
.org-info-menu-star {
    
    color: #c42d2f;
}
.org-info-node {
}
.org-info-quoted {
    
    color: #c0469a;
}
.org-info-title-1 {
    
    color: #004fc0;
    font-weight: bold;
}
.org-info-title-2 {
    
    color: #00845f;
    font-weight: bold;
}
.org-info-title-3 {
    
    color: #7f5ae0;
    font-weight: bold;
}
.org-info-title-4 {
    
    color: #1f6fbf;
    font-weight: bold;
}
.org-info-xref {
    
    color: #1f6fbf;
    text-decoration: underline;
}
.org-internal-border {
}
.org-isearch {
    
    color: #232323;
    background-color: #fac200;
}
.org-isearch-fail {
    
    color: #c42d2f;
    background-color: #ffdfda;
}
.org-isearch-group-1 {
    
    color: #232323;
    background-color: #df8fff;
}
.org-isearch-group-2 {
    
    color: #232323;
    background-color: #8adf90;
}
.org-italic {
    
    font-style: italic;
}
.org-keyword {
    
    color: #004fc0;
}
.org-kmacro-menu-flagged {
    
    color: #c42d2f;
    background-color: #ffdfda;
    font-weight: bold;
}
.org-kmacro-menu-mark {
}
.org-kmacro-menu-marked {
    
    color: #008a00;
    background-color: #ccefcf;
    font-weight: bold;
}
.org-lazy-highlight {
    
    color: #232323;
    background-color: #cbcfff;
}
.org-link {
    
    color: #1f6fbf;
    text-decoration: underline;
}
.org-link-visited {
    
    color: #aa44c5;
    text-decoration: underline;
}
.org-llama-XX-macro {
    
    color: #517f3c;
}
.org-llama-deleted-argument {
}
.org-llama-llama-macro {
    
    color: #004fc0;
}
.org-llama-mandatory-argument {
    
    color: #305f9f;
}
.org-llama-optional-argument {
    
    color: #7f5ae0;
}
.org-log-edit-header {
}
.org-log-edit-headers-separator {
    
    background-color: #b0b7c0;
}
.org-log-edit-summary {
    
    color: #204f9a;
}
.org-log-edit-unknown-header {
    
    color: #66657f;
}
.org-log-view-commit-body {
}
.org-log-view-file {
}
.org-log-view-message {
    
    color: #605f9f;
}
.org-magit-bisect-bad {
    
    color: #c42d2f;
}
.org-magit-bisect-good {
    
    color: #008a00;
}
.org-magit-bisect-skip {
    
    color: #996c4f;
}
.org-magit-blame-date {
}
.org-magit-blame-dimmed {
    
    color: #66657f;
}
.org-magit-blame-hash {
}
.org-magit-blame-heading {
    
    color: #232323;
    background-color: #b5b8b8;
}
.org-magit-blame-highlight {
    
    color: #232323;
    background-color: #b5b8b8;
}
.org-magit-blame-margin {
    
    color: #232323;
    background-color: #b5b8b8;
}
.org-magit-blame-name {
}
.org-magit-blame-summary {
}
.org-magit-branch-current {
    
    color: #4244ef;
}
.org-magit-branch-local {
    
    color: #4244ef;
}
.org-magit-branch-remote {
    
    color: #00845f;
}
.org-magit-branch-remote-head {
    
    color: #00845f;
}
.org-magit-branch-upstream {
}
.org-magit-branch-warning {
    
    color: #996c4f;
}
.org-magit-cherry-equivalent {
}
.org-magit-cherry-unmatched {
    
    color: #c42d2f;
}
.org-magit-diff-added {
    
    color: #004840;
    background-color: #d7fff5;
}
.org-magit-diff-added-highlight {
    
    color: #004840;
    background-color: #c9ffea;
}
.org-magit-diff-base {
    
    color: #553d00;
    background-color: #f9efcb;
}
.org-magit-diff-base-highlight {
    
    color: #553d00;
    background-color: #f4e8bd;
}
.org-magit-diff-conflict-heading {
    
    background-color: #f7f9f9;
}
.org-magit-diff-conflict-heading-highlight {
    
    background-color: #b5b8b8;
}
.org-magit-diff-context {
    
    color: #66657f;
}
.org-magit-diff-context-highlight {
    
    background-color: #eaefef;
}
.org-magit-diff-file-heading {
    
    color: #4244ef;
}
.org-magit-diff-file-heading-highlight {
    
    color: #4244ef;
    background-color: #d7dbdb;
}
.org-magit-diff-file-heading-selection {
    
    background-color: #aae0bf;
}
.org-magit-diff-hunk-heading {
    
    background-color: #f7f9f9;
}
.org-magit-diff-hunk-heading-highlight {
    
    background-color: #b5b8b8;
}
.org-magit-diff-hunk-heading-selection {
    
    background-color: #aae0bf;
}
.org-magit-diff-hunk-region {
}
.org-magit-diff-lines-boundary {
    
    background-color: #232323;
}
.org-magit-diff-lines-heading {
    
    color: #fcffff;
    background-color: #66657f;
}
.org-magit-diff-our {
    
    color: #8f1313;
    background-color: #ffe9e6;
}
.org-magit-diff-our-highlight {
    
    color: #8f1313;
    background-color: #ffd6e0;
}
.org-magit-diff-removed {
    
    color: #8f1313;
    background-color: #ffe9e6;
}
.org-magit-diff-removed-highlight {
    
    color: #8f1313;
    background-color: #ffd6e0;
}
.org-magit-diff-revision-summary {
    
    background-color: #f7f9f9;
}
.org-magit-diff-revision-summary-highlight {
    
    background-color: #b5b8b8;
}
.org-magit-diff-their {
    
    color: #004840;
    background-color: #d7fff5;
}
.org-magit-diff-their-highlight {
    
    color: #004840;
    background-color: #c9ffea;
}
.org-magit-diff-whitespace-warning {
    
    background-color: #fac200;
}
.org-magit-diffstat-added {
    
    color: #006700;
}
.org-magit-diffstat-removed {
    
    color: #aa2222;
}
.org-magit-dimmed {
    
    color: #66657f;
}
.org-magit-filename {
    
    color: #c0469a;
}
.org-magit-hash {
    
    color: #605f9f;
}
.org-magit-head {
    
    color: #4244ef;
}
.org-magit-header-line {
}
.org-magit-header-line-log-select {
}
.org-magit-keyword {
    
    color: #004fc0;
}
.org-magit-keyword-squash {
    
    color: #996c4f;
}
.org-magit-left-margin {
    
    color: #232323;
    background-color: #fcffff;
}
.org-magit-log-author {
    
    color: #3a6dd2;
}
.org-magit-log-date {
    
    color: #007a85;
}
.org-magit-log-graph {
    
    color: #66657f;
}
.org-magit-mode-line-process {
    
    color: #002580;
}
.org-magit-mode-line-process-error {
    
    color: #7f0000;
}
.org-magit-popup-argument {
    
    color: #996c4f;
}
.org-magit-popup-disabled-argument {
    
    color: #66657f;
}
.org-magit-popup-heading {
    
    color: #004fc0;
}
.org-magit-popup-key {
    
    color: #1f6fbf;
}
.org-magit-popup-option-value {
    
    color: #4244ef;
}
.org-magit-process-ng {
    
    color: #c42d2f;
}
.org-magit-process-ok {
    
    color: #008a00;
}
.org-magit-reflog-amend {
    
    color: #996c4f;
}
.org-magit-reflog-checkout {
}
.org-magit-reflog-cherry-pick {
    
    color: #008a00;
}
.org-magit-reflog-commit {
}
.org-magit-reflog-merge {
    
    color: #008a00;
}
.org-magit-reflog-other {
    
    color: #065fff;
}
.org-magit-reflog-rebase {
    
    color: #c0469a;
}
.org-magit-reflog-remote {
    
    color: #00845f;
}
.org-magit-reflog-reset {
    
    color: #c42d2f;
}
.org-magit-refname {
    
    color: #66657f;
}
.org-magit-refname-pullreq {
    
    color: #66657f;
}
.org-magit-refname-stash {
    
    color: #66657f;
}
.org-magit-refname-wip {
    
    color: #66657f;
}
.org-magit-section-child-count {
}
.org-magit-section-heading {
    
    color: #204f9a;
}
.org-magit-section-heading-selection {
    
    background-color: #aae0bf;
}
.org-magit-section-highlight {
    
    background-color: #d7dbdb;
}
.org-magit-section-secondary-heading {
}
.org-magit-sequence-done {
    
    color: #008a00;
}
.org-magit-sequence-drop {
    
    color: #c42d2f;
}
.org-magit-sequence-exec {
}
.org-magit-sequence-head {
    
    color: #4244ef;
}
.org-magit-sequence-onto {
    
    color: #66657f;
}
.org-magit-sequence-part {
    
    color: #996c4f;
}
.org-magit-sequence-pick {
}
.org-magit-sequence-stop {
    
    color: #c42d2f;
}
.org-magit-signature-bad {
    
    color: #c42d2f;
}
.org-magit-signature-error {
    
    color: #c42d2f;
}
.org-magit-signature-expired {
    
    color: #996c4f;
}
.org-magit-signature-expired-key {
    
    color: #996c4f;
}
.org-magit-signature-good {
    
    color: #008a00;
}
.org-magit-signature-revoked {
    
    color: #996c4f;
}
.org-magit-signature-untrusted {
    
    color: #66657f;
}
.org-magit-tag {
    
    color: #065fff;
}
.org-makefile-makepp-perl {
    
    background-color: #eaefef;
}
.org-makefile-shell {
    
    color: #232323;
    background-color: #fcffff;
}
.org-makefile-space {
    
    background-color: #f7f9f9;
}
.org-makefile-targets {
    
    color: #00845f;
}
.org-man-overstrike {
    
    color: #4244ef;
    font-weight: bold;
}
.org-man-reverse {
    
    color: #232323;
    background-color: #eab5ff;
}
.org-man-underline {
    
    color: #00845f;
    text-decoration: underline;
}
.org-marginalia-archive {
    
    color: #4244ef;
}
.org-marginalia-char {
    
    color: #c0469a;
}
.org-marginalia-date {
    
    color: #007a85;
}
.org-marginalia-documentation {
    
    color: #605f9f;
}
.org-marginalia-file-name {
    
    color: #66657f;
}
.org-marginalia-file-owner {
    
    color: #66657f;
}
.org-marginalia-file-priv-dir {
    
    color: #4244ef;
}
.org-marginalia-file-priv-exec {
    
    color: #00845f;
}
.org-marginalia-file-priv-link {
    
    color: #1f6fbf;
}
.org-marginalia-file-priv-no {
    
    color: #66657f;
}
.org-marginalia-file-priv-other {
    
    color: #c0469a;
}
.org-marginalia-file-priv-rare {
    
    color: #065fff;
}
.org-marginalia-file-priv-read {
    
    color: #232323;
}
.org-marginalia-file-priv-write {
    
    color: #4244ef;
}
.org-marginalia-function {
    
    color: #00845f;
}
.org-marginalia-installed {
    
    color: #008a00;
}
.org-marginalia-lighter {
    
    color: #66657f;
}
.org-marginalia-list {
    
    color: #065fff;
}
.org-marginalia-mode {
    
    color: #065fff;
}
.org-marginalia-modified {
    
    color: #996c4f;
}
.org-marginalia-null {
    
    color: #66657f;
}
.org-marginalia-number {
    
    color: #065fff;
}
.org-marginalia-off {
    
    color: #c42d2f;
}
.org-marginalia-on {
    
    color: #008a00;
}
.org-marginalia-size {
    
    color: #3a6dd2;
}
.org-marginalia-string {
    
    color: #4244ef;
}
.org-marginalia-symbol {
    
    color: #1f6fbf;
}
.org-marginalia-true {
}
.org-marginalia-type {
    
    color: #7f5ae0;
}
.org-marginalia-value {
    
    color: #66657f;
}
.org-marginalia-version {
    
    color: #007a85;
}
.org-markdown-blockquote {
    
    color: #605f9f;
}
.org-markdown-bold {
    
    font-weight: bold;
}
.org-markdown-code {
    
    background-color: #eaefef;
}
.org-markdown-comment {
    
    color: #7a5f2f;
}
.org-markdown-footnote-marker {
    
    color: #66657f;
}
.org-markdown-footnote-text {
    
    color: #7a5f2f;
}
.org-markdown-gfm-checkbox {
    
    color: #996c4f;
}
.org-markdown-header {
}
.org-markdown-header-delimiter {
    
    color: #66657f;
}
.org-markdown-header-face-1 {
    
    color: #004fc0;
    font-weight: bold;
}
.org-markdown-header-face-2 {
    
    color: #00845f;
    font-weight: bold;
}
.org-markdown-header-face-3 {
    
    color: #7f5ae0;
    font-weight: bold;
}
.org-markdown-header-face-4 {
    
    color: #1f6fbf;
    font-weight: bold;
}
.org-markdown-header-face-5 {
    
    color: #4244ef;
    font-weight: bold;
}
.org-markdown-header-face-6 {
    
    color: #468400;
    font-weight: bold;
}
.org-markdown-header-rule {
    
    color: #66657f;
}
.org-markdown-highlight {
    
    color: #232323;
    background-color: #eab5ff;
}
.org-markdown-highlighting {
    
    color: #232323;
    background-color: #aae0bf;
}
.org-markdown-hr {
    
    color: #66657f;
}
.org-markdown-html-attr-name {
    
    color: #3a6dd2;
}
.org-markdown-html-attr-value {
    
    color: #4244ef;
}
.org-markdown-html-entity {
    
    color: #3a6dd2;
}
.org-markdown-html-tag-delimiter {
    
    color: #66657f;
}
.org-markdown-html-tag-name {
    
    color: #7f5ae0;
}
.org-markdown-inline-code {
    
    color: #007a85;
}
.org-markdown-italic {
    
    font-style: italic;
}
.org-markdown-language-info {
    
    color: #4244ef;
}
.org-markdown-language-keyword {
    
    color: #66657f;
    background-color: #eaefef;
}
.org-markdown-line-break {
    
    color: #c42d2f;
    text-decoration: underline;
}
.org-markdown-link {
    
    color: #1f6fbf;
    text-decoration: underline;
}
.org-markdown-link-title {
    
    color: #7a5f2f;
}
.org-markdown-list {
    
    color: #66657f;
}
.org-markdown-markup {
    
    color: #66657f;
}
.org-markdown-math {
    
    color: #4244ef;
}
.org-markdown-metadata-key {
}
.org-markdown-metadata-value {
    
    color: #4244ef;
}
.org-markdown-missing-link {
    
    color: #996c4f;
}
.org-markdown-plain-url {
    
    color: #1f6fbf;
    text-decoration: underline;
}
.org-markdown-pre {
    
    background-color: #eaefef;
}
.org-markdown-reference {
    
    color: #66657f;
}
.org-markdown-strike-through {
    
    text-decoration: line-through;
}
.org-markdown-table {
    
    color: #204f9a;
}
.org-markdown-url {
    
    color: #204f9a;
}
.org-match {
    
    color: #232323;
    background-color: #ffe9bf;
}
.org-menu {
    
    color: #232323;
    background-color: #b5b8b8;
}
.org-message-cited-text-1 {
    
    color: #004fc0;
}
.org-message-cited-text-2 {
    
    color: #007a85;
}
.org-message-cited-text-3 {
    
    color: #996c4f;
}
.org-message-cited-text-4 {
    
    color: #7f5ae0;
}
.org-message-header-cc {
    
    color: #3a6dd2;
}
.org-message-header-name {
}
.org-message-header-newsgroups {
    
    color: #1f6fbf;
}
.org-message-header-other {
    
    color: #1f6fbf;
}
.org-message-header-subject {
    
    color: #065fff;
}
.org-message-header-to {
    
    color: #3a6dd2;
}
.org-message-header-xheader {
    
    color: #1f6fbf;
}
.org-message-mml {
    
    color: #1f6fbf;
}
.org-message-separator {
    
    color: #232323;
    background-color: #f7f9f9;
}
.org-message-signature-separator {
    
    font-weight: bold;
}
.org-mh-folder-address {
    
    color: #00008b;
}
.org-mh-folder-allowlisted {
    
    color: #b8860b;
}
.org-mh-folder-blocklisted {
    
    color: #8b8989;
}
.org-mh-folder-body {
    
    color: #8b8989;
}
.org-mh-folder-cur-msg-number {
    
    color: #8b8989;
    font-weight: bold;
}
.org-mh-folder-date {
    
    color: #8b8989;
}
.org-mh-folder-deleted {
    
    color: #8b8989;
}
.org-mh-folder-followup {
    
    color: #0000cd;
}
.org-mh-folder-msg-number {
    
    color: #8b8989;
}
.org-mh-folder-refiled {
    
    color: #b8860b;
}
.org-mh-folder-sent-to-me-hint {
    
    color: #8b8989;
}
.org-mh-folder-sent-to-me-sender {
    
    color: #0000cd;
}
.org-mh-folder-subject {
    
    color: #00008b;
}
.org-mh-folder-tick {
    
    background-color: #dddf7e;
}
.org-mh-folder-to {
    
    color: #bc8f8f;
}
.org-mh-letter-header-field {
    
    background-color: #e5e5e5;
}
.org-mh-search-folder {
    
    color: #006400;
    font-weight: bold;
}
.org-mh-show-cc {
    
    color: #b8860b;
}
.org-mh-show-date {
    
    color: #228b22;
}
.org-mh-show-from {
    
    color: #cd0000;
}
.org-mh-show-header {
    
    color: #bc8f8f;
}
.org-mh-show-pgg-bad {
    
    color: #ff1493;
    font-weight: bold;
}
.org-mh-show-pgg-good {
    
    color: #32cd32;
    font-weight: bold;
}
.org-mh-show-pgg-unknown {
    
    color: #eead0e;
    font-weight: bold;
}
.org-mh-show-signature {
    
    font-style: italic;
}
.org-mh-show-subject {
    
    color: #00008b;
}
.org-mh-show-to {
    
    color: #8b4513;
}
.org-mh-speedbar-folder {
    
    color: #00008b;
}
.org-mh-speedbar-folder-with-unseen-messages {
    
    color: #00008b;
    font-weight: bold;
}
.org-mh-speedbar-selected-folder {
    
    color: #ff0000;
    text-decoration: underline;
}
.org-mh-speedbar-selected-folder-with-unseen-messages {
    
    color: #ff0000;
    font-weight: bold;
    text-decoration: underline;
}
.org-minibuffer-prompt {
    
    color: #1f6fbf;
}
.org-misc-punctuation {
    
    color: #232323;
}
.org-mm-command-output {
    
    color: #1f6fbf;
}
.org-mm-uu-extract {
    
    color: #1f6fbf;
}
.org-mode-line {
    
    color: #051524;
    background-color: #9ad0ff;
}
.org-mode-line-active {
    
    color: #051524;
    background-color: #9ad0ff;
}
.org-mode-line-buffer-id {
    
    font-weight: bold;
}
.org-mode-line-emphasis {
    
    color: #002580;
    font-style: italic;
}
.org-mode-line-highlight {
    
    color: #232323;
    background-color: #eab5ff;
}
.org-mode-line-inactive {
    
    color: #66657f;
    background-color: #d7dbdb;
}
.org-modus-themes-bold {
}
.org-modus-themes-button {
    
    color: #232323;
    background-color: #b5b8b8;
}
.org-modus-themes-completion-match-0 {
    
    color: #4244ef;
    font-weight: bold;
}
.org-modus-themes-completion-match-1 {
    
    color: #00845f;
    font-weight: bold;
}
.org-modus-themes-completion-match-2 {
    
    color: #c0469a;
    font-weight: bold;
}
.org-modus-themes-completion-match-3 {
    
    color: #065fff;
    font-weight: bold;
}
.org-modus-themes-completion-selected {
    
    background-color: #cceff5;
    font-weight: bold;
}
.org-modus-themes-fixed-pitch {
}
.org-modus-themes-heading-0 {
    
    color: #007a85;
    font-weight: bold;
}
.org-modus-themes-heading-1 {
    
    color: #004fc0;
    font-weight: bold;
}
.org-modus-themes-heading-2 {
    
    color: #00845f;
    font-weight: bold;
}
.org-modus-themes-heading-3 {
    
    color: #7f5ae0;
    font-weight: bold;
}
.org-modus-themes-heading-4 {
    
    color: #1f6fbf;
    font-weight: bold;
}
.org-modus-themes-heading-5 {
    
    color: #4244ef;
    font-weight: bold;
}
.org-modus-themes-heading-6 {
    
    color: #468400;
    font-weight: bold;
}
.org-modus-themes-heading-7 {
    
    color: #aa44c5;
    font-weight: bold;
}
.org-modus-themes-heading-8 {
    
    color: #3a6dd2;
    font-weight: bold;
}
.org-modus-themes-prompt {
    
    color: #1f6fbf;
}
.org-modus-themes-reset-soft {
    
    color: #232323;
    background-color: #fcffff;
}
.org-modus-themes-slant {
}
.org-modus-themes-ui-variable-pitch {
}
.org-mouse {
}
.org-mouse-drag-and-drop-region {
    
    background-color: #d4eaf3;
}
.org-negation-char {
    
    color: #c42d2f;
}
.org-next-error {
    
    color: #c42d2f;
    background-color: #ffdfda;
}
.org-next-error-message {
    
    color: #232323;
    background-color: #eab5ff;
}
.org-nobreak-hyphen {
    
    color: #c42d2f;
}
.org-nobreak-space {
    
    color: #c42d2f;
    text-decoration: underline;
}
.org-number {
    
    color: #232323;
}
.org-olivetti-fringe {
}
.org-operator {
    
    color: #232323;
}
.org-org-agenda-calendar-daterange {
    
    color: #204f9a;
}
.org-org-agenda-calendar-event {
    
    color: #204f9a;
}
.org-org-agenda-calendar-sexp {
    
    color: #204f9a;
}
.org-org-agenda-clocking {
    
    color: #996c4f;
    background-color: #ffe9bf;
}
.org-org-agenda-column-dateline {
    
    background-color: #f7f9f9;
}
.org-org-agenda-current-time {
    
    color: #232323;
}
.org-org-agenda-date {
    
    color: #1f6fbf;
    font-weight: bold;
}
.org-org-agenda-date-today {
    
    color: #1f6fbf;
    font-weight: bold;
    text-decoration: underline;
}
.org-org-agenda-date-weekend {
    
    color: #9a4366;
    font-weight: bold;
}
.org-org-agenda-date-weekend-today {
    
    color: #9a4366;
    font-weight: bold;
    text-decoration: underline;
}
.org-org-agenda-diary {
    
    color: #204f9a;
}
.org-org-agenda-dimmed-todo {
    
    color: #66657f;
}
.org-org-agenda-done {
    
    color: #008a00;
}
.org-org-agenda-filter-category {
    
    color: #7f0000;
}
.org-org-agenda-filter-effort {
    
    color: #7f0000;
}
.org-org-agenda-filter-regexp {
    
    color: #7f0000;
}
.org-org-agenda-filter-tags {
    
    color: #7f0000;
}
.org-org-agenda-restriction-lock {
    
    color: #66657f;
    background-color: #eaefef;
}
.org-org-agenda-structure {
    
    color: #204f9a;
    font-weight: bold;
}
.org-org-agenda-structure-filter {
    
    color: #996c4f;
    font-weight: bold;
}
.org-org-agenda-structure-secondary {
    
    color: #605f9f;
}
.org-org-archived {
    
    color: #232323;
    background-color: #f7f9f9;
}
.org-org-block {
    
    background-color: #eaefef;
}
.org-org-block-begin-line {
    
    color: #66657f;
    background-color: #eaefef;
}
.org-org-block-end-line {
    
    color: #66657f;
    background-color: #eaefef;
}
.org-org-checkbox {
    
    color: #996c4f;
}
.org-org-checkbox-statistics-done {
    
    color: #008a00;
}
.org-org-checkbox-statistics-todo {
    
    color: #c42d2f;
}
.org-org-cite {
    
    color: #1f6fbf;
    text-decoration: underline;
}
.org-org-cite-key {
    
    color: #1f6fbf;
    text-decoration: underline;
}
.org-org-clock-overlay {
    
    color: #232323;
    background-color: #aae0bf;
}
.org-org-code {
    
    color: #007a85;
}
.org-org-column {
    
    color: #232323;
    background-color: #eaefef;
}
.org-org-date {
    
    color: #007a85;
}
.org-org-date-selected {
    
    color: #007a85;
}
.org-org-default {
    
    color: #232323;
    background-color: #fcffff;
}
.org-org-dispatcher-highlight {
    
    color: #008a00;
    background-color: #ccefcf;
    font-weight: bold;
}
.org-org-document-info {
    
    color: #204f9a;
}
.org-org-document-info-keyword {
    
    color: #66657f;
}
.org-org-document-title {
    
    color: #007a85;
    font-weight: bold;
}
.org-org-done {
    
    color: #008a00;
}
.org-org-drawer {
    
    color: #66657f;
}
.org-org-ellipsis {
}
.org-org-footnote {
    
    color: #1f6fbf;
    text-decoration: underline;
}
.org-org-formula {
    
    color: #996c4f;
}
.org-org-habit-alert {
    
    background-color: #ffcf00;
}
.org-org-habit-alert-future {
    
    background-color: #f9ff00;
}
.org-org-habit-clear {
    
    background-color: #7f90ff;
}
.org-org-habit-clear-future {
    
    background-color: #a6c0ff;
}
.org-org-habit-overdue {
    
    background-color: #ef7969;
}
.org-org-habit-overdue-future {
    
    background-color: #ffaab4;
}
.org-org-habit-ready {
    
    background-color: #45c050;
}
.org-org-habit-ready-future {
    
    background-color: #75ef30;
}
.org-org-headline-done {
    
    color: #008a00;
}
.org-org-headline-todo {
    
    color: #c42d2f;
}
.org-org-hide {
    
    color: #fcffff;
}
.org-org-imminent-deadline {
    
    color: #c42d2f;
}
.org-org-indent {
    
    color: #fcffff;
}
.org-org-inline-src-block {
    
    background-color: #eaefef;
}
.org-org-latex-and-related {
    
    color: #7f5ae0;
}
.org-org-level-1 {
    
    color: #004fc0;
    font-weight: bold;
}
.org-org-level-2 {
    
    color: #00845f;
    font-weight: bold;
}
.org-org-level-3 {
    
    color: #7f5ae0;
    font-weight: bold;
}
.org-org-level-4 {
    
    color: #1f6fbf;
    font-weight: bold;
}
.org-org-level-5 {
    
    color: #4244ef;
    font-weight: bold;
}
.org-org-level-6 {
    
    color: #468400;
    font-weight: bold;
}
.org-org-level-7 {
    
    color: #aa44c5;
    font-weight: bold;
}
.org-org-level-8 {
    
    color: #3a6dd2;
    font-weight: bold;
}
.org-org-link {
    
    color: #1f6fbf;
    text-decoration: underline;
}
.org-org-list-dt {
    
    color: #204f9a;
}
.org-org-macro {
    
    color: #7f5ae0;
}
.org-org-meta-line {
    
    color: #66657f;
}
.org-org-mode-line-clock {
}
.org-org-mode-line-clock-overrun {
    
    color: #7f0000;
}
.org-org-priority {
    
    color: #7a5f2f;
}
.org-org-property-value {
    
    color: #204f9a;
}
.org-org-quote {
    
    background-color: #eaefef;
}
.org-org-scheduled {
    
    color: #7a5f2f;
}
.org-org-scheduled-today {
    
    color: #996c4f;
}
.org-org-sexp-date {
    
    color: #007a85;
}
.org-org-special-keyword {
    
    color: #66657f;
}
.org-org-table {
    
    color: #204f9a;
}
.org-org-table-row {
    
    color: #204f9a;
}
.org-org-tag {
    
    color: #7a5f2f;
}
.org-org-tag-group {
    
    color: #7a5f2f;
}
.org-org-target {
    
    text-decoration: underline;
}
.org-org-time-grid {
    
    color: #66657f;
}
.org-org-todo {
    
    color: #c42d2f;
}
.org-org-upcoming-deadline {
    
    color: #9a4366;
}
.org-org-upcoming-distant-deadline {
    
    color: #232323;
}
.org-org-verbatim {
    
    color: #c0469a;
}
.org-org-verse {
    
    background-color: #eaefef;
}
.org-org-warning {
    
    color: #996c4f;
}
.org-outline-1 {
    
    color: #004fc0;
    font-weight: bold;
}
.org-outline-2 {
    
    color: #00845f;
    font-weight: bold;
}
.org-outline-3 {
    
    color: #7f5ae0;
    font-weight: bold;
}
.org-outline-4 {
    
    color: #1f6fbf;
    font-weight: bold;
}
.org-outline-5 {
    
    color: #4244ef;
    font-weight: bold;
}
.org-outline-6 {
    
    color: #468400;
    font-weight: bold;
}
.org-outline-7 {
    
    color: #aa44c5;
    font-weight: bold;
}
.org-outline-8 {
    
    color: #3a6dd2;
    font-weight: bold;
}
.org-preprocessor {
    
    color: #aa44c5;
}
.org-property-name {
    
    color: #1f6fbf;
}
.org-property-use {
    
    color: #1f6fbf;
}
.org-pulse-highlight {
    
    background-color: #1640b0;
}
.org-pulse-highlight-start {
    
    background-color: #cbcfff;
}
.org-punctuation {
    
    color: #232323;
}
.org-query-replace {
    
    color: #232323;
    background-color: #ff8f88;
}
.org-rainbow-delimiters-base {
    
    color: #232323;
}
.org-rainbow-delimiters-base-error {
    
    color: #c42d2f;
    background-color: #ffdfda;
}
.org-rainbow-delimiters-depth-1 {
    
    color: #007a85;
}
.org-rainbow-delimiters-depth-2 {
    
    color: #004fc0;
}
.org-rainbow-delimiters-depth-3 {
    
    color: #00845f;
}
.org-rainbow-delimiters-depth-4 {
    
    color: #7f5ae0;
}
.org-rainbow-delimiters-depth-5 {
    
    color: #1f6fbf;
}
.org-rainbow-delimiters-depth-6 {
    
    color: #4244ef;
}
.org-rainbow-delimiters-depth-7 {
    
    color: #468400;
}
.org-rainbow-delimiters-depth-8 {
    
    color: #aa44c5;
}
.org-rainbow-delimiters-depth-9 {
    
    color: #3a6dd2;
}
.org-rainbow-delimiters-mismatched {
    
    color: #996c4f;
    background-color: #ffe9bf;
}
.org-rainbow-delimiters-unmatched {
    
    color: #c42d2f;
    background-color: #ffdfda;
}
.org-read-multiple-choice {
    
    color: #008a00;
    background-color: #ccefcf;
    font-weight: bold;
}
.org-rectangle-preview {
    
    color: #232323;
    background-color: #b5b8b8;
}
.org-regexp {
    
    color: #4244ef;
}
.org-regexp-grouping-backslash {
    
    color: #aa44c5;
}
.org-regexp-grouping-construct {
    
    color: #cf2f4f;
}
.org-region {
    
    background-color: #d4eaf3;
}
.org-rmail-header-name {
    
    font-weight: bold;
}
.org-rmail-highlight {
    
    color: #1f6fbf;
    font-weight: bold;
}
.org-scroll-bar {
    
    color: #b0b7c0;
}
.org-secondary-selection {
    
    color: #232323;
    background-color: #aae0bf;
}
.org-separator-line {
    
    text-decoration: underline;
}
.org-sgml-namespace {
    
    color: #1f6fbf;
}
.org-sh-escaped-newline {
    
    color: #4244ef;
}
.org-sh-heredoc {
    
    color: #4244ef;
}
.org-sh-quoted-exec {
    
    color: #1f6fbf;
}
.org-shadow {
    
    color: #66657f;
}
.org-shell-highlight-undef-alias {
    
    color: #3a6dd2;
}
.org-shell-highlight-undef-defined {
    
    color: #00845f;
}
.org-shell-highlight-undef-undefined {
    
    color: #996c4f;
}
.org-shortdoc-heading {
    
    color: #004fc0;
    font-weight: bold;
}
.org-shortdoc-section {
}
.org-show-paren-match {
    
    color: #232323;
    background-color: #cab0ef;
}
.org-show-paren-match-expression {
    
    background-color: #efd3f5;
}
.org-show-paren-mismatch {
    
    color: #c42d2f;
    background-color: #ffdfda;
}
.org-shr-abbreviation {
    
    text-decoration: underline;
}
.org-shr-code {
    
    color: #c0469a;
}
.org-shr-h1 {
    
    color: #004fc0;
    font-weight: bold;
}
.org-shr-h2 {
    
    color: #00845f;
    font-weight: bold;
}
.org-shr-h3 {
    
    color: #7f5ae0;
    font-weight: bold;
}
.org-shr-h4 {
    
    color: #1f6fbf;
    font-weight: bold;
}
.org-shr-h5 {
    
    color: #4244ef;
    font-weight: bold;
}
.org-shr-h6 {
    
    color: #468400;
    font-weight: bold;
}
.org-shr-link {
    
    color: #1f6fbf;
    text-decoration: underline;
}
.org-shr-mark {
    
    color: #232323;
    background-color: #ffe9bf;
}
.org-shr-selected-link {
    
    color: #008a00;
    background-color: #ccefcf;
    font-weight: bold;
}
.org-shr-sliced-image {
}
.org-shr-strike-through {
    
    text-decoration: line-through;
}
.org-shr-sup {
    
    font-size: 80%;
}
.org-shr-text {
    
    font-size: 110%;
}
.org-string {
    
    color: #4244ef;
}
.org-success {
    
    color: #008a00;
}
.org-tab-bar {
    
    background-color: #d7dbdb;
}
.org-tab-bar-tab {
    
    background-color: #fcffff;
}
.org-tab-bar-tab-group-current {
    
    color: #204f9a;
    background-color: #fcffff;
}
.org-tab-bar-tab-group-inactive {
    
    color: #204f9a;
    background-color: #d7dbdb;
}
.org-tab-bar-tab-highlight {
    
    color: #232323;
    background-color: #eab5ff;
}
.org-tab-bar-tab-inactive {
    
    background-color: #b5b8b8;
}
.org-tab-bar-tab-ungrouped {
    
    background-color: #b5b8b8;
}
.org-tab-line {
    
    background-color: #d7dbdb;
    font-size: 95%;
}
.org-table-cell {
    
    background-color: #eaefef;
}
.org-tabulated-list-fake-header {
    
    font-weight: bold;
    text-decoration: underline;
    text-decoration: overline;
}
.org-texinfo-heading {
    
    color: #00845f;
}
.org-textsec-suspicious {
}
.org-trailing-whitespace {
    
    background-color: #fac200;
}
.org-treesit-explorer-anonymous-node {
    
    color: #66657f;
}
.org-treesit-explorer-field-name {
}
.org-tty-menu-disabled {
    
    color: #66657f;
    background-color: #f7f9f9;
}
.org-tty-menu-enabled {
    
    color: #232323;
    background-color: #f7f9f9;
    font-weight: bold;
}
.org-tty-menu-selected {
    
    color: #232323;
    background-color: #cbcfff;
}
.org-tutorial-warning {
    
    color: #996c4f;
}
.org-type {
    
    color: #7f5ae0;
}
.org-underline {
    
    text-decoration: underline;
}
.org-variable-name {
    
    color: #3a6dd2;
}
.org-variable-pitch {
}
.org-variable-pitch-text {
    
    font-size: 110%;
}
.org-variable-use {
    
    color: #305f9f;
}
.org-warning {
    
    color: #996c4f;
}
.org-warning-1 {
    
    color: #996c4f;
}





Future plans

These are the future plans:

  • [X] Rewrite the style sheet
  • [ ] Make the index "interesting"
  • [ ] Tag based searching
  • [X] Show tags on each page
  • [X] RSS feeds
emailreplace [at] with @, and put the domain for username, and vice versa: sdf.org [at] tusharhero

© tusharhero 2024-2026, check licenses page for details.

Date: 2025-04-25 Fri 00:00

Emacs 31.0.50 (Org mode 9.7.11)