diff --git a/README.md b/README.md index 7cdd6d2..9c3754a 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,256 @@ -# sserver -Simple minimal server for hosting static content +Self hosted netlify clone to serve your static content. **sserver** is simple headless server that can be used to host your static content. +It provides https including certificate renewals, synchronizes content from github repository all in a single binary. +Upcoming features include access control and stripe integration so you can use your favorite static site generator for your site/blog as well as selling your courses. + + +# Table of Contents + +1. [Features](#org1ce4ac5) +2. [Usage](#org6f278e6) + 1. [github repository without configuration file](#org6b55533) + 2. [Folder in github repository without config file](#org663f0de) + 3. [Branch of github repository repository without config file (like gh-pages)](#org07dec39) + 4. [github repository with domain name without config file](#orgebccff0) + 5. [github repository with configuration file](#orgaf9d415) +3. [Operational details](#org1055ae6) + 1. [Description of files created by **sserver**](#org5e9e5c6) + 2. [Configuration](#org218f464) + 3. [Default Values in absence of configuration file](#org4a08ff1) +4. [FAQ](#orgc19a98d) + 1. [Is this opensource?](#org0276cf2) + 2. [Why was this created?](#orga8c149c) + 3. [What are the supported OS?](#org93dc109) + 4. [Where can i request feature? suggestions for improvement?](#org7058acf) + 5. [I provided serverpath in config file and left rest of the values blank why is it not working?](#org433f03a) + 6. [I have found that i can register and login users should i use them?](#orgc0ce8fb) + 7. [What does it costs?](#org6e21814) +5. [TODO](#orgbf446af) + + + + +# Features + +- [X] Serve static site +- [X] Auto https support via letsencrypt +- [X] Sync site from github repository +- [ ] Add api to register new users +- [ ] Add api to authenticate users +- [ ] Add support for specifying course details +- [ ] Add api to authorize users to download course content +- [ ] Add admin api +- [ ] Add stripe integration for buying course + + + + +# Usage + +Here are some examples of how it can be used + + + + +## github repository without configuration file + + ./sserver -token "" -repo "https://github.com/newbeelearn/sserver.git" + +Repository should have index.html in its root directory. If hugo/jekyll etc. like static site generator is used, repository should contain generated site.(It would have index.html in root by default) + + + + +## Folder in github repository without config file + + ./sserver -token "" -repo "https://github.com/newbeelearn/sserver.git?folder=public" + +Repository should have index.html in folder from where you want to serve the content, typically it is public if hugo/jekyll etc. static site generators are used + + + + +## Branch of github repository repository without config file (like gh-pages) + + ./sserver -token "" -repo "https://github.com/newbeelearn/sserver.git?ref=gh-pages" + +Branch should have index.html in its root directory. If hugo/jekyll etc. like static site generator is used, branch should contain generated site.(It would have index.html in root by default) + + + + +## github repository with domain name without config file + + ./sserver -token "" -repo "https://github.com/newbeelearn/sserver.git?domain=example.com" + +Repository should have index.html in its root directory +Access to the domain from which site is served +**sserver** should have permissions to bind to 443 port, this can be done with following command + + sudo setcap 'cap_net_bind_service=+ep' sserver + + + + +## github repository with configuration file + + ./sserver -token "" -repo "https://github.com/newbeelearn/sserver.git?folder=configs" + +Repository should contain ssconfig.toml configuration file in its root directory +Sample ssconfig.toml can be found below + + #specify the site + [site] + #for local sites that + root = "" + #port where you want to serve the site + port = "1313" + #sqlite db file for users/auth permissions and course pricing + db = "users.db" + #github repository details of the form github.com/owner/repo/ref/folder + service = ["github.com", "newbeelearn", "sserver", "gh-pages", ""] + #domain of the site + domain = "example.com" + #period to check for new content + syncinterval = "@every 12h" + #path where all the sserver files will be created + serverpath = "wwwss" + + + + +# Operational details + + + + +## Description of files created by **sserver** + +**sserver** creates "wwwss" directory from where it is run unless something else is provided in ssconfig.toml + + drwxrwxr-x 2 test test 4096 Nov 30 17:04 a + drwxrwxr-x 8 test test 4096 Nov 30 17:04 b + drwxrwxr-x 2 test test 4096 Nov 30 17:04 certs + drwxrwxr-x 2 test test 4096 Nov 30 17:04 logs + -rw-rw-r-- 1 test test 527483 Nov 30 17:04 tmp.zip + -rw-rw-r-- 1 test test 49152 Nov 30 17:05 users.db + +- If https is used key and certificates can be found in certs +- Server access logs are inside logs folder +- Database of users/permissions and course details are in sqlite file with ending ".db"(users.db in this example) +- tmp.zip is temporary site downloaded from github and is overwritten on every sync +- a/b folders is from where site is served. Actual folder keeps on alternating between the two. + + + + +## Configuration + +Note when ssconfig.toml is provided all parameters must be specified as all default values are set to "" . + +Sample ssconfig.toml file + + #specify the site + [site] + #for local sites that + root = "" + #port where you want to serve the site + port = "1313" + #sqlite db file for users/auth permissions and course pricing + db = "users.db" + #github repository details of the form github.com/owner/repo/ref/folder + service = ["github.com", "newbeelearn", "sserver", "gh-pages", ""] + #domain of the site + domain = "example.com" + #period to check for new content + syncinterval = "@every 12h" + #path where all the sserver files will be created + serverpath = "wwwss" + + + + +## Default Values in absence of configuration file + +Here are the default values when ssconfig.toml is not provided. + + root = "" + port = "1313" + db = "users.db" + # 12 hours + syncinterval = "@every 12h" + serverpath = "wwwss" + + + + +# FAQ + + + + +## Is this opensource? + +No, only binaries are released and site is used for discussions around the product. + + + + +## Why was this created? + +This was created because of the need to host courses + +1. Without giving up control by using online saas services for hosting course. +2. Avoid using complicated opensource solutions that require constant maintenance. +3. Use same site generated by static site generators for landing page/blog and protected course content. +4. Something simple to avoid maintenance overhead. + + + + +## What are the supported OS? + +linux and macos are supported out of the box. Windows users can use WSL however it is not tested. + + + + +## Where can i request feature? suggestions for improvement? + +Create issue and tag it with feature + + + + +## I provided serverpath in config file and left rest of the values blank why is it not working? + +In case ssconfig.toml is provided, please provide all the fields. Default values are used only when ssconfig.toml +is not provided + + + + +## I have found that i can register and login users should i use them? + +It is in pre alpha stage and i am gathering requirements from users so there are no compatibility guarantees. +You can give it a try however i would suggest to wait for sometime before using these features in production. +Let us know what feature you are interested in discussions + + + + +## What does it costs? + +This is not yet decided as of now it is free to use. +Paid product if available will use separate channel. +so if you are downloading from github release it is free forever. +Help us in deciding it, tell us what you would pay for it in discussion board. + + + + +# TODO + +- [ ] Add sample scripts for running in aws/gcp/azure/alibabacloud etc. +- [ ] Add sample site to demonstrate server functionality +- [ ] Add performance data + diff --git a/configs/ssconfig.toml b/configs/ssconfig.toml new file mode 100644 index 0000000..9da0946 --- /dev/null +++ b/configs/ssconfig.toml @@ -0,0 +1,8 @@ +[site] +root = "" +port = "1313" +db = "users.db" +service = ["github.com", "newbeelearn", "sserver", "gh-pages", ""] +domain = "" +syncinterval = "@every 12h" +serverpath = "wwwss" diff --git a/index.html b/index.html new file mode 100644 index 0000000..61d7248 --- /dev/null +++ b/index.html @@ -0,0 +1,360 @@ + + + + + + + +Simple server for static content + + + + + + + +
+

