├── .gitignore ├── LICENSE ├── README.md ├── config.json ├── layouts ├── _default │ ├── baseof.html │ ├── list.html │ └── single.html ├── index.html ├── partials │ ├── footer.html │ ├── head.html │ ├── header.html │ ├── navigation.html │ ├── pagination.html │ ├── post-item.html │ ├── post-list.html │ └── profile.html ├── post │ └── single.html ├── reply │ └── single.html └── section │ └── replies.html ├── plugin.json ├── screenshot └── home.png ├── static └── assets │ └── css │ ├── highlight.css │ ├── normalize.css │ └── style.css └── theme.toml /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | _site/ 3 | .DS_Store 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Cactus Authors - https://github.com/koenbok/Cactus/blob/master/AUTHORS - Released under the MIT License. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # _Neo Cactus_ for Jekyll 2 | 3 | #### Demo: [https://mmarfil.com/](https://mmarfil.com/) 4 | 5 | ## Screenshot 6 | 7 | ![screenshot](screenshot/home.png) 8 | 9 | This Jekyll theme started as a port of [Cactus](https://github.com/eudicots/Cactus) to my own needs, but I ended up performing a lot more modifications than expected. Some people reached me out and asked if I could share it, so here we are. 10 | 11 | #### Disclaimer: I'm only a designer, so please don't expect the code to be pretty. 12 | 13 | ## Usage 14 | To start your project, [fork this respository](https://github.com/mmarfil/neocactus/fork), put in your content, and go! 15 | 16 | -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | { 2 | } -------------------------------------------------------------------------------- /layouts/_default/baseof.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ partial "head.html" . }} 4 | 5 | {{ partial "header.html" . }} 6 |
7 | {{ block "main" . }}{{ end }} 8 |
9 | {{ partial "footer.html" . }} 10 | {{ partial "custom_footer.html" . }} 11 | {{ range .Site.Params.plugins_js }} 12 | 13 | {{ end }} 14 | 15 | 16 | -------------------------------------------------------------------------------- /layouts/_default/list.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | {{ partial "post-list.html" . }} 3 | {{ end }} -------------------------------------------------------------------------------- /layouts/_default/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
3 |
4 |

{{ .Title }}

