:root { --text : hsl( 60, 36%, 96% ) ; --bg : #1c1c1c ; --font-size : 16pt ; --line-height : 1.3em } * { margin : 0 ; padding : 0 ; word-wrap : break-word ; text-decoration : none ; color : var( --text ) ; float : none ; font-size : var( --font-size ) ; line-height : var( --line-height ) ; font-weight : normal ; font-style : normal ; font-family : 'Consolas' , 'Monaco' , 'DejaVu Sans Mono' , 'PT Mono' , 'Courier New' , monospace } body { background : var( --bg ) ; min-width : 25em ; max-width : 80vw ; margin : 0 auto ; padding : 2em 10em } h1, h2, h3, h4, h5, h6 , blockquote , pre , ol , ul , li , article { position : relative } article + article { margin-top : 2.5rem } :is( h1, h2, h3, h4, h5, h6, blockquote, li, pre )::before , aside { position : absolute ; right : 100% ; margin-right : 1em ; display : inline-block ; text-align : right } :is( h1, h2, h3, h4, h5, h6, blockquote, li, pre )[dir=rtl]::before , [dir=rtl] :is( h1, h2, h3, h4, h5, h6, blockquote, li, pre )::before , [dir=rtl] aside, aside[dir=rtl] /* , :is( h1, h2, h3, h4, h5, h6, blockquote, li, pre ):dir(rtl)::before , :dir(rtl) :is( h1, h2, h3, h4, h5, h6, blockquote, li, pre )::before */ { right : unset ; left : 100% ; margin-right : unset ; margin-left : 1em ; text-align : left } h1::before { content : '#' } h2::before { content : '##' } h3::before { content : '###' } h4::before { content : '####' } h5::before { content : '#####' } h6::before { content : '######' } blockquote::before { content : '>' } ul > li::before { content : '-' } ul ul > li::before { content : '-\00a0-' } ul ul ul > li::before { content : '-\00a0-\00a0-' } pre::before { content : '```' } li { list-style : none } ol { counter-reset : ol_lvl_1 } ol ol { counter-reset : ol_lvl_2 } ol ol ol { counter-reset : ol_lvl_3 } ol > li::before { content : counter( ol_lvl_1 ) '.' ; counter-increment : ol_lvl_1 } ol > li:has(ol:first-child)::before { display : none } ol > li > ol:first-child > li::before { background : var( --bg ) } ol ol > li::before { content : counter( ol_lvl_1 ) '.' counter( ol_lvl_2 ) '.' ; counter-increment : ol_lvl_2 } [dir=rtl] ol ol > li::before , ol[dir=rtl] ol > li::before , ol ol[dir=rtl] > li::before , ol ol > li[dir=rtl]::before /*, ol ol > li:dir(rtl)::before*/ { content : counter( ol_lvl_2 ) '.' counter( ol_lvl_1 ) '.' } ol ol > li:has(ol:first-child)::before { display : none } ol ol > li > ol:first-child > li::before { background : var( --bg ) } ol ol ol > li::before { content : counter( ol_lvl_1 ) '.' counter( ol_lvl_2 ) '.' counter( ol_lvl_3 ) '.' ; counter-increment : ol_lvl_3 } [dir=rtl] ol ol ol > li::before , ol[dir=rtl] ol ol > li::before , ol ol[dir=rtl] ol > li::before , ol ol ol[dir=rtl] > li::before , ol ol ol > li[dir=rtl]::before /*, ol ol ol > li:dir(rtl)::before*/ { content : counter( ol_lvl_3 ) '.' counter( ol_lvl_2 ) '.' counter( ol_lvl_1 ) '.' } [title]::after { content : '/*' attr(title) '*/' ; display : inline-block } h1, h2, h3, h4, h5, h6 , blockquote , p , ul , ol , pre { margin-top : var( --line-height ) ; margin-bottom : var( --line-height ) } :is( h1, h2, h3, h4, h5, h6 ):not(:first-child) { margin-top : calc( 2 * var( --line-height ) ) } :is( b, strong )::before , :is( b, strong )::after { content : '**' ; display : inline } :is( b, strong )[title]::after { content : '**/*' attr(title) '*/' } :is( i, em )::before , :is( i, em )::after { content : '_' ; display : inline } :is( i, em )[title]::after { content : '_/*' attr(title) '*/' } u::before , u::after { content : '__' ; display : inline } u[title]::after { content : '__/*' attr(title) '*/' } s::before , s::after { content : '~~' ; display : inline } s[title]::after { content : '~~/*' attr(title) '*/' } del::before , del::after { content : '--' ; display : inline } del[title]::after { content : '--/*' attr(title) '*/' } ins::before , ins::after { content : '++' ; display : inline } ins[title]::after { content : '++/*' attr(title) '*/' } a::before { content : '[' ; display : inline } a::after { content : '](' attr(href) ')' ; display : inline } a[title]::after { content : '](' attr(href) ')/*' attr(title) '*/' ; display : inline } aside { width : 9em } aside::before { content : '#[' ; display : inline } aside::after { content : ']#' ; display : inline } :is( code, samp )::before , :is( code, samp )::after { content : '`' ; display : inline } :is( code, samp )[title]::after { content : '`/*' attr(title) '*/' } abbr::before { content : '[[' } abbr::after { content : ']]' } abbr[title]::after { content : ' | ' attr(title) ']]' } kbd::before { content : '[' } kbd::after { content : ']' } kbd[title]::after { content : ']/*' attr(title) '*/' } var::before { content : '{' } var::after { content : '}' } var[title]::after { content : '}/*' attr(title) '*/' } cite::before { content : '>>' } cite::after { content : '<<' } cite[title]::after { content : '< li::before { color : var( --red ) } ol > li::before { color : var( --purple ) } b, strong { color : var( --red ) } i, em { color : var( --blue ) } u { color : var( --blue ) ; background : var( --dark-blue ) } s { color : var( --light-gray ) ; background : var( --dark-gray ) } ins { color : var( --bg ) ; background : var( --green ) } del { color : var( --bg ) ; background : var( --red ) } del[title]::after { color : var( --dark-gray ) } mark { color : var( --bg ) ; background : var( --yellow ) } mark::before , mark::after { content : '==' ; display : inline } mark::after { content : '==' } mark[title]::after { content : '==/*' attr(title) '*/' ; color : var( --dark-gray ) } q, q[title]::after { color : var( --green ) } :is( kbd, var )::before , :is( kbd, var )::after { color : var( --gray ) } :is( sup, sub )::before , :is( sup, sub )::after { color : var( --gray ) } aside { color : var( --yellow ) }