Simple server for static content

+

+Self hosted netlify clone to serve your static content. sserver is simple headless server that can be used to host your static content. +It provides https including certificate renewals, synchronizes content from github repository all in a single binary. +Upcoming features include access control and stripe integration so you can use your favorite static site generator for your site/blog as well as selling your courses. +

+ + +
+

1 Features

+
+
    +
  • [X] Serve static site
  • +
  • [X] Auto https support via letsencrypt
  • +
  • [X] Sync site from github repository
  • +
  • [ ] Add api to register new users
  • +
  • [ ] Add api to authenticate users
  • +
  • [ ] Add support for specifying course details
  • +
  • [ ] Add api to authorize users to download course content
  • +
  • [ ] Add admin api
  • +
  • [ ] Add stripe integration for buying course
  • +
+
+
+
+

2 Usage

+
+

+Here are some examples of how it can be used +

+
+
+

2.1 github repository without configuration file

+
+
+./sserver -token "<github_token>" -repo "https://github.com/newbeelearn/sserver.git"  
+
+ +

+Repository should have index.html in its root directory. If hugo/jekyll etc. like static site generator is used, repository should contain generated site.(It would have index.html in root by default) +

+
+
+
+

2.2 Folder in github repository without config file

+
+
+./sserver -token "<github_token>" -repo "https://github.com/newbeelearn/sserver.git?folder=public"  
+
+ +

+Repository should have index.html in folder from where you want to serve the content, typically it is public if hugo/jekyll etc. static site generators are used +

+
+
+
+

2.3 Branch of github repository repository without config file (like gh-pages)

+
+
+./sserver -token "<github_token>" -repo "https://github.com/newbeelearn/sserver.git?ref=gh-pages"  
+
+ +

+Branch should have index.html in its root directory. If hugo/jekyll etc. like static site generator is used, branch should contain generated site.(It would have index.html in root by default) +

+
+
+
+

2.4 github repository with domain name without config file

+
+
+
./sserver -token "<github_token>" -repo "https://github.com/newbeelearn/sserver.git?domain=example.com"  
+
+
+ +

+Repository should have index.html in its root directory +Access to the domain from which site is served +sserver should have permissions to bind to 443 port, this can be done with following command +

+
+sudo setcap 'cap_net_bind_service=+ep' sserver  
+
+
+
+ +
+

2.5 github repository with configuration file

+
+
+
./sserver -token "<github_token>" -repo "https://github.com/newbeelearn/sserver.git?folder=configs"
+
+
+

+Repository should contain ssconfig.toml configuration file in its root directory +Sample ssconfig.toml can be found below +

+
+#specify the site
+[site]
+#for local sites that
+root = ""
+#port where you want to serve the site
+port = "1313"
+#sqlite db file for users/auth permissions and course pricing
+db = "users.db"
+#github repository details of the form github.com/owner/repo/ref/folder
+service = ["github.com", "newbeelearn", "sserver", "gh-pages", ""]
+#domain of the site
+domain = "example.com"
+#period to check for new content
+syncinterval = "@every 12h"
+#path where all the sserver files will be created
+serverpath = "wwwss"  
+
+
+
+
+ +
+

3 Operational details

+
+
+
+

3.1 Description of files created by sserver

+
+

+sserver creates "wwwss" directory from where it is run unless something else is provided in ssconfig.toml +

+
+
drwxrwxr-x 2 test test   4096 Nov 30 17:04 a
+drwxrwxr-x 8 test test   4096 Nov 30 17:04 b
+drwxrwxr-x 2 test test   4096 Nov 30 17:04 certs
+drwxrwxr-x 2 test test   4096 Nov 30 17:04 logs
+-rw-rw-r-- 1 test test 527483 Nov 30 17:04 tmp.zip
+-rw-rw-r-- 1 test test  49152 Nov 30 17:05 users.db
+
+
+
    +
  • If https is used key and certificates can be found in certs
  • +
  • Server access logs are inside logs folder
  • +
  • Database of users/permissions and course details are in sqlite file with ending ".db"(users.db in this example)
  • +
  • tmp.zip is temporary site downloaded from github and is overwritten on every sync
  • +
  • a/b folders is from where site is served. Actual folder keeps on alternating between the two.
  • +
+
+
+
+

3.2 Configuration

+
+

+Note when ssconfig.toml is provided all parameters must be specified as all default values are set to "" . +

+ +

+Sample ssconfig.toml file +

+
+#specify the site
+[site]
+#for local sites that
+root = ""
+#port where you want to serve the site
+port = "1313"
+#sqlite db file for users/auth permissions and course pricing
+db = "users.db"
+#github repository details of the form github.com/owner/repo/ref/folder
+service = ["github.com", "newbeelearn", "sserver", "gh-pages", ""]
+#domain of the site
+domain = "example.com"
+#period to check for new content
+syncinterval = "@every 12h"
+#path where all the sserver files will be created
+serverpath = "wwwss"  
+
+
+
+
+

3.3 Default Values in absence of configuration file

+
+

+Here are the default values when ssconfig.toml is not provided. +

+
+root = ""
+port = "1313"
+db = "users.db"
+# 12 hours
+syncinterval = "@every 12h"
+serverpath = "wwwss"
+
+
+
+
+ +
+

4 FAQ

+
+
+
+

4.1 Is this opensource?

+
+

+No, only binaries are released and site is used for discussions around the product. +

+
+
+
+

4.2 Why was this created?

+
+

+This was created because of the need to host courses +

+
    +
  1. Without giving up control by using online saas services for hosting course.
  2. +
  3. Avoid using complicated opensource solutions that require constant maintenance.
  4. +
  5. Use same site generated by static site generators for landing page/blog and protected course content.
  6. +
  7. Something simple to avoid maintenance overhead.
  8. +
+
+
+
+

4.3 What are the supported OS?

+
+

+linux and macos are supported out of the box. Windows users can use WSL however it is not tested. +

+
+
+
+

4.4 Where can i request feature? suggestions for improvement?

+
+

+Create issue and tag it with feature +

+
+
+
+

4.5 I provided serverpath in config file and left rest of the values blank why is it not working?

+
+

+In case ssconfig.toml is provided, please provide all the fields. Default values are used only when ssconfig.toml +is not provided +

+
+
+
+

4.6 I have found that i can register and login users should i use them?

+
+

+It is in pre alpha stage and i am gathering requirements from users so there are no compatibility guarantees. +You can give it a try however i would suggest to wait for sometime before using these features in production. +Let us know what feature you are interested in discussions +

+
+
+
+

4.7 What does it costs?

+
+

+This is not yet decided as of now it is free to use. +Paid product if available will use separate channel. +so if you are downloading from github release it is free forever. +Help us in deciding it, tell us what you would pay for it in discussion board. +

+
+
+
+
+

5 TODO

+
+
    +
  • [ ] Add sample scripts for running in aws/gcp/azure/alibabacloud etc.
  • +
  • [ ] Add sample site to demonstrate server functionality
  • +
  • [ ] Add performance data
  • +
+
+
+
+
+

Author: John

+

Created: 2021-12-07 Tue 20:44

+

Validate

+
+ + diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..61d7248 --- /dev/null +++ b/public/index.html @@ -0,0 +1,360 @@ + + + + + + + +Simple server for static content + + + + + + + +
+

