Files
wren/doc/site/style.scss

501 lines
7.9 KiB
SCSS

$header: "Sanchez", helvetica, arial, sans-serif;
$subheader: "Lato", helvetica, arial, sans-serif;
$body: "Source Sans Pro", georgia, serif;
$code: "Source Code Pro", Menlo, Monaco, Consolas, monospace;
$dark: hsl(210, 10%, 25%);
$darker: hsl(210, 20%, 10%);
$light: hsl(0, 0%, 100%);
$gray-10: mix($dark, $light, 10%);
$gray-20: mix($dark, $light, 20%);
$gray-30: mix($dark, $light, 30%);
$gray-40: mix($dark, $light, 40%);
$gray-50: mix($dark, $light, 50%);
$gray-60: mix($dark, $light, 60%);
$gray-80: mix($dark, $light, 80%);
$text: mix($light, #000, 20%);
$code-color: hsl(210, 20%, 40%);
$code-bg: hsl(210, 20%, 98%);
$link: hsl(200, 60%, 50%);
$link-hover: hsl(210, 100%, 80%);
$link-dark: hsl(210, 60%, 20%);
$link-glow: hsla(210, 100%, 50%, 0.4);
$module-link: hsl(150, 70%, 40%);
$module-link-hover: hsl(130, 70%, 70%);
$module-link-dark: hsl(160, 60%, 25%);
$module-link-glow: hsla(130, 90%, 50%, 0.4);
* {
-moz-box-sizing: border-box;
box-sizing: border-box;
}
body, code, h1, h2, h3, p, pre {
margin: 0;
padding: 0;
}
body {
background: $light;
color: $text;
font: 16px/25px $body;
}
.page {
margin: 0 auto;
width: 800px;
// Clear contents.
&:after {
content: "";
display: table;
clear: both;
}
}
.main-column {
position: relative;
width: 560px;
}
header {
text-shadow: 0 1px 1px $darker;
.page {
height: 120px;
}
background: $dark;
border-bottom: solid 1px $darker;
h1 {
position: absolute;
left: 0;
top: 63px;
padding: 0;
font: 400 48px $header;
letter-spacing: 2px;
}
h2 {
position: absolute;
right: 0;
top: 72px;
padding: 0;
font: 500 13px $subheader;
text-transform: uppercase;
letter-spacing: 2px;
color: $gray-50;
}
a {
color: $gray-20;
}
a:hover {
color: $link-hover;
text-shadow: 0 0 6px $link-glow;
}
}
nav {
float: right;
width: 160px;
padding-top: 109px;
h2 {
color: $gray-30;
font: 500 11px $subheader;
text-transform: uppercase;
letter-spacing: 2px;
margin: 0;
}
ul {
padding: 0;
margin: 6px 0 20px 0;
}
li {
font: 15px $body;
color: $gray-30;
list-style-type: none;
margin: 0 0 4px 0;
}
}
nav.small {
// Only show the mobile navigation on small screens.
display: none;
float: none;
width: 100%;
padding: 16px 0 0 0;
margin: 0;
background: $gray-10;
table {
width: 100%;
border-collapse: separate;
border-spacing: 16px 0;
}
h2 {
margin: 16px 0 0 0;
padding: 0 0 1px 0;
border-bottom: solid 1px $gray-20;
}
}
h1 {
padding-top: 30px;
font: 500 36px/60px $header;
color: $link;
}
h2 {
font: 500 24px $header;
margin: 24px 0 0 0;
color: $link;
code {
border: none;
background: inherit;
color: inherit;
font-size: 24px;
}
}
h3 {
font: 20px $body;
margin: 24px 0 0 0;
color: $link;
}
a {
color: $link;
text-decoration: none;
transition: color 0.2s, text-shadow 0.2s;
outline: none;
}
main {
@extend .main-column;
padding-top: 12px;
float: left;
}
a:hover {
color: $link-dark;
}
.header-anchor {
color: $light;
}
h2:hover > .header-anchor,
h3:hover > .header-anchor {
color: $gray-10;
}
h2:hover > .header-anchor:hover,
h3:hover > .header-anchor:hover {
color: $link-dark;
}
p, li {
margin: 10px 0;
}
p + p {
margin-top: 20px;
}
code, pre {
color: $code-color;
font: 13px $code;
background: $code-bg;
border-radius: 2px;
border: solid 1px hsl(200, 20%, 95%);
border-bottom: solid 1px hsl(200, 20%, 90%);
}
code {
padding: 1px 2px;
white-space: nowrap;
}
pre {
margin: 10px 0;
line-height: 20px;
padding: 10px;
// Scroll horizontally if not wide enough.
overflow: auto;
}
footer {
margin-top: 40px;
padding: 20px 0 40px 0;
font: 14px $body;
background: $dark;
color: $gray-20;
border-top: solid 1px $darker;
text-align: center;
text-shadow: 0 1px 1px $darker;
a {
color: $link-hover;
}
a:hover {
color: $link;
}
}
.right {
float: right;
}
// Syntax highlighting.
.codehilite pre {
// Comments.
span.c1, span.cm { color: mix($code-color, $code-bg, 60%); }
// Keywords.
span.k, span.kd, span.kc, span.nb { color: hsl(200, 60%, 50%); }
// Names.
span.vg { color: hsl(180, 70%, 35%); }
span.vi { color: hsl(90, 80%, 35%); }
span.vc { color: hsl(130, 60%, 40%); }
// Numbers.
span.m, span.mi, span.mf { color: hsl(30, 80%, 45%); }
// Strings.
span.s, span.s2 { color: hsl(40, 80%, 45%); }
span.se { color: hsl(45, 80%, 50%); }
// Operators and punctuation.
span.o { color: hsl(200, 40%, 50%); }
span.p { color: mix($code-color, $code-bg, 80%); }
// Preprocessor directives.
span.cp { color: hsl(270, 40%, 60%); }
span.output {
float: right;
color: hsl(150, 50%, 45%);
&::before, &::after {
color: hsl(150, 50%, 80%);
}
// Tall angle brackets.
&::before { content: "\276c "; }
&::after { content: ' \276d'; }
}
span.error {
float: right;
color: hsl(350, 50%, 60%);
&::before {
color: hsl(350, 50%, 75%);
content: "Error: ";
}
}
}
// Have a different primary color for the module docs.
body.module {
header {
a {
color: $gray-20;
}
a:hover {
color: $module-link-hover;
text-shadow: 0 0 6px $module-link-glow;
}
}
a {
color: $module-link;
}
a:hover {
color: $module-link-dark;
}
.header-anchor {
color: $light;
}
main {
h1, h2, h3 {
color: $module-link;
}
h2:hover > .header-anchor:hover,
h3:hover > .header-anchor:hover {
color: $module-link-dark;
}
}
footer {
a {
color: $module-link-hover;
}
a:hover {
color: $module-link;
}
}
}
table {
width: 100%;
border-collapse: collapse;
tr {
margin: 0;
padding: 0;
vertical-align: top;
}
th, td {
font-size: 14px;
line-height: 20px;
text-align: left;
}
}
// Bar charts on the performance page.
table.chart {
margin: 4px 0 0 0;
padding: 5px 0 5px 25px;
td, th {
line-height: 14px;
margin: 0;
padding: 1px 0;
}
th {
font-size: 14px;
width: 100px;
}
.chart-bar {
display: inline-block;
font: 13px $body;
color: $light;
background: $link;
border-bottom: solid 1px $link-dark;
text-align: right;
border-radius: 2px;
}
.chart-bar.wren {
background: mix($link, $link-dark, 30%);
border-bottom: solid 1px $link-dark;
}
}
// Precedence table on expressions page.
table.precedence {
th {
font: 500 11px $subheader;
text-transform: uppercase;
letter-spacing: 1px;
color: $gray-60;
padding: 6px 0;
border-bottom: solid 1px $gray-10;
}
td {
padding: 3px 0;
border-bottom: solid 1px $gray-10;
}
}
@media only screen and (max-width: 839px) {
// 36 pixel columns.
.page { width: 720px; }
nav { width: 144px; }
.main-column { width: 504px; }
}
@media only screen and (max-width: 759px) {
// 32 pixel columns.
.page { width: 640px; }
nav { width: 128px; }
.main-column { width: 448px; }
}
@media only screen and (max-width: 679px) {
// 28 pixel columns.
.page { width: 560px; }
nav { width: 112px; }
.main-column { width: 392px; }
header h2 {
font-size: 12px;
letter-spacing: 1px;
}
}
@media only screen and (max-width: 639px) {
.page { width: 100%; }
// Switch to the mobile navigation.
nav.big { display: none; }
nav.small { display: block; }
.main-column {
padding: 0 20px;
width: 100%;
}
header {
h1 {
position: relative;
top: 10px;
left: 0;
text-align: center;
}
h2 {
position: relative;
top: 0;
right: 0;
text-align: center;
font-size: 13px;
letter-spacing: 2px;
}
}
main {
float: none;
width: 100%;
}
pre {
font-size: 13px;
}
footer {
padding: 20px 20px 40px 20px;
}
}