html {
box-sizing: border-box;
line-height: 1.6;
letter-spacing: 0.06em;
scroll-behavior: smooth;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
::selection {
background-color: lch(85% 25 var(--accentHue));
@media (prefers-color-scheme: dark) {
background-color: lch(20% 25 var(--accentHue));
}
@media (prefers-color-scheme: light) {
background-color: lch(85% 25 var(--accentHue));
}
}
body {
position:relative;
margin: 0;
padding: 0;
font-family: sans-serif;
letter-spacing: 0.07em;
font-display: auto;
font-size: 1rem;
line-height: 1.54;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
font-feature-settings: "liga", "tnum", "case", "calt", "zero", "ss01", "locl";
-webkit-overflow-scrolling: touch;
-webkit-text-size-adjust: 100%;
display: flex;
min-height: 100vh;
flex-direction: column;
// Default
background-color: $light-background;
color: $light-color;
@media #{$media-size-phone} {
font-size: 1rem;
}
@media (prefers-color-scheme: dark) {
background-color: $dark-background;
color: $dark-color;
}
@media (prefers-color-scheme: light) {
background-color: $light-background;
color: $light-color;
}
}
*[data-emoji] {
position: relative;
filter: grayscale(1);
transition: filter 0.2s ease-in-out;
font-size: #{"max(1em,1.5rem)"};
&::before {
content: attr(data-emoji);
position:absolute;
left: -4rem;
}
}
*:hover > [data-emoji] {
filter: none;
}
h2,
h3,
h4,
h5,
h6 {
display: flex;
align-items: center;
line-height: 1.3;
}
h1 {
font-size: 2.625rem;
}
h2 {
font-size: 1.625rem;
}
h3 {
font-size: 1.375rem;
}
h4 {
font-size: 1.125rem;
}
@media #{$media-size-phone} {
h1 {
font-size: 2rem;
}
h2 {
font-size: 1.4rem;
}
h3 {
font-size: 1.15rem;
}
h4 {
font-size: 1.125rem;
}
}
a {
color: inherit;
}
a[href^="https://web.archive.org/"] {
&::after {
position: absolute;
content: "🏛️";
margin-left: 0.25em;
vertical-align: super;
font-size: x-small;
text-decoration: none;
}
margin-right: 1em;
}
.always-accented, .always a {
color: var(--accent);
text-decoration: none;
}
a:not(.noaccent) {
.daytime {
color: lch(60% 60 var(--accentHue));
}
transition-property: color, filter;
transition-duration: .2s;
transition-timing-function: ease-in;
}
a:not(.noaccent):hover, .force-anchor, .show-links article a:not(.noaccent) {
color: var(--accent);
text-decoration: underline;
.daytime {
color: inherit;
}
}
a.noaccent {
text-decoration: none;
}
.accent {
color: var(--accent);
}
img.profile {
float: left;
height: 4em;
border-radius: 1em;
margin: 0.25em 0.75em 0.75em 0;
transition-property: color, filter;
transition-duration: .2s;
transition-timing-function: ease-in;
&:hover {
border: 1px solid var(--accent);
box-sizing: content-box;
margin: calc(0.25em - 1px) calc(0.75em - 1px) calc(0.75em - 1px) -1px;
}
}
.photos {
.posts-list {
li {
border: 0;
display: inline;
margin: 2px;
a {
display: inline;
figure, img, video {
display: inline;
object-fit: cover;
object-position: center;
aspect-ratio: 1/1;
width: 200px;
@media (max-width: 652px) {
width: calc(33% - 6px);
}
@media (max-width: 448px) {
width: calc(50% - 4px);
}
}
}
}
}
}
article, section {
figure {
margin-left: auto;
margin-right: auto;
max-width: 100%;
&.audio {
margin: 0;
padding: 0;
width: 100%;
max-width: 100%;
}
}
video, img, svg {
max-width: 100%;
max-height: 50vh;
}
svg {
width: 100%;
}
}
.postcard {
max-width: 60%;
max-height: 300px;
margin-left: auto;
margin-right: auto;
}
img {
display: block;
max-width: 100%;
&.left {
margin-right: auto;
}
&.center {
margin-left: auto;
margin-right: auto;
}
&.right {
margin-left: auto;
}
&.circle {
border-radius: 50%;
max-width: 25%;
margin: auto;
}
}
postcard-display {
max-width: 50%;
}
figure {
display: table;
max-width: 100%;
margin: 25px 0;
&.left {
margin-right: auto;
}
&.left-floated {
margin-right: auto;
float: left;
img {
margin: 20px 20px 20px 0;
}
}
&.center {
margin-left: auto;
margin-right: auto;
}
&.right {
margin-left: auto;
}
&.right-floated {
margin-left: auto;
float: right;
img {
margin: 20px 0 20px 20px;
}
}
&.rounded {
img {
border-radius: 50%;
}
}
&.big {
box-sizing:content-box;
@media (min-width: 560px) {
max-width: none;
width: 100vw;
margin-left: calc(100%*0.5 - 50vw);
figcaption {
margin: 0 0.4rem;
}
}
@media (min-width: (760px * 1.5)) {
max-width: 100vw;
width: 150%;
margin-left: -25%;
figcaption {
margin:0;
}
}
}
figcaption {
font-size: 0.8rem;
opacity: 0.6;
&.left {
text-align: left;
}
&.center {
text-align: center;
}
&.right {
text-align: right;
}
}
}
caption {
font-size: 0.8rem;
opacity: 0.6;
}
em, strong {
// Default
color: $light-color-variant;
@media (prefers-color-scheme: dark) {
color: $dark-color-variant;
}
@media (prefers-color-scheme: light) {
color: $light-color-variant;
}
[data-theme=dark] & {
color: white;
}
[data-theme=light] & {
color: black;
}
}
code {
font-family: Consolas, Monaco, Andale Mono, Ubuntu Mono, monospace;
font-display: auto;
font-feature-settings: normal;
padding: 1px 6px;
margin: 0 2px;
border-radius: 5px;
font-size: 0.95rem;
// Default
background: $light-background-secondary;
@media (prefers-color-scheme: dark) {
background: $dark-background-secondary;
}
@media (prefers-color-scheme: light) {
background: $light-background-secondary;
}
[data-theme=dark] & {
background: $dark-background-secondary;
}
[data-theme=light] & {
background: $light-background-secondary;
}
}
pre {
[data-theme=dark] & {
background-color: $dark-background-secondary;
}
[data-theme=light] & {
background-color: $light-background-secondary;
}
padding: 10px 10px 10px 20px;
border-radius: 8px;
font-size: 0.95rem;
overflow: auto;
@media #{$media-size-phone} {
white-space: pre-wrap;
word-wrap: break-word;
}
code {
background: none !important;
margin: 0;
padding: 0;
font-size: inherit;
// Default
color: #ccc;
@media (prefers-color-scheme: dark) {
color: inherit;
}
@media (prefers-color-scheme: light) {
color: #ccc;
}
[data-theme=dark] & {
color: inherit;
}
[data-theme=light] & {
color: #ccc;
}
}
}
blockquote {
border-left: 1px solid var(--accent);
margin: 40px 0;
padding: 10px 20px;
font-style: italic;
p ~ & {
margin: 1em 0;
}
@media #{$media-size-phone} {
margin: 10px;
padding: 10px;
}
p:first-of-type {
margin-top: 0;
}
p:last-of-type {
margin-bottom: 0;
}
}
ul,
ol {
margin-left: 40px;
padding: 0;
@media #{$media-size-phone} {
margin-left: 20px;
}
}
ol ol {
list-style-type: lower-alpha;
}
.container {
flex: 1 auto;
display: flex;
flex-direction: column;
justify-content: center;
text-align: center;
}
.content {
display: flex;
flex-direction: column;
flex: 1 auto;
justify-content: center;
margin: 0;
@media #{$media-size-phone} {
margin-top: 0;
}
}
hr {
width: 100%;
border: none;
height: 1px;
// Default
background: $light-border-color;
clear: both;
@media (prefers-color-scheme: dark) {
background: $dark-border-color;
}
@media (prefers-color-scheme: light) {
background: $light-border-color;
}
&.mini {
width: 3em;
margin-top: 1.5em;
margin-bottom: 1.5em;
}
}
.hidden {
display: none;
}
.hide-on-phone {
@media #{$media-size-phone} {
display: none;
}
}
.hide-on-tablet {
@media #{$media-size-tablet} {
display: none;
}
}
// Accessibility
.screen-reader-text {
border: 0;
clip: rect(1px, 1px, 1px, 1px);
clip-path: inset(50%);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute !important;
width: 1px;
word-wrap: normal !important;
}
.screen-reader-text:focus {
background-color: #f1f1f1;
border-radius: 3px;
box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
clip: auto !important;
clip-path: none;
color: #21759b;
display: block;
font-size: 14px;
font-size: 0.875rem;
font-weight: bold;
height: auto;
width: auto;
top: 5px;
left: 5px;
line-height: normal;
padding: 15px 23px 14px;
text-decoration: none;
z-index: 100000;
}
.background-image {
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
background-position: center center;
}
// Prism JS Additionals
.highlight {
margin: 30px auto;
}
a[href^="#fn:"] {
text-decoration: none;
color: var(--accent);
}
.footnotes {
font-size: small;
ol {
list-style: none;
counter-reset: li;
li::before {
content: counter(li) '.';
color: var(--accent);
width: 1em;
margin-left: -2em;
margin-right: 0.5em;
text-align: right;
position: absolute;
}
li {
position: relative;
counter-increment: li;
}
}
}
form.claps {
display: inline-block;
&.clapped button {
color: var(--accent);
}
button:disabled svg {
animation: pulse 500ms infinite ease-in-out;
}
svg {
font-size: 1.5em;
margin-right: 0.4em;
&:only-child {
margin: 0;
}
}
}
.post-info form.claps {
float: right;
}
.post.poetry {
width: auto;
article {
margin: 0 auto;
width: auto;
}
h2 {
font-size: 1.375em;
a {
margin: auto
}
}
.poem {
&-left { text-align: left; }
&-center { text-align: center; }
&-right { text-align: right; }
&-monospace { text-align: center; }
}
.post-info {
text-align: center;
margin-top: 60px;
form.claps {
margin-top: 1em;
text-align: center;
float: none;
display:inline-block;
svg {
font-size: 1em;
}
}
}
}
input {
border: 1px solid $light-color-secondary;
background-color: $light-background;
color: $light-color;
margin: 2px;
padding: 2px 4px;
border-radius: 0;
@media (prefers-color-scheme: dark) {
border: 1px solid $dark-color-secondary;
background-color: $dark-background;
color: $dark-color;
}
@media (prefers-color-scheme: light) {
border: 1px solid $light-color-secondary;
background-color: $light-background;
color: $light-color;
}
}
input[type="submit"] {
border-color: var(--accent);
color: var(--accent);
cursor: pointer;
&:hover {
background-color: var(--accent);
color: $light-color;
}
}
select {
// A reset of styles, including removing the default dropdown arrow
appearance: none;
background-color: transparent;
border: none;
width: 100%;
font-family: inherit;
font-size: inherit;
cursor: inherit;
line-height: inherit;
color: $light-color;
@media (prefers-color-scheme: dark) {
color: $dark-color;
}
@media (prefers-color-scheme: light) {
color: $light-color;
}
// Stack above custom arrow
z-index: 1;
// Remove dropdown arrow in IE10 & IE11
// @link https://www.filamentgroup.com/lab/select-css.html
&::-ms-expand {
display: none;
}
// Remove focus outline, will add on alternate element
outline: none;
}
.select {
display: inline-grid;
grid-template-areas: "select";
align-items: center;
position: relative;
padding: 3px 4px;
border-radius: 0;
margin: 2px 2px 2px;
select,
&::after {
grid-area: select;
}
border: 1px solid $light-color-secondary;
@media (prefers-color-scheme: dark) {
border: 1px solid $dark-color-secondary;
}
@media (prefers-color-scheme: light) {
border: 1px solid $light-color-secondary;
}
font-size: inherit;
cursor: pointer;
line-height: 1.0;
background-color: $light-background;
@media (prefers-color-scheme: dark) {
background-color: $dark-background;
}
@media (prefers-color-scheme: light) {
background-color: $light-background;
}
// Custom arrow
&:not(.select--multiple)::after {
content: "";
justify-self: end;
width: 0.64em;
height: 0.4em;
background-color: $light-color-secondary;
@media (prefers-color-scheme: dark) {
background-color: $dark-color-secondary;
}
@media (prefers-color-scheme: light) {
background-color: $light-color-secondary;
}
clip-path: polygon(100% 0%, 0 0%, 50% 100%);
}
}
// Interim solution until :focus-within has better support
select:focus + .focus {
position: absolute;
top: -1px;
left: -1px;
right: -1px;
bottom: -1px;
border: 2px solid var(--accent);
border-radius: inherit;
}
.h-card:not(.no-emoji) .u-url {
&::before {
content: "«";
text-decoration: none;
display:inline-block;
}
&::after {
content: "»";
text-decoration: none;
display:inline-block;
}
}
abbr:hover {
border-bottom: 1px dotted;
}
time {
color: $dark-color;
@media (prefers-color-scheme: light) {
color: $light-color;
}
}
a:hover time {
color: inherit;
}
body.nownownow .post-content > p {
position: relative;
line-height: inherit;
}
p, li, blockquote, span.tag {
& > a[href^="/tags/"]:not([href*="#"]) {
white-space: nowrap;
&:before {
content: '#';
text-decoration: none;
display:inline-block;
}
}
}
mark {
color: inherit;
background-color: lch(85% 25 var(--accentHue)) !important;
@media (prefers-color-scheme: dark) {
background-color: lch(20% 25 var(--accentHue)) !important;
}
}
#last-updated {
position: absolute;
font-style:italic;
bottom: 0;
padding: 4px 4px 4px 8px;
border-top-left-radius: 8px;
opacity: 0.8;
background-color: $light-background;
@media (prefers-color-scheme: dark) {
background-color: $dark-background
}
}
.homepage {
.content {
align-items: center;
.posts {
text-align: center;
}
}
.previews {
position: relative;
}
.small-post-list {
padding: 0 50% 0 0;
& .summary {
position: absolute;
text-align: right;
right: 0;
width: 50%;
height: 100%;
top: 0;
display: none;
color: $light-color-dim;
background-color: $light-background;
@media (prefers-color-scheme: dark) {
background-color: $dark-background;
color: $dark-color-dim;
}
}
li:hover .summary {
display: block;
@media #{$media-size-phone} {
display: none;
}
}
}
.intro {
position: absolute;
top: 0;
right: 0;
width: 50%;
margin: 0 1.5em 0 0;
padding: 0 0 0 1.5em;
text-align: right;
text-wrap: balance;
color: $light-color-dim;
@media (prefers-color-scheme: dark) {
color: $dark-color-dim;
}
@media #{$media-size-phone} {
position: relative;
width: 100%;
text-align: center;
margin: 0 0 2em 0;
padding: 0;
}
}
.passing {
display: flex;
flex-wrap: wrap;
flex-direction: row;
justify-content: space-between;
& > * {
max-width: calc(50% - 0.5em);
@media #{$media-size-phone} {
max-width: 100%;
width: 100%;
&:not(:last-child)::after {
content: ' ';
border-top: 1px solid $light-border-color;
height:1px;
display:block;
margin: 1.5em;
width: 3em;
margin-inline: auto;
}
}
}
figure {
margin: 1em 0;
margin-inline: auto;
}
}
.context {
font-size: 0.8rem;
}
}
.small-post-list {
position: relative;
text-align: left;
margin: 1em 1.5em;
list-style: none;
@media #{$media-size-phone} {
font-size: 1rem;
padding: 0 !important;
margin-inline: 1.5em;
width: 100%;
max-width: calc(100% - 2em);
}
li > svg {
color: var(--accent);
position: absolute;
left: -1.5em;
margin-top: 0.25em;
text-align: right;
}
}
.embed iframe {
border-radius:12px;
width:100%;
max-width:486px;
}
.about-me {
text-align: left;
}
.previews svg {
color: var(--accent);
display: inline-block;
height: 1em;
vertical-align: -0.125em;
width: 1em;
height: 1em;
}
@keyframes pulse {
0% { opacity: 0.5; }
50% { opacity: 1; }
100% { opacity: 0.5; }
}
nav {
.active svg {
color: var(--accentAlt);
}
svg {
display: inline-block;
height: 1em;
vertical-align: -0.125em;
width: 1em;
height: 1em;
transition-property: color;
transition-duration: .2s;
transition-timing-function: ease-out;
&:hover {
color: var(--accent);
}
}
}