5 |
6 |
7 | {{ .Content }} 8 |
9 |
10 |
11 | 12 | 13 |
14 | {{ .Site.Author.name }} 15 | @{{ .Site.Author.username }} 16 |
17 | 18 |
19 | {{ end }} -------------------------------------------------------------------------------- /layouts/index.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | 3 | 19 | 20 | {{ if .IsHome }} 21 | {{ if .Site.Params.paginate_home }} 22 | {{ partial "pagination" . }} 23 | {{ end }} 24 | {{ else if .Site.Params.paginate_categories }} 25 | {{ partial "pagination" . }} 26 | {{ end }} 27 | 28 | {{ end }} 29 | -------------------------------------------------------------------------------- /layouts/partials/footer.html: -------------------------------------------------------------------------------- 1 | 21 | -------------------------------------------------------------------------------- /layouts/partials/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | {{- block "title" . -}} 9 | {{- .Site.Title -}} 10 | {{- if and .Title (ne .Title .Site.Title) }} 11 | - {{ .Title }} 12 | {{- end -}} 13 | {{- end -}} 14 | 15 | 16 | 17 | 18 | 19 | {{ partial "microblog_head.html" . }} 20 | 21 | -------------------------------------------------------------------------------- /layouts/partials/header.html: -------------------------------------------------------------------------------- 1 | {{ partial "navigation.html" . }} 2 | {{ if .IsHome }} 3 | {{ partial "profile.html" . }} 4 | {{ end }} 5 | -------------------------------------------------------------------------------- /layouts/partials/navigation.html: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /layouts/partials/pagination.html: -------------------------------------------------------------------------------- 1 | {{ $pag := $.Paginator }} 2 | 3 | 14 | -------------------------------------------------------------------------------- /layouts/partials/post-item.html: -------------------------------------------------------------------------------- 1 |
  • 2 |
    3 | {{ if .Title }} 4 |
    5 |
    6 |

    {{ .Title }}

    7 |
    8 |
    9 | {{ .Content }} 10 |
    11 |
    12 | {{ else }} 13 |
    {{ .Content }}
    14 | {{ end }} 15 | 16 | 19 | 20 |
    21 |
  • 22 | 23 | -------------------------------------------------------------------------------- /layouts/partials/post-list.html: -------------------------------------------------------------------------------- 1 | 17 | 18 | {{ if .IsHome }} 19 | {{ if .Site.Params.paginate_home }} 20 | {{ partial "pagination" . }} 21 | {{ end }} 22 | {{ else if .Site.Params.paginate_categories }} 23 | {{ partial "pagination" . }} 24 | {{ end }} 25 | -------------------------------------------------------------------------------- /layouts/partials/profile.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 | 5 | 6 | 7 |

    {{ .Site.Author.name }}

    8 |

    {{ .Site.Params.description | safeHTML }}

    9 |
    10 |
    11 |
    12 | -------------------------------------------------------------------------------- /layouts/post/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
    3 |
    4 | {{ with .Title }} 5 |

    {{ . }}

    6 | {{ end }} 7 |

    8 | 11 | {{ with .Params.audio }} 12 | 13 | {{ end }} 14 |

    15 |
    16 |
    17 | {{ .Content }} 18 |
    19 | 20 | {{ if .Site.Params.include_conversation }} 21 | 22 | {{ end }} 23 | 24 |
    25 | 26 | {{ if .Params.author }} 27 | 28 |
    29 | {{ .Params.author.name }} 30 | @{{ .Params.author.username }} 31 |
    32 | {{ else }} 33 | 34 |
    35 | {{ .Site.Author.name }} 36 | @{{ .Site.Author.username }} 37 |
    38 | {{ end }} 39 | 40 |
    41 |
    42 | {{ end }} 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /layouts/reply/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
    3 |
    4 | {{ with .Title }} 5 |

    {{ . }}

    6 | {{ end }} 7 |

    8 | 11 |

    12 |
    13 |
    14 | Replying to: {{ .Params.reply_to_username }} 15 | {{ if eq .Params.reply_to_hostname "micro.blog" }} 16 | @{{ .Params.reply_to_username }} 17 | {{ else }} 18 | {{ .Params.reply_to_hostname }} 19 | {{ end }} 20 |
    21 |
    22 | {{ .Content }} 23 |
    24 |
    25 |
    26 | 27 | 28 |
    29 | {{ .Site.Author.name }} 30 | @{{ .Site.Author.username }} 31 |
    32 | 33 |
    34 | {{ end }} 35 | -------------------------------------------------------------------------------- /layouts/section/replies.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | 3 |
    4 |
    5 | 6 | {{ if .Site.Params.paginate_replies }} 7 |
    8 |

    Replies

    9 |
    10 | {{ else }} 11 |
    12 |

    Recent Replies

    13 |
    14 | {{ end }} 15 | 16 |
    17 |
    18 | 19 | 35 | 36 | {{ if .Site.Params.paginate_replies }} 37 | {{ partial "pagination" . }} 38 | {{ end }} 39 | 40 | {{ end }} -------------------------------------------------------------------------------- /plugin.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.1.3", 3 | "title": "Marfa theme", 4 | "description": "Micro.blog's Marfa theme." 5 | } 6 | -------------------------------------------------------------------------------- /screenshot/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microdotblog/theme-marfa/b2ae2f4b684c567b7dcf3be58c4d42f0c97551dc/screenshot/home.png -------------------------------------------------------------------------------- /static/assets/css/highlight.css: -------------------------------------------------------------------------------- 1 | /* 2 | IR_Black style (c) Vasily Mikhailitchenko 3 | */ 4 | 5 | .hljs { 6 | display: block; 7 | overflow-x: auto; 8 | /*padding: 0.5em;*/ 9 | background: #272b2d; 10 | color: #d0d0d0; 11 | -webkit-text-size-adjust: none; 12 | } 13 | 14 | .hljs-shebang, 15 | .hljs-comment { 16 | color: #777279; 17 | } 18 | 19 | .hljs-keyword, 20 | .hljs-tag, 21 | .tex .hljs-command, 22 | .hljs-request, 23 | .hljs-status, 24 | .clojure .hljs-attribute { 25 | color: #ebde68; 26 | } 27 | 28 | .hljs-sub .hljs-keyword, 29 | .method, 30 | .hljs-list .hljs-title, 31 | .nginx .hljs-title { 32 | color: #ffffb6; 33 | } 34 | 35 | .hljs-string, 36 | .hljs-tag .hljs-value, 37 | .hljs-cdata, 38 | .hljs-filter .hljs-argument, 39 | .hljs-attr_selector, 40 | .apache .hljs-cbracket, 41 | .hljs-date, 42 | .coffeescript .hljs-attribute { 43 | color: #c1ef65; 44 | } 45 | 46 | .hljs-subst { 47 | color: #daefa3; 48 | } 49 | 50 | .hljs-regexp { 51 | color: #e9c062; 52 | } 53 | 54 | .hljs-title, 55 | .hljs-sub .hljs-identifier, 56 | .hljs-pi, 57 | .hljs-decorator, 58 | .tex .hljs-special, 59 | .hljs-type, 60 | .hljs-constant, 61 | .smalltalk .hljs-class, 62 | .hljs-doctag, 63 | .nginx .hljs-built_in { 64 | color: #c1ef65; 65 | } 66 | 67 | .hljs-symbol, 68 | .ruby .hljs-symbol .hljs-string, 69 | .hljs-number, 70 | .hljs-variable, 71 | .vbscript, 72 | .hljs-literal, 73 | .hljs-name { 74 | color: #77bcd7; 75 | } 76 | 77 | .css .hljs-tag { 78 | color: #96cbfe; 79 | } 80 | 81 | .css .hljs-rule .hljs-property, 82 | .css .hljs-id { 83 | color: #ffffb6; 84 | } 85 | 86 | .css .hljs-class { 87 | color: #fff; 88 | } 89 | 90 | .hljs-hexcolor { 91 | color: #c6c5fe; 92 | } 93 | 94 | .hljs-number { 95 | color:#77bcd7; 96 | } 97 | 98 | .coffeescript .javascript, 99 | .javascript .xml, 100 | .tex .hljs-formula, 101 | .xml .javascript, 102 | .xml .vbscript, 103 | .xml .css, 104 | .xml .hljs-cdata { 105 | opacity: 0.7; 106 | } 107 | 108 | -------------------------------------------------------------------------------- /static/assets/css/normalize.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v2.0.1 | MIT License | git.io/normalize */ 2 | 3 | /* ========================================================================== 4 | HTML5 display definitions 5 | ========================================================================== */ 6 | 7 | /* 8 | * Corrects `block` display not defined in IE 8/9. 9 | */ 10 | 11 | article, 12 | aside, 13 | details, 14 | figcaption, 15 | figure, 16 | footer, 17 | header, 18 | hgroup, 19 | nav, 20 | section, 21 | summary { 22 | display: block; 23 | } 24 | 25 | /* 26 | * Corrects `inline-block` display not defined in IE 8/9. 27 | */ 28 | 29 | audio, 30 | canvas, 31 | video { 32 | display: inline-block; 33 | } 34 | 35 | /* 36 | * Prevents modern browsers from displaying `audio` without controls. 37 | * Remove excess height in iOS 5 devices. 38 | */ 39 | 40 | audio:not([controls]) { 41 | display: none; 42 | height: 0; 43 | } 44 | 45 | /* 46 | * Addresses styling for `hidden` attribute not present in IE 8/9. 47 | */ 48 | 49 | [hidden] { 50 | display: none; 51 | } 52 | 53 | /* ========================================================================== 54 | Base 55 | ========================================================================== */ 56 | 57 | /* 58 | * 1. Sets default font family to sans-serif. 59 | * 2. Prevents iOS text size adjust after orientation change, without disabling 60 | * user zoom. 61 | */ 62 | 63 | html { 64 | font-family: sans-serif; /* 1 */ 65 | -webkit-text-size-adjust: 100%; /* 2 */ 66 | -ms-text-size-adjust: 100%; /* 2 */ 67 | } 68 | 69 | /* 70 | * Removes default margin. 71 | */ 72 | 73 | body { 74 | margin: 0; 75 | } 76 | 77 | /* ========================================================================== 78 | Links 79 | ========================================================================== */ 80 | 81 | /* 82 | * Addresses `outline` inconsistency between Chrome and other browsers. 83 | */ 84 | 85 | a:focus { 86 | outline: thin dotted; 87 | } 88 | 89 | /* 90 | * Improves readability when focused and also mouse hovered in all browsers. 91 | */ 92 | 93 | a:active, 94 | a:hover { 95 | outline: 0; 96 | } 97 | 98 | /* ========================================================================== 99 | Typography 100 | ========================================================================== */ 101 | 102 | /* 103 | * Addresses `h1` font sizes within `section` and `article` in Firefox 4+, 104 | * Safari 5, and Chrome. 105 | */ 106 | 107 | h1 { 108 | font-size: 2em; 109 | } 110 | 111 | /* 112 | * Addresses styling not present in IE 8/9, Safari 5, and Chrome. 113 | */ 114 | 115 | abbr[title] { 116 | border-bottom: 1px dotted; 117 | } 118 | 119 | /* 120 | * Addresses style set to `bolder` in Firefox 4+, Safari 5, and Chrome. 121 | */ 122 | 123 | b, 124 | strong { 125 | font-weight: bold; 126 | } 127 | 128 | /* 129 | * Addresses styling not present in Safari 5 and Chrome. 130 | */ 131 | 132 | dfn { 133 | font-style: italic; 134 | } 135 | 136 | /* 137 | * Addresses styling not present in IE 8/9. 138 | */ 139 | 140 | mark { 141 | background: #ff0; 142 | color: #000; 143 | } 144 | 145 | 146 | /* 147 | * Corrects font family set oddly in Safari 5 and Chrome. 148 | */ 149 | 150 | code, 151 | kbd, 152 | pre, 153 | samp { 154 | font-family: monospace, serif; 155 | font-size: 1em; 156 | } 157 | 158 | /* 159 | * Improves readability of pre-formatted text in all browsers. 160 | */ 161 | 162 | pre { 163 | white-space: pre; 164 | white-space: pre-wrap; 165 | word-wrap: break-word; 166 | } 167 | 168 | /* 169 | * Sets consistent quote types. 170 | */ 171 | 172 | q { 173 | quotes: "\201C" "\201D" "\2018" "\2019"; 174 | } 175 | 176 | /* 177 | * Addresses inconsistent and variable font size in all browsers. 178 | */ 179 | 180 | small { 181 | font-size: 80%; 182 | } 183 | 184 | /* 185 | * Prevents `sub` and `sup` affecting `line-height` in all browsers. 186 | */ 187 | 188 | sub, 189 | sup { 190 | font-size: 75%; 191 | line-height: 0; 192 | position: relative; 193 | vertical-align: baseline; 194 | } 195 | 196 | sup { 197 | top: -0.5em; 198 | } 199 | 200 | sub { 201 | bottom: -0.25em; 202 | } 203 | 204 | /* ========================================================================== 205 | Embedded content 206 | ========================================================================== */ 207 | 208 | /* 209 | * Removes border when inside `a` element in IE 8/9. 210 | */ 211 | 212 | img { 213 | border: 0; 214 | } 215 | 216 | /* 217 | * Corrects overflow displayed oddly in IE 9. 218 | */ 219 | 220 | svg:not(:root) { 221 | overflow: hidden; 222 | } 223 | 224 | /* ========================================================================== 225 | Figures 226 | ========================================================================== */ 227 | 228 | /* 229 | * Addresses margin not present in IE 8/9 and Safari 5. 230 | */ 231 | 232 | figure { 233 | margin: 0; 234 | } 235 | 236 | /* ========================================================================== 237 | Forms 238 | ========================================================================== */ 239 | 240 | /* 241 | * Define consistent border, margin, and padding. 242 | */ 243 | 244 | fieldset { 245 | border: 1px solid #c0c0c0; 246 | margin: 0 2px; 247 | padding: 0.35em 0.625em 0.75em; 248 | } 249 | 250 | /* 251 | * 1. Corrects color not being inherited in IE 8/9. 252 | * 2. Remove padding so people aren't caught out if they zero out fieldsets. 253 | */ 254 | 255 | legend { 256 | border: 0; /* 1 */ 257 | padding: 0; /* 2 */ 258 | } 259 | 260 | /* 261 | * 1. Corrects font family not being inherited in all browsers. 262 | * 2. Corrects font size not being inherited in all browsers. 263 | * 3. Addresses margins set differently in Firefox 4+, Safari 5, and Chrome 264 | */ 265 | 266 | button, 267 | input, 268 | select, 269 | textarea { 270 | font-family: inherit; /* 1 */ 271 | font-size: 100%; /* 2 */ 272 | margin: 0; /* 3 */ 273 | } 274 | 275 | /* 276 | * Addresses Firefox 4+ setting `line-height` on `input` using `!important` in 277 | * the UA stylesheet. 278 | */ 279 | 280 | button, 281 | input { 282 | line-height: normal; 283 | } 284 | 285 | /* 286 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` 287 | * and `video` controls. 288 | * 2. Corrects inability to style clickable `input` types in iOS. 289 | * 3. Improves usability and consistency of cursor style between image-type 290 | * `input` and others. 291 | */ 292 | 293 | button, 294 | html input[type="button"], /* 1 */ 295 | input[type="reset"], 296 | input[type="submit"] { 297 | -webkit-appearance: button; /* 2 */ 298 | cursor: pointer; /* 3 */ 299 | } 300 | 301 | /* 302 | * Re-set default cursor for disabled elements. 303 | */ 304 | 305 | button[disabled], 306 | input[disabled] { 307 | cursor: default; 308 | } 309 | 310 | /* 311 | * 1. Addresses box sizing set to `content-box` in IE 8/9. 312 | * 2. Removes excess padding in IE 8/9. 313 | */ 314 | 315 | input[type="checkbox"], 316 | input[type="radio"] { 317 | box-sizing: border-box; /* 1 */ 318 | padding: 0; /* 2 */ 319 | } 320 | 321 | /* 322 | * 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome. 323 | * 2. Addresses `box-sizing` set to `border-box` in Safari 5 and Chrome 324 | * (include `-moz` to future-proof). 325 | */ 326 | 327 | input[type="search"] { 328 | -webkit-appearance: textfield; /* 1 */ 329 | -moz-box-sizing: content-box; 330 | -webkit-box-sizing: content-box; /* 2 */ 331 | box-sizing: content-box; 332 | } 333 | 334 | /* 335 | * Removes inner padding and search cancel button in Safari 5 and Chrome 336 | * on OS X. 337 | */ 338 | 339 | input[type="search"]::-webkit-search-cancel-button, 340 | input[type="search"]::-webkit-search-decoration { 341 | -webkit-appearance: none; 342 | } 343 | 344 | /* 345 | * Removes inner padding and border in Firefox 4+. 346 | */ 347 | 348 | button::-moz-focus-inner, 349 | input::-moz-focus-inner { 350 | border: 0; 351 | padding: 0; 352 | } 353 | 354 | /* 355 | * 1. Removes default vertical scrollbar in IE 8/9. 356 | * 2. Improves readability and alignment in all browsers. 357 | */ 358 | 359 | textarea { 360 | overflow: auto; /* 1 */ 361 | vertical-align: top; /* 2 */ 362 | } 363 | 364 | /* ========================================================================== 365 | Tables 366 | ========================================================================== */ 367 | 368 | /* 369 | * Remove most spacing between table cells. 370 | */ 371 | 372 | table { 373 | border-collapse: collapse; 374 | border-spacing: 0; 375 | } -------------------------------------------------------------------------------- /static/assets/css/style.css: -------------------------------------------------------------------------------- 1 | /* Reset */ 2 | html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{border:0;font-size:100%;font:inherit;vertical-align:baseline;margin:0;padding:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:none}table{border-collapse:collapse;border-spacing:0} 3 | *, *:before, *:after { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } 4 | 5 | /* Clearfix */ 6 | .clearfix:after { 7 | content: ""; 8 | display: table; 9 | clear: both; 10 | } 11 | .hidden { 12 | display: none; 13 | } 14 | 15 | /* Spacing */ 16 | .highlight, .post h1, h2, h3, p, .post-body ul, .dates, .post-body li, .bio li, video, pre ::before { 17 | margin-top: 1em; 18 | } 19 | 20 | /* Base */ 21 | html, body { 22 | height: 100%; 23 | } 24 | 25 | body { 26 | font: 17px "Avenir Next", Avenir, "-apple-system", Helvetica, Arial, sans-serif; 27 | color: #666; 28 | text-rendering: optimizeLegibility; 29 | } 30 | 31 | /* Profile */ 32 | 33 | .profile #wrapper { 34 | margin: 0 auto; 35 | text-align: center; 36 | padding: 80px 0; 37 | } 38 | 39 | .profile #avatar { 40 | display: inline-block; 41 | width: 80px; 42 | height: 80px; 43 | margin-bottom: 1em; 44 | border-radius: 40px; 45 | } 46 | 47 | .profile h4 { 48 | color: #aaa; 49 | margin-top: 0; 50 | font-weight: 400; 51 | } 52 | 53 | .bio p:first-child { 54 | margin-top: 0; 55 | } 56 | 57 | .bio li { 58 | list-style-position: outside; 59 | } 60 | 61 | /* Nav */ 62 | 63 | nav.main-nav { 64 | padding: 20px 20px 0; 65 | background: #fff; 66 | background: rgba(255,255,255,.90); 67 | margin: 0 auto; 68 | text-align: right; 69 | z-index: 100; 70 | } 71 | 72 | nav.main-nav a { 73 | top: 8px; 74 | right: 6px; 75 | color: #000; 76 | font-size: 13px; 77 | line-height: 1.35; 78 | font-weight: 500; 79 | margin-left: 12px; 80 | } 81 | nav.main-nav a.cta { 82 | background: #fff; 83 | color: #ee4792; 84 | padding: 6px 14px; 85 | border: 2px solid #fcdae9; 86 | border-bottom: none; 87 | border-radius: 20px; 88 | white-space: nowrap; 89 | } 90 | 91 | nav.main-nav a.cta:hover { 92 | background: #fcdae9; 93 | color: #ee4792; 94 | margin-left: 12px; 95 | } 96 | 97 | #wrapper { 98 | max-width: 600px; 99 | margin: 0 auto; 100 | padding: 25px; 101 | } 102 | 103 | .home #avatar { 104 | float: right; 105 | width: 40px; 106 | height: 40px; 107 | } 108 | 109 | /* Typography */ 110 | 111 | p, li { 112 | line-height: 1.7; 113 | } 114 | 115 | h1, h2, h3 { 116 | color: #000; 117 | } 118 | 119 | h1 { 120 | font-size: 30px; 121 | font-weight: bold; 122 | } 123 | 124 | h2 { 125 | font-size: 25px; 126 | font-weight: 600; 127 | } 128 | 129 | h3 { 130 | font-size: 20px; 131 | font-weight: 500; 132 | } 133 | 134 | p.small { 135 | font-size: 14px; 136 | display: block; 137 | } 138 | 139 | code.highlighter-rouge { 140 | background-color: #F5F5F5; 141 | border-radius: 5px; 142 | display: inline-block; 143 | padding: 5px 8px; 144 | color: #7F7F7F; 145 | font-size: 15px; 146 | line-height: 1.35; 147 | font-style: italic; 148 | } 149 | 150 | /*Accent color*/ 151 | 152 | a { 153 | text-decoration: none; 154 | color: #000; 155 | } 156 | 157 | nav.main-nav a, #footer a, #post-nav a, p a { 158 | color: #000; 159 | font-weight: 500; 160 | box-shadow: inset 0 -2px 0 #fcdae9; 161 | transition: all .35s; 162 | transition-timing-function: cubic-bezier(.7, 0, .3, 1); 163 | } 164 | 165 | nav.main-nav a:hover, #footer a:hover, #post-nav a:hover, p a:hover { 166 | box-shadow: inset 0 -25px 0 #fcdae9; 167 | } 168 | 169 | 170 | ul { margin:0; padding:0; } 171 | li { list-style-type:circle; list-style-position:inside;} 172 | 173 | /* Post */ 174 | 175 | .post-body li:last-child { 176 | margin-bottom: 1.5em; 177 | } 178 | 179 | article ol li { 180 | list-style-type: decimal; 181 | padding-left: 20px; 182 | } 183 | 184 | article ul li { 185 | list-style-type: disc; 186 | padding-left: 20px; 187 | } 188 | 189 | .post-body ol li { 190 | list-style-type: decimal !important; 191 | } 192 | 193 | .post-body ul li { 194 | list-style-type: disc !important; 195 | } 196 | 197 | article img { 198 | padding: 20px 0px 20px 0px; 199 | } 200 | 201 | b, strong { 202 | font-weight: 500; 203 | color: #1E2025; 204 | } 205 | em, i { 206 | font-style: italic; 207 | } 208 | 209 | sup { 210 | vertical-align: super; 211 | font-size: smaller; 212 | } 213 | 214 | .post header { 215 | text-align:center; 216 | } 217 | 218 | blockquote { 219 | padding-left: 15px; 220 | border-left: 2px solid #eee; 221 | opacity: 0.8; 222 | font-style: italic; 223 | margin-top: 15px; 224 | } 225 | 226 | hr { 227 | display: block; 228 | border: none; 229 | height: 2px; 230 | margin: 34px 0 40px 0; 231 | background: #eee; 232 | width: 30%; 233 | text-align: center; 234 | } 235 | 236 | span.separator { 237 | display: block; 238 | margin: 42px 0 48px 0; 239 | width: 100%; 240 | } 241 | 242 | span.divider { 243 | display: block; 244 | width: 100%; 245 | background-color: #eee; 246 | height: 1px; 247 | margin: 0 auto; 248 | } 249 | 250 | span.separator:last-child { 251 | display: none; 252 | } 253 | 254 | span.code { font-family:Menlo, Monaco, Courier; background-color:#EEE; font-size:14px; } 255 | 256 | pre { 257 | font-family:Menlo, Monaco, Courier; 258 | white-space:pre-wrap; 259 | padding:20px; 260 | background-color:#fdfdfd; 261 | overflow:auto; 262 | border-radius: 5px; 263 | background: #272b2d; 264 | font-family: "Source Code Pro",Menlo,monospace; 265 | font-size: 13px; 266 | line-height: 1.5em; 267 | font-weight: 500; 268 | color: #d0d4d7; 269 | margin-top: 15px; 270 | } 271 | 272 | table { 273 | width: 100%; 274 | margin: 40px 0; 275 | border-collapse: collapse; 276 | font-size: 13px; 277 | line-height: 1.5em; 278 | } 279 | 280 | th,td { 281 | text-align: left; 282 | padding-right: 20px; 283 | vertical-align: top; 284 | } 285 | 286 | table td,td { 287 | border-spacing: none; 288 | border-style: solid; 289 | padding: 10px 15px; 290 | border-width: 1px 0 0 0; 291 | } 292 | 293 | tr>td { 294 | border-top: 1px solid #eaeaea; 295 | } 296 | 297 | tr:nth-child(odd)>td { 298 | background: #fcfcfc; 299 | } 300 | 301 | thead th,th { 302 | text-align: left; 303 | padding: 10px 15px; 304 | height: 20px; 305 | font-size: 13px; 306 | font-weight: bold; 307 | color: #444; 308 | border-bottom: 1px solid #dadadc; 309 | cursor: default; 310 | white-space: nowrap; 311 | } 312 | 313 | img { 314 | width: 100%; 315 | max-width: 100%; 316 | height: auto; 317 | border-radius: 5px; 318 | } 319 | 320 | /*========================================= 321 | Post List 322 | =========================================== */ 323 | 324 | 325 | #post-list li { 326 | list-style-type: none; 327 | } 328 | 329 | #post-list li:last-child { 330 | margin-bottom: 0; 331 | } 332 | 333 | #post-list h2 { 334 | margin-top: 0; 335 | line-height: 1.35; 336 | } 337 | 338 | /* Footer */ 339 | 340 | footer section { 341 | margin: 0 auto; 342 | text-align: center; 343 | padding: 35px 0 80px 0; 344 | } 345 | 346 | #footer { 347 | text-align: center; 348 | } 349 | 350 | #footer a { 351 | color: #000; 352 | font-size: 13px; 353 | line-height: 1.35; 354 | font-weight: 500; 355 | } 356 | 357 | #footer li { 358 | display: inline; 359 | padding: 0 10px; 360 | } 361 | 362 | #post-meta { 363 | font-size: 13px; 364 | font-weight: bold; 365 | line-height: 1.5; 366 | border-top: 1px solid #eee; 367 | padding-top: 40px; 368 | padding-bottom: 40px; 369 | margin-top: 60px; 370 | color:#444; 371 | border-bottom: 1px solid #eee; 372 | } 373 | 374 | #post-meta div span { 375 | color: #aaa; 376 | font-weight: 500; 377 | display: block; 378 | } 379 | 380 | #post-meta div span.dark { 381 | color: #1E2025; 382 | 383 | } 384 | 385 | #post-meta div { 386 | float: left; 387 | } 388 | 389 | /* Post Page */ 390 | #header { 391 | border-bottom: 1px solid #eee; 392 | } 393 | 394 | .post { 395 | margin: 120px 0 0 0; 396 | } 397 | 398 | /* Post Navigation */ 399 | #post-nav { 400 | text-align:center; 401 | padding-top:20px; 402 | font-size:13px; 403 | font-weight:500; 404 | margin-top: 40px; 405 | } 406 | 407 | #post-nav span { 408 | position: relative; 409 | } 410 | 411 | #post-nav span.prev { 412 | float: left; 413 | } 414 | 415 | #post-nav span.next { 416 | float: right; 417 | } 418 | 419 | #post-nav span .arrow { 420 | position: relative; 421 | padding: 1px; 422 | } 423 | 424 | #post-meta img.avatar { 425 | height: 36px; 426 | width: 36px; 427 | float: left; 428 | margin-right: 15px; 429 | box-shadow: 0 0 0 3px #fff, 0 0 0 4px #eee; 430 | border-radius: 50%; 431 | padding: 0px; 432 | } 433 | 434 | /* Others */ 435 | 436 | .dates { 437 | font-weight: 500; 438 | font-size: 13px; 439 | color: #bbb; 440 | width: 100%; 441 | text-transform: uppercase; 442 | padding-top: 5px; 443 | } 444 | 445 | h2.headline { 446 | margin-top: 0; 447 | margin-bottom: 50px; 448 | } 449 | 450 | /* Form */ 451 | 452 | #search input.field { 453 | width: 270px; 454 | height: 34px; 455 | font-size: 13px; 456 | font-weight: 400; 457 | padding-left: 12px; 458 | border: 2px solid #eee; 459 | margin-top: 20px; 460 | border-radius: 17px; 461 | -webkit-appearance: none; 462 | } 463 | 464 | /* Media Queries */ 465 | @media screen and (max-width: 540px) { 466 | 467 | footer #wrapper { 468 | padding: 35px 0 60px 0; 469 | } 470 | 471 | .profile #wrapper { 472 | margin: 0 auto; 473 | text-align: center; 474 | padding: 70px 0 40px 0; 475 | } 476 | 477 | #post-meta { 478 | padding-top: 30px; 479 | padding-bottom: 30px; 480 | margin-top: 60px; 481 | } 482 | 483 | .post { 484 | margin: 50px 0; 485 | } 486 | 487 | h1 { 488 | font-size: 24px; 489 | } 490 | 491 | h2 { 492 | font-size: 22px; 493 | } 494 | 495 | h3 { 496 | font-size: 19px; 497 | } 498 | 499 | } 500 | 501 | video { 502 | max-width: 100%; 503 | } 504 | 505 | /* The main wrapper for pagination links */ 506 | .pagination { 507 | position: relative; 508 | margin-top: 3rem; 509 | margin-bottom: 0rem; 510 | margin-left: auto; 511 | margin-right: auto; 512 | font-size: 13px; 513 | color: #bbb; 514 | text-align: center; 515 | } 516 | 517 | .pagination a { 518 | } 519 | 520 | /* Push the previous/next links out to the left/right */ 521 | .older-posts, 522 | .newer-posts { 523 | position: absolute; 524 | display: inline-block; 525 | } 526 | 527 | .older-posts { 528 | right: 0; 529 | } 530 | 531 | .page-number { 532 | display: inline-block; 533 | padding: 2px 0; 534 | min-width: 100px; 535 | } 536 | 537 | .newer-posts { 538 | left: 0; 539 | } 540 | 541 | .older-posts:hover, 542 | .newer-posts:hover { 543 | } 544 | 545 | .extra-pagination { 546 | display: none; 547 | } 548 | 549 | .extra-pagination .pagination { 550 | width: auto; 551 | } 552 | 553 | /* On page2+ show extra pagination controls at the top of post list */ 554 | .paged .extra-pagination { 555 | display: block; 556 | } 557 | 558 | /* 559 | article #post-list li { 560 | list-style-type: disc; 561 | } 562 | */ 563 | 564 | .microblog_conversation { 565 | margin-top: 50px; 566 | padding-top: 20px; 567 | border-top: 1px solid lightgray; 568 | } 569 | 570 | .microblog_post { 571 | padding-top: 20px; 572 | padding-bottom: 20px; 573 | } 574 | 575 | .microblog_avatar { 576 | border-radius: 10px; 577 | vertical-align: top; 578 | padding: 0px; 579 | } 580 | 581 | .microblog_text { 582 | margin-top: 1em; 583 | } 584 | 585 | .microblog_time { 586 | font-size: 13px; 587 | padding-top: 10px; 588 | color: gray; 589 | } 590 | 591 | .microblog_time a { 592 | color: gray; 593 | text-decoration: none; 594 | } 595 | 596 | .bookshelf_book { 597 | padding-bottom: 7px; 598 | } 599 | 600 | .bookshelf_book img { 601 | margin-right: 3px; 602 | padding-top: 0px; 603 | } 604 | 605 | .bookshelf_title { 606 | font-weight: 500; 607 | } 608 | 609 | div quoteback-component { 610 | display: block; 611 | margin-top: 20px; 612 | } 613 | 614 | -------------------------------------------------------------------------------- /theme.toml: -------------------------------------------------------------------------------- 1 | 2 | --------------------------------------------------------------------------------