assets/css/_main.scss (251 lines of code) (raw):
/* Custom sizes */
:root {
--font-size-xxjumbo: 3.2rem;
--line-height-xxjumbo: 3.6rem;
--font-size-xjumbo: 2.2rem;
--line-height-xjumbo: 2.5rem;
--font-size-mini-jumbo: 1.6rem;
--line-height-mini-jumbo: 1.8rem;
}
/* Animations */
@keyframes fadein {
from { opacity: 0; }
to { opacity: 1; }
}
/* Firefox < 16 */
@-moz-keyframes fadein {
from { opacity: 0; }
to { opacity: 1; }
}
/* Safari, Chrome and Opera > 12.1 */
@-webkit-keyframes fadein {
from { opacity: 0; }
to { opacity: 1; }
}
/* Internet Explorer */
@-ms-keyframes fadein {
from { opacity: 0; }
to { opacity: 1; }
}
/* Opera < 12.1 */
@-o-keyframes fadein {
from { opacity: 0; }
to { opacity: 1; }
}
html {
scroll-padding-top: 2.5rem;
}
/* Containers */
body {
background-color: white;
display: flex;
min-height: 100vh;
flex-direction: column;
@media (prefers-color-scheme: dark) {
background-color: var(--tw-color-gray-1100);
color: var(--tw-color-gray-faint);
}
}
main {
flex: 1;
}
.content {
padding: var(--feather-grid-mega) 0;
}
.section {
padding: calc(var(--feather-grid-mega) * 2) 0;
}
.container {
max-width: var(--feather-grid-page-width);
margin: 0 auto;
}
// common styles across nav, header, and footer
nav, .header, .footer {
background-color: var(--tw-color-blue-primary);
color: white;
@media (prefers-color-scheme: dark) {
background-color: black;
}
a:not(.Button) {
color: white;
text-decoration: none;
&:hover, &:active {
text-decoration: none;
color: var(--tw-color-blue-faded);
@media (prefers-color-scheme: dark) {
color: var(--tw-color-gray-light);
}
}
}
}
// Navigation
nav {
padding: var(--feather-grid-xsmall) var(--feather-grid-mega);
width: 100%;
position: fixed;
z-index: 2;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.nav-title {
flex-shrink: 0;
img {
height: 1.3em;
width: 1.3em;
vertical-align: bottom;
margin-right: var(--feather-grid-xxsmall);
}
}
.home-link {
font-weight: var(--feather-font-weight-bold);
}
#nav-menu {
margin: 0;
padding: 0;
li {
display: inline-block;
margin-left: var(--feather-grid-small);
}
}
#menu-toggle {
display: none;
}
// Navigation - mobile
@media (max-width: 650px) {
#nav-menu {
margin-top: var(--feather-grid-xxsmall);
}
html:not(.no-js) {
#menu-toggle {
display: block;
}
#nav-menu {
display: none;
height: 100vh;
width: 100%;
margin: 0;
margin-top: calc(var(--feather-grid-mega) * 2);
animation: fadein 1.5s;
li {
display: block;
font-weight: var(--feather-font-weight-bold);
font-size: var(--feather-font-size-jumbo);
line-height: var(--feather-line-height-jumbo);
padding: var(--feather-grid-medium) 0;
margin: 0;
&:not(:last-child) {
border-bottom: 1px solid var(--tw-color-blue-faded);
}
}
}
#nav-menu.active {
display: block;
}
}
}
/* Headers */
.header, .footer {
padding: var(--feather-grid-mega) 0;
}
.header {
padding-top: calc(var(--feather-grid-mega) * 3);
}
.large-title {
font-size: var(--font-size-xxjumbo);
line-height: var(--line-height-xxjumbo);
}
.subtitle {
margin: var(--feather-grid-large) 0;
}
/* Footer */
@media (min-width: 800px) {
.footer .container {
display: flex;
flex-wrap: wrap;
}
.footer .footer-cell {
flex: 1 1 25%;
}
}
a.foot-link {
display: block;
line-height: var(--feather-line-height-xlarge);
}
.footer-margin {
margin-bottom: calc(var(--feather-grid-mega) * 1.25);
}
/* Margins */
.center-margin {
margin-left: auto;
margin-right: auto;
}
.same-mega-margin {
margin-bottom: var(--feather-grid-mega);
}
.mega-margin {
margin-bottom: var(--feather-grid-mega);
}
.large-margin {
margin-bottom: var(--feather-grid-large);
}
.medium-margin {
margin-bottom: var(--feather-grid-medium);
}
.small-margin {
margin-bottom: var(--feather-grid-small);
}
.xsmall-margin {
margin-bottom: var(--feather-grid-xsmall);
}
/* Text */
body {
font-size: 0.8rem; // 16px
line-height: 1.5; // 24px
}
h2 {
margin: 1.5em 0 0.5em;
}
.center-text {
text-align: center;
}
.small-title {
font-size: var(--font-size-xjumbo);
line-height: var(--line-height-xjumbo);
}
br {
line-height: var(--feather-line-height-xlarge);
}
pre {
font-size: 0.8em;
padding: 3px;
}
.hide {
display: none;
}
/* Media queries */
/* Less than --feather-grid-page-width + (--feather-grid-mega * 2) */
@media (max-width: 1236px) {
.container {
margin: 0 var(--feather-grid-mega);
}
.large-title {
font-size: var(--font-size-xjumbo);
line-height: var(--line-height-xjumbo);
}
.small-title {
font-size: var(--font-size-mini-jumbo);
line-height: var(--line-height-mini-jumbo);
}
.mega-margin {
margin-bottom: var(--feather-grid-large);
}
.large-margin {
margin-bottom: var(--feather-grid-medium);
}
.medium-margin {
margin-bottom: var(--feather-grid-small);
}
}
@media (max-width: 800px) {
.footer-margin {
margin-bottom: var(--feather-grid-mega);
}
}
/* Less than 600px */
@media (max-width: 600px) {
.section {
padding: calc(var(--feather-grid-mega) * 1.5) 0;
}
.container {
margin: 0 var(--feather-grid-medium);
}
}
@media (max-width: 480px) {
.content, .section {
padding: var(--feather-grid-large) 0;
}
}