Simple server for static content

+

+Self hosted netlify clone to serve your static content. sserver is simple headless server that can be used to host your static content. +It provides https including certificate renewals, synchronizes content from github repository all in a single binary. +Upcoming features include access control and stripe integration so you can use your favorite static site generator for your site/blog as well as selling your courses. +

+ + +
+

1 Features

+
+
    +
  • [X] Serve static site
  • +
  • [X] Auto https support via letsencrypt
  • +
  • [X] Sync site from github repository
  • +
  • [ ] Add api to register new users
  • +
  • [ ] Add api to authenticate users
  • +
  • [ ] Add support for specifying course details
  • +
  • [ ] Add api to authorize users to download course content
  • +
  • [ ] Add admin api
  • +
  • [ ] Add stripe integration for buying course
  • +
+
+
+
+

2 Usage

+
+

+Here are some examples of how it can be used +

+
+
+

2.1 github repository without configuration file

+
+
+./sserver -token "<github_token>" -repo "https://github.com/newbeelearn/sserver.git"  
+
+ +

+Repository should have index.html in its root directory. If hugo/jekyll etc. like static site generator is used, repository should contain generated site.(It would have index.html in root by default) +

+
+
+
+

2.2 Folder in github repository without config file

+
+
+./sserver -token "<github_token>" -repo "https://github.com/newbeelearn/sserver.git?folder=public"  
+
+ +

+Repository should have index.html in folder from where you want to serve the content, typically it is public if hugo/jekyll etc. static site generators are used +

+
+
+
+

2.3 Branch of github repository repository without config file (like gh-pages)

+
+
+./sserver -token "<github_token>" -repo "https://github.com/newbeelearn/sserver.git?ref=gh-pages"  
+
+ +

+Branch should have index.html in its root directory. If hugo/jekyll etc. like static site generator is used, branch should contain generated site.(It would have index.html in root by default) +

+
+
+
+

2.4 github repository with domain name without config file

+
+
+
./sserver -token "<github_token>" -repo "https://github.com/newbeelearn/sserver.git?domain=example.com"  
+
+
+ +

+Repository should have index.html in its root directory +Access to the domain from which site is served +sserver should have permissions to bind to 443 port, this can be done with following command +

+
+sudo setcap 'cap_net_bind_service=+ep' sserver  
+
+
+
+ +
+

2.5 github repository with configuration file

+
+
+
./sserver -token "<github_token>" -repo "https://github.com/newbeelearn/sserver.git?folder=configs"
+
+
+

+Repository should contain ssconfig.toml configuration file in its root directory +Sample ssconfig.toml can be found below +

+
+#specify the site
+[site]
+#for local sites that
+root = ""
+#port where you want to serve the site
+port = "1313"
+#sqlite db file for users/auth permissions and course pricing
+db = "users.db"
+#github repository details of the form github.com/owner/repo/ref/folder
+service = ["github.com", "newbeelearn", "sserver", "gh-pages", ""]
+#domain of the site
+domain = "example.com"
+#period to check for new content
+syncinterval = "@every 12h"
+#path where all the sserver files will be created
+serverpath = "wwwss"  
+
+
+
+
+ +
+

3 Operational details

+
+
+
+

3.1 Description of files created by sserver

+
+

+sserver creates "wwwss" directory from where it is run unless something else is provided in ssconfig.toml +

+
+
drwxrwxr-x 2 test test   4096 Nov 30 17:04 a
+drwxrwxr-x 8 test test   4096 Nov 30 17:04 b
+drwxrwxr-x 2 test test   4096 Nov 30 17:04 certs
+drwxrwxr-x 2 test test   4096 Nov 30 17:04 logs
+-rw-rw-r-- 1 test test 527483 Nov 30 17:04 tmp.zip
+-rw-rw-r-- 1 test test  49152 Nov 30 17:05 users.db
+
+
+
    +
  • If https is used key and certificates can be found in certs
  • +
  • Server access logs are inside logs folder
  • +
  • Database of users/permissions and course details are in sqlite file with ending ".db"(users.db in this example)
  • +
  • tmp.zip is temporary site downloaded from github and is overwritten on every sync
  • +
  • a/b folders is from where site is served. Actual folder keeps on alternating between the two.
  • +
+
+
+
+

3.2 Configuration

+
+

+Note when ssconfig.toml is provided all parameters must be specified as all default values are set to "" . +

+ +

+Sample ssconfig.toml file +

+
+#specify the site
+[site]
+#for local sites that
+root = ""
+#port where you want to serve the site
+port = "1313"
+#sqlite db file for users/auth permissions and course pricing
+db = "users.db"
+#github repository details of the form github.com/owner/repo/ref/folder
+service = ["github.com", "newbeelearn", "sserver", "gh-pages", ""]
+#domain of the site
+domain = "example.com"
+#period to check for new content
+syncinterval = "@every 12h"
+#path where all the sserver files will be created
+serverpath = "wwwss"  
+
+
+
+
+

3.3 Default Values in absence of configuration file

+
+

+Here are the default values when ssconfig.toml is not provided. +

+
+root = ""
+port = "1313"
+db = "users.db"
+# 12 hours
+syncinterval = "@every 12h"
+serverpath = "wwwss"
+
+
+
+
+ +
+

4 FAQ

+
+
+
+

4.1 Is this opensource?

+
+

+No, only binaries are released and site is used for discussions around the product. +

+
+
+
+

4.2 Why was this created?

+
+

+This was created because of the need to host courses +

+
    +
  1. Without giving up control by using online saas services for hosting course.
  2. +
  3. Avoid using complicated opensource solutions that require constant maintenance.
  4. +
  5. Use same site generated by static site generators for landing page/blog and protected course content.
  6. +
  7. Something simple to avoid maintenance overhead.
  8. +
+
+
+
+

4.3 What are the supported OS?

+
+

+linux and macos are supported out of the box. Windows users can use WSL however it is not tested. +

+
+
+
+

4.4 Where can i request feature? suggestions for improvement?

+
+

+Create issue and tag it with feature +

+
+
+
+

4.5 I provided serverpath in config file and left rest of the values blank why is it not working?

+
+

+In case ssconfig.toml is provided, please provide all the fields. Default values are used only when ssconfig.toml +is not provided +

+
+
+
+

4.6 I have found that i can register and login users should i use them?

+
+

+It is in pre alpha stage and i am gathering requirements from users so there are no compatibility guarantees. +You can give it a try however i would suggest to wait for sometime before using these features in production. +Let us know what feature you are interested in discussions +

+
+
+
+

4.7 What does it costs?

+
+

+This is not yet decided as of now it is free to use. +Paid product if available will use separate channel. +so if you are downloading from github release it is free forever. +Help us in deciding it, tell us what you would pay for it in discussion board. +

+
+
+
+
+

5 TODO

+
+
    +
  • [ ] Add sample scripts for running in aws/gcp/azure/alibabacloud etc.
  • +
  • [ ] Add sample site to demonstrate server functionality
  • +
  • [ ] Add performance data
  • +
+
+
+
+
+

Author: John

+

Created: 2021-12-07 Tue 20:44

+

Validate

