Herman Typography
Initial styling for typographic elements in Herman.
Related
Accoutrement [external]
*
* {
border: solid 0 currentcolor;
font-size: inherit;
line-height: inherit;
margin: 0;
padding: 0;
}
Since this was initially built with accoutrement/init – a more opinionated reset – this simplified block reset helps cover the basic assumptions of the code-base
:root
:root {
@include tools.font-family('sans');
font-size: tools.size('root');
font-size: tools.size('responsive');
line-height: tools.ratio('line-height');
}
The root typographic styles provide a default font, responsive font-size, fallback font-size, and line-height.
img
img {
display: revert;
}
Undo the block image display caused by changing our reset from accoutrement/init to cssremedy - since that would be a noticeable user-facing change.
::selection
::selection {
background-color: tools.color('callout');
}
Selected text uses a light color from the Herman color palette.
mark
mark {
background-color: tools.color('callout');
display: inline-block;
padding: 0 tools.size('quarter-shim');
}
For search-results, we mark target text with a background color.
[href]
[href] {
#{config.$link} {
color: tools.color('action');
text-decoration-color: tools.color('underline');
text-decoration-skip: auto;
transition:
text-decoration-color 250ms,
color 200ms;
}
#{config.$focus} {
color: tools.color('focus');
text-decoration-color: currentcolor;
}
}
Default links use both color and text-underline to stand out from basic text.
pre
pre {
@include tools.font-family('code');
font-size: tools.size('code');
overflow: auto;
white-space: pre;
}
Pre-formatted blocks use our monospace code
font-stack,
and a smaller font-size.
code
code {
@include tools.font-family('code');
font-weight: bolder;
pre & {
display: block;
font-weight: normal;
}
}
Code uses a monospace font-stack, and slightly bolder text when inline - but allows for syntax-highlighting in a block context.
Related
.text-block
.text-block {
max-width: 80ch;
h1,
h2,
h3,
h4,
h5,
h6 {
margin-top: 0;
}
h1,
h2,
h3,
h4 {
color: tools.color('text');
a {
#{config.$link} {
text-decoration-color: transparent;
}
#{config.$focus} {
text-decoration-color: currentcolor;
}
}
+ h2,
+ h3 {
margin-top: 0;
}
}
h1 {
font-size: tools.size('h1');
margin-bottom: tools.size('shim');
}
h2,
h3 {
margin-top: tools.size('gutter-plus');
}
> h2,
> h3 {
&:first-child {
margin-top: 0;
}
}
h2 {
font-size: tools.size('h2');
margin-bottom: tools.size('shim');
}
h3 {
font-size: tools.size('h3');
font-weight: normal;
margin-bottom: tools.size('shim');
}
p,
pre {
margin-bottom: tools.size('gutter-minus');
}
ol,
ul {
margin: 0 tools.size('gutter') tools.size('gutter-minus');
}
li {
> p {
margin: tools.size('shim') 0;
}
}
blockquote {
border-left: tools.size('half-shim') solid tools.color('border-light');
font-size: tools.size('quote');
margin-left: tools.negative('gutter');
padding-left: tools.size('shim') + tools.size('half-shim');
> p {
&:not(:last-child) {
text-indent: -0.4em;
@include tools.wrap-content {
color: tools.color('theme-dark');
}
}
}
cite {
display: block;
font-size: tools.size('reset');
font-style: normal;
}
}
}
There are some typographic elements
that can’t be applied globally,
but will be generated in markdown-rendered html-text blocks.
The text-block
class can be used to provide
max line-length and other typographic features –
headings, blockquotes, lists, code, emphasis, etc.
Example
<div class="text-block">
<h1>HTML Ipsum Presents</h1>
<p><strong>Pellentesque habitant morbi tristique</strong> senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. <em>Aenean ultricies mi vitae est.</em> Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, <code>commodo vitae</code>, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. <a href="#">Donec non enim</a> in turpis pulvinar facilisis. Ut felis.</p>
<h2>Header Level 2</h2>
<ol>
<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
<li>Aliquam tincidunt mauris eu risus.</li>
</ol>
<blockquote>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<cite>—Anonymous</cite>
</blockquote>
<h3>Header Level 3</h3>
<ul>
<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
<li>Aliquam tincidunt mauris eu risus.</li>
</ul>
<pre><code>#header h1 a {
display: block;
width: 300px;
height: 80px;
}</code></pre>
</div>
.config.invert-colors
.config.invert-colors {
@include config.invert-colors;
}
Invert the colors of a block, creating a light-on-dark area.
Example
<div class="invert-colors" style="padding: 1em;">
You shall sojourn at <a href="#">Paris, Rome, and Naples</a>.
</div>