+
+ + diff --git a/public/worg.css b/public/worg.css new file mode 100644 index 0000000..c257289 --- /dev/null +++ b/public/worg.css @@ -0,0 +1,976 @@ +/* latin */ +@font-face { + font-family: 'Droid Sans'; + font-style: normal; + font-weight: 400; + src: url(fonts/SlGVmQWMvZQIdix7AFxXkHNSbQ.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: 'Droid Sans Mono'; + font-style: normal; + font-weight: 400; + src: url(fonts/6NUO8FuJNQ2MbkrZ5-J8lKFrp7pRef2r.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: 'Droid Serif'; + font-style: normal; + font-weight: 400; + src: url(fonts/tDbI2oqRg1oM3QBjjcaDkOr9rAU.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; +} + +@media all +{ + html { + margin: 0; + background-image: url(/worg/images/orgmode/org-mode-unicorn-original-logo.png); + background-attachment: fixed; + background-position: right bottom; + background-repeat: no-repeat; + background-color: white; + } + + body { + color: black; + margin-top: 0; + line-height: 1.4rem; + + } + body #content { + padding-top: 2em; + margin: auto; + max-width: 48em; + background-color: white; + } + + body #support { + position: fixed; + top:0; + display:block; + font-size: 10pt; + right:0pt; + text-align: right; + padding: .2em 1em; + background: #EEE; + border-radius: 10px; + } + + body .title { + margin-left: 0px; + font-size: 22pt; + } + + #org-div-home-and-up{ + position: fixed; + right: 0.5em; + margin-top: 70px; + font-family:sans-serif; + } + + /* TOC inspired by http://jashkenas.github.com/coffee-script */ + #table-of-contents { + margin-top: 105px; + font-size: 10pt; + font-family:sans-serif; + position: fixed; + right: 0em; + top: 0em; + background: white; + line-height: 12pt; + text-align: right; + box-shadow: 0 0 1em #777777; + -webkit-box-shadow: 0 0 1em #777777; + -moz-box-shadow: 0 0 1em #777777; + -webkit-border-bottom-left-radius: 5px; + -moz-border-radius-bottomleft: 5px; + /* ensure doesn't flow off the screen when expanded */ + max-height: 80%; + overflow: auto; } + #table-of-contents h2 { + font-size: 13pt; + max-width: 9em; + border: 0; + font-weight: normal; + margin-top: 0.75em; + padding-left: 0.5em; + padding-right: 0.5em; + padding-top: 0.05em; + padding-bottom: 0.05em; } + #table-of-contents #text-table-of-contents { + display: none; + text-align: left; } + #table-of-contents:hover #text-table-of-contents { + display: block; + padding: 0.5em; + margin-top: -1.5em; } + + #license { + background-color: #eeeeee; + padding-top: 2px 0; + border-radius: 5px; + } + + .footpara:first-of-type { + display:inline; + } + + h1 { + margin-bottom: 1.5em; + margin-right: 7%; + } + + h2 { + color: #587e72; + border-bottom: 1px solid #ddd; + margin-top: 1.5em; + padding-bottom: 8px; + } + + .outline-text-2 { + margin-left: 0.1em + } + + h3 { + color: #587e72; + margin-left: 0.6em; + } + + /* #A34D32;*/ + + .outline-text-3 { + margin-left: 0.9em; + } + + h4 { + color: #587e72; + margin-left: 1.2em; + } + + .outline-text-4 { + margin-left: 1.45em; + } + + a { + color: black; + font-weight: 400; + text-decoration: underline #587e72; + } + a:visited { + font-weight: 400; + text-decoration: purple; + } + a:hover { + color: #587e72; + } + + .todo { + color: #CA0000; + } + + .done { + color: #006666; + } + + .timestamp-kwd { + color: #444; + } + + .tag { + + } + + li { + margin: .4em; + } + + dt { + margin: .4rem 0 .4rem 0; + } + + table { + border: 0; + } + + thead { + border: 0; + } + + tbody { + border: 0; + } + + tr { + border: 0; + } + + td { + border-left: 0px; + border-right: 0px; + border-top: 0px; + border-bottom: 0px; + } + + th { + border-left: 0px; + border-right: 0px; + border-top: 1px solid grey; + border-bottom: 1px solid grey; + } + + code { + font-size: 0.9rem; + color: black; + padding: 0px 0.2em; + } + + img { + border: 0; + } + + .share img { + opacity: .4; + -moz-opacity: .4; + filter: alpha(opacity=40); + } + + .share img:hover { + opacity: 1; + -moz-opacity: 1; + filter: alpha(opacity=100); + } + + pre { + font-family: Droid Sans Mono, Monaco, Consolas, "Lucida Console", monospace; + color: black; + font-size: 90%; + padding: 0.5em; + overflow: auto; + border: none; + background-color: #f2f2f2; + border-radius: 5px; + } + + .org-info-box { + clear:both; + margin-left:auto; + margin-right:auto; + padding:0.7em; + } + .org-info-box img { + float:left; + margin:0em 0.5em 0em 0em; + } + .org-info-box p { + margin:0em; + padding:0em; + } + + + .builtin { + /* font-lock-builtin-face */ + color: #f4a460; + } + .comment { + /* font-lock-comment-face */ + color: #737373; + } + .comment-delimiter { + /* font-lock-comment-delimiter-face */ + color: #666666; + } + .constant { + /* font-lock-constant-face */ + color: #db7093; + } + .doc { + /* font-lock-doc-face */ + color: #b3b3b3; + } + .function-name { + /* font-lock-function-name-face */ + color: #5f9ea0; + } + .headline { + /* headline-face */ + color: #ffffff; + background-color: #000000; + font-weight: bold; + } + .keyword { + /* font-lock-keyword-face */ + color: #4682b4; + } + .negation-char { + } + .regexp-grouping-backslash { + } + .regexp-grouping-construct { + } + .string { + /* font-lock-string-face */ + color: #ccc79a; + } + .todo-comment { + /* todo-comment-face */ + color: #ffffff; + background-color: #000000; + font-weight: bold; + } + .variable-name { + /* font-lock-variable-name-face */ + color: #ff6a6a; + } + .warning { + /* font-lock-warning-face */ + color: #ffffff; + background-color: #cd5c5c; + font-weight: bold; + } + pre.a { + color: inherit; + background-color: inherit; + font: inherit; + text-decoration: inherit; + } + pre.a:hover { + text-decoration: underline; + } + + /* Styles for org-info.js */ + + .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-info-js-window + { + border-bottom:1px solid black; + padding-bottom:10px; + margin-bottom:10px; + } + + .org-info-search-highlight + { + background-color:#adefef; /* same color as emacs default */ + color:#000000; + font-weight:bold; + } + + .org-bbdb-company { + /* bbdb-company */ + font-style: italic; + } + .org-bbdb-field-name { + } + .org-bbdb-field-value { + } + .org-bbdb-name { + /* bbdb-name */ + text-decoration: underline; + } + .org-bold { + /* bold */ + font-weight: bold; + } + .org-bold-italic { + /* bold-italic */ + font-weight: bold; + font-style: italic; + } + .org-border { + /* border */ + background-color: #000000; + } + .org-buffer-menu-buffer { + /* buffer-menu-buffer */ + font-weight: bold; + } + .org-builtin { + /* font-lock-builtin-face */ + color: #da70d6; + } + .org-button { + /* button */ + text-decoration: underline; + } + .org-c-nonbreakable-space { + /* c-nonbreakable-space-face */ + background-color: #ff0000; + font-weight: bold; + } + .org-calendar-today { + /* calendar-today */ + text-decoration: underline; + } + .org-comment { + /* font-lock-comment-face */ + color: #b22222; + } + .org-comment-delimiter { + /* font-lock-comment-delimiter-face */ + color: #b22222; + } + .org-constant { + /* font-lock-constant-face */ + color: #5f9ea0; + } + .org-cursor { + /* cursor */ + background-color: #000000; + } + .org-default { + /* default */ + color: #000000; + background-color: #ffffff; + } + .org-diary { + /* diary */ + color: #ff0000; + } + .org-doc { + /* font-lock-doc-face */ + color: #bc8f8f; + } + .org-escape-glyph { + /* escape-glyph */ + color: #a52a2a; + } + .org-file-name-shadow { + /* file-name-shadow */ + color: #7f7f7f; + } + .org-fixed-pitch { + } + .org-fringe { + /* fringe */ + background-color: #f2f2f2; + } + .org-function-name { + /* font-lock-function-name-face */ + color: #0000ff; + } + .org-header-line { + /* header-line */ + color: #333333; + background-color: #e5e5e5; + } + .org-help-argument-name { + /* help-argument-name */ + font-style: italic; + } + .org-highlight { + /* highlight */ + background-color: #b4eeb4; + } + .org-holiday { + /* holiday */ + background-color: #ffc0cb; + } + .org-info-header-node { + /* info-header-node */ + color: #a52a2a; + font-weight: bold; + font-style: italic; + } + .org-info-header-xref { + /* info-header-xref */ + color: #0000ff; + text-decoration: underline; + } + .org-info-menu-header { + /* info-menu-header */ + font-weight: bold; + } + .org-info-menu-star { + /* info-menu-star */ + color: #ff0000; + } + .org-info-node { + /* info-node */ + color: #a52a2a; + font-weight: bold; + font-style: italic; + } + .org-info-title-1 { + /* info-title-1 */ + font-size: 172%; + font-weight: bold; + } + .org-info-title-2 { + /* info-title-2 */ + font-size: 144%; + font-weight: bold; + } + .org-info-title-3 { + /* info-title-3 */ + font-size: 120%; + font-weight: bold; + } + .org-info-title-4 { + /* info-title-4 */ + font-weight: bold; + } + .org-info-xref { + /* info-xref */ + color: #0000ff; + text-decoration: underline; + } + .org-isearch { + /* isearch */ + color: #b0e2ff; + background-color: #cd00cd; + } + .org-italic { + /* italic */ + font-style: italic; + } + .org-keyword { + /* font-lock-keyword-face */ + color: #a020f0; + } + .org-lazy-highlight { + /* lazy-highlight */ + background-color: #afeeee; + } + .org-link { + /* link */ + color: #0000ff; + text-decoration: underline; + } + .org-link-visited { + /* link-visited */ + color: #8b008b; + text-decoration: underline; + } + .org-match { + /* match */ + background-color: #ffff00; + } + .org-menu { + } + .org-message-cited-text { + /* message-cited-text */ + color: #ff0000; + } + .org-message-header-cc { + /* message-header-cc */ + color: #191970; + } + .org-message-header-name { + /* message-header-name */ + color: #6495ed; + } + .org-message-header-newsgroups { + /* message-header-newsgroups */ + color: #00008b; + font-weight: bold; + font-style: italic; + } + .org-message-header-other { + /* message-header-other */ + color: #4682b4; + } + .org-message-header-subject { + /* message-header-subject */ + color: #000080; + font-weight: bold; + } + .org-message-header-to { + /* message-header-to */ + color: #191970; + font-weight: bold; + } + .org-message-header-xheader { + /* message-header-xheader */ + color: #0000ff; + } + .org-message-mml { + /* message-mml */ + color: #228b22; + } + .org-message-separator { + /* message-separator */ + color: #a52a2a; + } + .org-minibuffer-prompt { + /* minibuffer-prompt */ + color: #0000cd; + } + .org-mm-uu-extract { + /* mm-uu-extract */ + color: #006400; + background-color: #ffffe0; + } + .org-mode-line { + /* mode-line */ + color: #000000; + background-color: #bfbfbf; + } + .org-mode-line-buffer-id { + /* mode-line-buffer-id */ + font-weight: bold; + } + .org-mode-line-highlight { + } + .org-mode-line-inactive { + /* mode-line-inactive */ + color: #333333; + background-color: #e5e5e5; + } + .org-mouse { + /* mouse */ + background-color: #000000; + } + .org-negation-char { + } + .org-next-error { + /* next-error */ + background-color: #eedc82; + } + .org-nobreak-space { + /* nobreak-space */ + color: #a52a2a; + text-decoration: underline; + } + .org-org-agenda-date { + /* org-agenda-date */ + color: #0000ff; + } + .org-org-agenda-date-weekend { + /* org-agenda-date-weekend */ + color: #0000ff; + font-weight: bold; + } + .org-org-agenda-restriction-lock { + /* org-agenda-restriction-lock */ + background-color: #ffff00; + } + .org-org-agenda-structure { + /* org-agenda-structure */ + color: #0000ff; + } + .org-org-archived { + /* org-archived */ + color: #7f7f7f; + } + .org-org-code { + /* org-code */ + color: #7f7f7f; + } + .org-org-column { + /* org-column */ + background-color: #e5e5e5; + } + .org-org-column-title { + /* org-column-title */ + background-color: #e5e5e5; + font-weight: bold; + text-decoration: underline; + } + .org-org-date { + /* org-date */ + color: #a020f0; + text-decoration: underline; + } + .org-org-done { + /* org-done */ + color: #228b22; + font-weight: bold; + } + .org-org-drawer { + /* org-drawer */ + color: #0000ff; + } + .org-org-ellipsis { + /* org-ellipsis */ + color: #b8860b; + text-decoration: underline; + } + .org-org-formula { + /* org-formula */ + color: #b22222; + } + .org-org-headline-done { + /* org-headline-done */ + color: #bc8f8f; + } + .org-org-hide { + /* org-hide */ + color: #e5e5e5; + } + .org-org-latex-and-export-specials { + /* org-latex-and-export-specials */ + color: #8b4513; + } + .org-org-level-1 { + /* org-level-1 */ + color: #0000ff; + } + .org-org-level-2 { + /* org-level-2 */ + color: #b8860b; + } + .org-org-level-3 { + /* org-level-3 */ + color: #a020f0; + } + .org-org-level-4 { + /* org-level-4 */ + color: #b22222; + } + .org-org-level-5 { + /* org-level-5 */ + color: #228b22; + } + .org-org-level-6 { + /* org-level-6 */ + color: #5f9ea0; + } + .org-org-level-7 { + /* org-level-7 */ + color: #da70d6; + } + .org-org-level-8 { + /* org-level-8 */ + color: #bc8f8f; + } + .org-org-link { + /* org-link */ + color: #a020f0; + text-decoration: underline; + } + .org-org-property-value { + } + .org-org-scheduled-previously { + /* org-scheduled-previously */ + color: #b22222; + } + .org-org-scheduled-today { + /* org-scheduled-today */ + color: #006400; + } + .org-org-sexp-date { + /* org-sexp-date */ + color: #a020f0; + } + .org-org-special-keyword { + /* org-special-keyword */ + color: #bc8f8f; + } + .org-org-table { + /* org-table */ + color: #0000ff; + } + .org-org-tag { + /* org-tag */ + font-weight: bold; + } + .org-org-target { + /* org-target */ + text-decoration: underline; + } + .org-org-time-grid { + /* org-time-grid */ + color: #b8860b; + } + .org-org-todo { + /* org-todo */ + color: #ff0000; + } + .org-org-upcoming-deadline { + /* org-upcoming-deadline */ + color: #b22222; + } + .org-org-verbatim { + /* org-verbatim */ + color: #7f7f7f; + text-decoration: underline; + } + .org-org-warning { + /* org-warning */ + color: #ff0000; + font-weight: bold; + } + .org-outline-1 { + /* outline-1 */ + color: #0000ff; + } + .org-outline-2 { + /* outline-2 */ + color: #b8860b; + } + .org-outline-3 { + /* outline-3 */ + color: #a020f0; + } + .org-outline-4 { + /* outline-4 */ + color: #b22222; + } + .org-outline-5 { + /* outline-5 */ + color: #228b22; + } + .org-outline-6 { + /* outline-6 */ + color: #5f9ea0; + } + .org-outline-7 { + /* outline-7 */ + color: #da70d6; + } + .org-outline-8 { + /* outline-8 */ + color: #bc8f8f; + } + .outline-text-1, .outline-text-2, .outline-text-3, .outline-text-4, .outline-text-5, .outline-text-6 { + /* Add more spacing between section. Padding, so that folding with org-info.js works as expected. */ + + } + + .org-preprocessor { + /* font-lock-preprocessor-face */ + color: #da70d6; + } + .org-query-replace { + /* query-replace */ + color: #b0e2ff; + background-color: #cd00cd; + } + .org-regexp-grouping-backslash { + /* font-lock-regexp-grouping-backslash */ + font-weight: bold; + } + .org-regexp-grouping-construct { + /* font-lock-regexp-grouping-construct */ + font-weight: bold; + } + .org-region { + /* region */ + background-color: #eedc82; + } + .org-rmail-highlight { + } + .org-scroll-bar { + /* scroll-bar */ + background-color: #bfbfbf; + } + .org-secondary-selection { + /* secondary-selection */ + background-color: #ffff00; + } + .org-shadow { + /* shadow */ + color: #7f7f7f; + } + .org-show-paren-match { + /* show-paren-match */ + background-color: #40e0d0; + } + .org-show-paren-mismatch { + /* show-paren-mismatch */ + color: #ffffff; + background-color: #a020f0; + } + .org-string { + /* font-lock-string-face */ + color: #bc8f8f; + } + .org-texinfo-heading { + /* texinfo-heading */ + color: #0000ff; + } + .org-tool-bar { + /* tool-bar */ + color: #000000; + background-color: #bfbfbf; + } + .org-tooltip { + /* tooltip */ + color: #000000; + background-color: #ffffe0; + } + .org-trailing-whitespace { + /* trailing-whitespace */ + background-color: #ff0000; + } + .org-type { + /* font-lock-type-face */ + color: #228b22; + } + .org-underline { + /* underline */ + text-decoration: underline; + } + .org-variable-name { + /* font-lock-variable-name-face */ + color: #b8860b; + } + .org-variable-pitch { + } + .org-vertical-border { + } + .org-warning { + /* font-lock-warning-face */ + color: #ff0000; + font-weight: bold; + } + .rss_box {} + .rss_title, rss_title a {} + .rss_items {} + .rss_item a:link, .rss_item a:visited, .rss_item a:active {} + .rss_item a:hover {} + .rss_date {} + + label.org-src-name { + font-size: 80%; + font-style: italic; + } + + #show_source {margin: 0; padding: 0;} + + #postamble { + font-size: 75%; + min-width: 700px; + max-width: 80%; + line-height: 14pt; + margin-left: 20px; + margin-top: 10px; + padding: .2em; + background-color: #ffffff; + z-index: -1000; + } + + +} /* END OF @media all */ + +@media screen +{ + #table-of-contents { + position: fixed; + margin-top: 105px; + float: right; + border: 1px solid #red; + max-width: 50%; + overflow: auto; + } +} /* END OF @media screen */ diff --git a/worg.css b/worg.css new file mode 100644 index 0000000..c257289 --- /dev/null +++ b/worg.css @@ -0,0 +1,976 @@ +/* latin */ +@font-face { + font-family: 'Droid Sans'; + font-style: normal; + font-weight: 400; + src: url(fonts/SlGVmQWMvZQIdix7AFxXkHNSbQ.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: 'Droid Sans Mono'; + font-style: normal; + font-weight: 400; + src: url(fonts/6NUO8FuJNQ2MbkrZ5-J8lKFrp7pRef2r.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: 'Droid Serif'; + font-style: normal; + font-weight: 400; + src: url(fonts/tDbI2oqRg1oM3QBjjcaDkOr9rAU.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; +} + +@media all +{ + html { + margin: 0; + background-image: url(/worg/images/orgmode/org-mode-unicorn-original-logo.png); + background-attachment: fixed; + background-position: right bottom; + background-repeat: no-repeat; + background-color: white; + } + + body { + color: black; + margin-top: 0; + line-height: 1.4rem; + + } + body #content { + padding-top: 2em; + margin: auto; + max-width: 48em; + background-color: white; + } + + body #support { + position: fixed; + top:0; + display:block; + font-size: 10pt; + right:0pt; + text-align: right; + padding: .2em 1em; + background: #EEE; + border-radius: 10px; + } + + body .title { + margin-left: 0px; + font-size: 22pt; + } + + #org-div-home-and-up{ + position: fixed; + right: 0.5em; + margin-top: 70px; + font-family:sans-serif; + } + + /* TOC inspired by http://jashkenas.github.com/coffee-script */ + #table-of-contents { + margin-top: 105px; + font-size: 10pt; + font-family:sans-serif; + position: fixed; + right: 0em; + top: 0em; + background: white; + line-height: 12pt; + text-align: right; + box-shadow: 0 0 1em #777777; + -webkit-box-shadow: 0 0 1em #777777; + -moz-box-shadow: 0 0 1em #777777; + -webkit-border-bottom-left-radius: 5px; + -moz-border-radius-bottomleft: 5px; + /* ensure doesn't flow off the screen when expanded */ + max-height: 80%; + overflow: auto; } + #table-of-contents h2 { + font-size: 13pt; + max-width: 9em; + border: 0; + font-weight: normal; + margin-top: 0.75em; + padding-left: 0.5em; + padding-right: 0.5em; + padding-top: 0.05em; + padding-bottom: 0.05em; } + #table-of-contents #text-table-of-contents { + display: none; + text-align: left; } + #table-of-contents:hover #text-table-of-contents { + display: block; + padding: 0.5em; + margin-top: -1.5em; } + + #license { + background-color: #eeeeee; + padding-top: 2px 0; + border-radius: 5px; + } + + .footpara:first-of-type { + display:inline; + } + + h1 { + margin-bottom: 1.5em; + margin-right: 7%; + } + + h2 { + color: #587e72; + border-bottom: 1px solid #ddd; + margin-top: 1.5em; + padding-bottom: 8px; + } + + .outline-text-2 { + margin-left: 0.1em + } + + h3 { + color: #587e72; + margin-left: 0.6em; + } + + /* #A34D32;*/ + + .outline-text-3 { + margin-left: 0.9em; + } + + h4 { + color: #587e72; + margin-left: 1.2em; + } + + .outline-text-4 { + margin-left: 1.45em; + } + + a { + color: black; + font-weight: 400; + text-decoration: underline #587e72; + } + a:visited { + font-weight: 400; + text-decoration: purple; + } + a:hover { + color: #587e72; + } + + .todo { + color: #CA0000; + } + + .done { + color: #006666; + } + + .timestamp-kwd { + color: #444; + } + + .tag { + + } + + li { + margin: .4em; + } + + dt { + margin: .4rem 0 .4rem 0; + } + + table { + border: 0; + } + + thead { + border: 0; + } + + tbody { + border: 0; + } + + tr { + border: 0; + } + + td { + border-left: 0px; + border-right: 0px; + border-top: 0px; + border-bottom: 0px; + } + + th { + border-left: 0px; + border-right: 0px; + border-top: 1px solid grey; + border-bottom: 1px solid grey; + } + + code { + font-size: 0.9rem; + color: black; + padding: 0px 0.2em; + } + + img { + border: 0; + } + + .share img { + opacity: .4; + -moz-opacity: .4; + filter: alpha(opacity=40); + } + + .share img:hover { + opacity: 1; + -moz-opacity: 1; + filter: alpha(opacity=100); + } + + pre { + font-family: Droid Sans Mono, Monaco, Consolas, "Lucida Console", monospace; + color: black; + font-size: 90%; + padding: 0.5em; + overflow: auto; + border: none; + background-color: #f2f2f2; + border-radius: 5px; + } + + .org-info-box { + clear:both; + margin-left:auto; + margin-right:auto; + padding:0.7em; + } + .org-info-box img { + float:left; + margin:0em 0.5em 0em 0em; + } + .org-info-box p { + margin:0em; + padding:0em; + } + + + .builtin { + /* font-lock-builtin-face */ + color: #f4a460; + } + .comment { + /* font-lock-comment-face */ + color: #737373; + } + .comment-delimiter { + /* font-lock-comment-delimiter-face */ + color: #666666; + } + .constant { + /* font-lock-constant-face */ + color: #db7093; + } + .doc { + /* font-lock-doc-face */ + color: #b3b3b3; + } + .function-name { + /* font-lock-function-name-face */ + color: #5f9ea0; + } + .headline { + /* headline-face */ + color: #ffffff; + background-color: #000000; + font-weight: bold; + } + .keyword { + /* font-lock-keyword-face */ + color: #4682b4; + } + .negation-char { + } + .regexp-grouping-backslash { + } + .regexp-grouping-construct { + } + .string { + /* font-lock-string-face */ + color: #ccc79a; + } + .todo-comment { + /* todo-comment-face */ + color: #ffffff; + background-color: #000000; + font-weight: bold; + } + .variable-name { + /* font-lock-variable-name-face */ + color: #ff6a6a; + } + .warning { + /* font-lock-warning-face */ + color: #ffffff; + background-color: #cd5c5c; + font-weight: bold; + } + pre.a { + color: inherit; + background-color: inherit; + font: inherit; + text-decoration: inherit; + } + pre.a:hover { + text-decoration: underline; + } + + /* Styles for org-info.js */ + + .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-info-js-window + { + border-bottom:1px solid black; + padding-bottom:10px; + margin-bottom:10px; + } + + .org-info-search-highlight + { + background-color:#adefef; /* same color as emacs default */ + color:#000000; + font-weight:bold; + } + + .org-bbdb-company { + /* bbdb-company */ + font-style: italic; + } + .org-bbdb-field-name { + } + .org-bbdb-field-value { + } + .org-bbdb-name { + /* bbdb-name */ + text-decoration: underline; + } + .org-bold { + /* bold */ + font-weight: bold; + } + .org-bold-italic { + /* bold-italic */ + font-weight: bold; + font-style: italic; + } + .org-border { + /* border */ + background-color: #000000; + } + .org-buffer-menu-buffer { + /* buffer-menu-buffer */ + font-weight: bold; + } + .org-builtin { + /* font-lock-builtin-face */ + color: #da70d6; + } + .org-button { + /* button */ + text-decoration: underline; + } + .org-c-nonbreakable-space { + /* c-nonbreakable-space-face */ + background-color: #ff0000; + font-weight: bold; + } + .org-calendar-today { + /* calendar-today */ + text-decoration: underline; + } + .org-comment { + /* font-lock-comment-face */ + color: #b22222; + } + .org-comment-delimiter { + /* font-lock-comment-delimiter-face */ + color: #b22222; + } + .org-constant { + /* font-lock-constant-face */ + color: #5f9ea0; + } + .org-cursor { + /* cursor */ + background-color: #000000; + } + .org-default { + /* default */ + color: #000000; + background-color: #ffffff; + } + .org-diary { + /* diary */ + color: #ff0000; + } + .org-doc { + /* font-lock-doc-face */ + color: #bc8f8f; + } + .org-escape-glyph { + /* escape-glyph */ + color: #a52a2a; + } + .org-file-name-shadow { + /* file-name-shadow */ + color: #7f7f7f; + } + .org-fixed-pitch { + } + .org-fringe { + /* fringe */ + background-color: #f2f2f2; + } + .org-function-name { + /* font-lock-function-name-face */ + color: #0000ff; + } + .org-header-line { + /* header-line */ + color: #333333; + background-color: #e5e5e5; + } + .org-help-argument-name { + /* help-argument-name */ + font-style: italic; + } + .org-highlight { + /* highlight */ + background-color: #b4eeb4; + } + .org-holiday { + /* holiday */ + background-color: #ffc0cb; + } + .org-info-header-node { + /* info-header-node */ + color: #a52a2a; + font-weight: bold; + font-style: italic; + } + .org-info-header-xref { + /* info-header-xref */ + color: #0000ff; + text-decoration: underline; + } + .org-info-menu-header { + /* info-menu-header */ + font-weight: bold; + } + .org-info-menu-star { + /* info-menu-star */ + color: #ff0000; + } + .org-info-node { + /* info-node */ + color: #a52a2a; + font-weight: bold; + font-style: italic; + } + .org-info-title-1 { + /* info-title-1 */ + font-size: 172%; + font-weight: bold; + } + .org-info-title-2 { + /* info-title-2 */ + font-size: 144%; + font-weight: bold; + } + .org-info-title-3 { + /* info-title-3 */ + font-size: 120%; + font-weight: bold; + } + .org-info-title-4 { + /* info-title-4 */ + font-weight: bold; + } + .org-info-xref { + /* info-xref */ + color: #0000ff; + text-decoration: underline; + } + .org-isearch { + /* isearch */ + color: #b0e2ff; + background-color: #cd00cd; + } + .org-italic { + /* italic */ + font-style: italic; + } + .org-keyword { + /* font-lock-keyword-face */ + color: #a020f0; + } + .org-lazy-highlight { + /* lazy-highlight */ + background-color: #afeeee; + } + .org-link { + /* link */ + color: #0000ff; + text-decoration: underline; + } + .org-link-visited { + /* link-visited */ + color: #8b008b; + text-decoration: underline; + } + .org-match { + /* match */ + background-color: #ffff00; + } + .org-menu { + } + .org-message-cited-text { + /* message-cited-text */ + color: #ff0000; + } + .org-message-header-cc { + /* message-header-cc */ + color: #191970; + } + .org-message-header-name { + /* message-header-name */ + color: #6495ed; + } + .org-message-header-newsgroups { + /* message-header-newsgroups */ + color: #00008b; + font-weight: bold; + font-style: italic; + } + .org-message-header-other { + /* message-header-other */ + color: #4682b4; + } + .org-message-header-subject { + /* message-header-subject */ + color: #000080; + font-weight: bold; + } + .org-message-header-to { + /* message-header-to */ + color: #191970; + font-weight: bold; + } + .org-message-header-xheader { + /* message-header-xheader */ + color: #0000ff; + } + .org-message-mml { + /* message-mml */ + color: #228b22; + } + .org-message-separator { + /* message-separator */ + color: #a52a2a; + } + .org-minibuffer-prompt { + /* minibuffer-prompt */ + color: #0000cd; + } + .org-mm-uu-extract { + /* mm-uu-extract */ + color: #006400; + background-color: #ffffe0; + } + .org-mode-line { + /* mode-line */ + color: #000000; + background-color: #bfbfbf; + } + .org-mode-line-buffer-id { + /* mode-line-buffer-id */ + font-weight: bold; + } + .org-mode-line-highlight { + } + .org-mode-line-inactive { + /* mode-line-inactive */ + color: #333333; + background-color: #e5e5e5; + } + .org-mouse { + /* mouse */ + background-color: #000000; + } + .org-negation-char { + } + .org-next-error { + /* next-error */ + background-color: #eedc82; + } + .org-nobreak-space { + /* nobreak-space */ + color: #a52a2a; + text-decoration: underline; + } + .org-org-agenda-date { + /* org-agenda-date */ + color: #0000ff; + } + .org-org-agenda-date-weekend { + /* org-agenda-date-weekend */ + color: #0000ff; + font-weight: bold; + } + .org-org-agenda-restriction-lock { + /* org-agenda-restriction-lock */ + background-color: #ffff00; + } + .org-org-agenda-structure { + /* org-agenda-structure */ + color: #0000ff; + } + .org-org-archived { + /* org-archived */ + color: #7f7f7f; + } + .org-org-code { + /* org-code */ + color: #7f7f7f; + } + .org-org-column { + /* org-column */ + background-color: #e5e5e5; + } + .org-org-column-title { + /* org-column-title */ + background-color: #e5e5e5; + font-weight: bold; + text-decoration: underline; + } + .org-org-date { + /* org-date */ + color: #a020f0; + text-decoration: underline; + } + .org-org-done { + /* org-done */ + color: #228b22; + font-weight: bold; + } + .org-org-drawer { + /* org-drawer */ + color: #0000ff; + } + .org-org-ellipsis { + /* org-ellipsis */ + color: #b8860b; + text-decoration: underline; + } + .org-org-formula { + /* org-formula */ + color: #b22222; + } + .org-org-headline-done { + /* org-headline-done */ + color: #bc8f8f; + } + .org-org-hide { + /* org-hide */ + color: #e5e5e5; + } + .org-org-latex-and-export-specials { + /* org-latex-and-export-specials */ + color: #8b4513; + } + .org-org-level-1 { + /* org-level-1 */ + color: #0000ff; + } + .org-org-level-2 { + /* org-level-2 */ + color: #b8860b; + } + .org-org-level-3 { + /* org-level-3 */ + color: #a020f0; + } + .org-org-level-4 { + /* org-level-4 */ + color: #b22222; + } + .org-org-level-5 { + /* org-level-5 */ + color: #228b22; + } + .org-org-level-6 { + /* org-level-6 */ + color: #5f9ea0; + } + .org-org-level-7 { + /* org-level-7 */ + color: #da70d6; + } + .org-org-level-8 { + /* org-level-8 */ + color: #bc8f8f; + } + .org-org-link { + /* org-link */ + color: #a020f0; + text-decoration: underline; + } + .org-org-property-value { + } + .org-org-scheduled-previously { + /* org-scheduled-previously */ + color: #b22222; + } + .org-org-scheduled-today { + /* org-scheduled-today */ + color: #006400; + } + .org-org-sexp-date { + /* org-sexp-date */ + color: #a020f0; + } + .org-org-special-keyword { + /* org-special-keyword */ + color: #bc8f8f; + } + .org-org-table { + /* org-table */ + color: #0000ff; + } + .org-org-tag { + /* org-tag */ + font-weight: bold; + } + .org-org-target { + /* org-target */ + text-decoration: underline; + } + .org-org-time-grid { + /* org-time-grid */ + color: #b8860b; + } + .org-org-todo { + /* org-todo */ + color: #ff0000; + } + .org-org-upcoming-deadline { + /* org-upcoming-deadline */ + color: #b22222; + } + .org-org-verbatim { + /* org-verbatim */ + color: #7f7f7f; + text-decoration: underline; + } + .org-org-warning { + /* org-warning */ + color: #ff0000; + font-weight: bold; + } + .org-outline-1 { + /* outline-1 */ + color: #0000ff; + } + .org-outline-2 { + /* outline-2 */ + color: #b8860b; + } + .org-outline-3 { + /* outline-3 */ + color: #a020f0; + } + .org-outline-4 { + /* outline-4 */ + color: #b22222; + } + .org-outline-5 { + /* outline-5 */ + color: #228b22; + } + .org-outline-6 { + /* outline-6 */ + color: #5f9ea0; + } + .org-outline-7 { + /* outline-7 */ + color: #da70d6; + } + .org-outline-8 { + /* outline-8 */ + color: #bc8f8f; + } + .outline-text-1, .outline-text-2, .outline-text-3, .outline-text-4, .outline-text-5, .outline-text-6 { + /* Add more spacing between section. Padding, so that folding with org-info.js works as expected. */ + + } + + .org-preprocessor { + /* font-lock-preprocessor-face */ + color: #da70d6; + } + .org-query-replace { + /* query-replace */ + color: #b0e2ff; + background-color: #cd00cd; + } + .org-regexp-grouping-backslash { + /* font-lock-regexp-grouping-backslash */ + font-weight: bold; + } + .org-regexp-grouping-construct { + /* font-lock-regexp-grouping-construct */ + font-weight: bold; + } + .org-region { + /* region */ + background-color: #eedc82; + } + .org-rmail-highlight { + } + .org-scroll-bar { + /* scroll-bar */ + background-color: #bfbfbf; + } + .org-secondary-selection { + /* secondary-selection */ + background-color: #ffff00; + } + .org-shadow { + /* shadow */ + color: #7f7f7f; + } + .org-show-paren-match { + /* show-paren-match */ + background-color: #40e0d0; + } + .org-show-paren-mismatch { + /* show-paren-mismatch */ + color: #ffffff; + background-color: #a020f0; + } + .org-string { + /* font-lock-string-face */ + color: #bc8f8f; + } + .org-texinfo-heading { + /* texinfo-heading */ + color: #0000ff; + } + .org-tool-bar { + /* tool-bar */ + color: #000000; + background-color: #bfbfbf; + } + .org-tooltip { + /* tooltip */ + color: #000000; + background-color: #ffffe0; + } + .org-trailing-whitespace { + /* trailing-whitespace */ + background-color: #ff0000; + } + .org-type { + /* font-lock-type-face */ + color: #228b22; + } + .org-underline { + /* underline */ + text-decoration: underline; + } + .org-variable-name { + /* font-lock-variable-name-face */ + color: #b8860b; + } + .org-variable-pitch { + } + .org-vertical-border { + } + .org-warning { + /* font-lock-warning-face */ + color: #ff0000; + font-weight: bold; + } + .rss_box {} + .rss_title, rss_title a {} + .rss_items {} + .rss_item a:link, .rss_item a:visited, .rss_item a:active {} + .rss_item a:hover {} + .rss_date {} + + label.org-src-name { + font-size: 80%; + font-style: italic; + } + + #show_source {margin: 0; padding: 0;} + + #postamble { + font-size: 75%; + min-width: 700px; + max-width: 80%; + line-height: 14pt; + margin-left: 20px; + margin-top: 10px; + padding: .2em; + background-color: #ffffff; + z-index: -1000; + } + + +} /* END OF @media all */ + +@media screen +{ + #table-of-contents { + position: fixed; + margin-top: 105px; + float: right; + border: 1px solid #red; + max-width: 50%; + overflow: auto; + } +} /* END OF @media screen */