chore: styles

This commit is contained in:
Cory Dransfeldt 2024-11-06 10:03:35 -08:00
parent fa2ac170b3
commit 3bc48bd311
No known key found for this signature in database
44 changed files with 248 additions and 454 deletions

View file

@ -67,4 +67,5 @@
/blog/digital-privacy-tools /posts/2021/digital-privacy-tools/ 301 /blog/digital-privacy-tools /posts/2021/digital-privacy-tools/ 301
/posts/2023/now-page-update-matter-favorites/ /posts/2023/now-page-update-favorite-articles-from-matter/ 301 /posts/2023/now-page-update-matter-favorites/ /posts/2023/now-page-update-favorite-articles-from-matter/ 301
/posts/2023/now-playing-eleventy-netlify-edge-functions-emoji/ /posts/2023/displaying-now-playing-data-with-matching-emoji-using-netlify-edge-functions-and-eleventy/ 301 /posts/2023/now-playing-eleventy-netlify-edge-functions-emoji/ /posts/2023/displaying-now-playing-data-with-matching-emoji-using-netlify-edge-functions-and-eleventy/ 301
/posts/2014/sublime-text-ctrl-tab-key-bindings/ /posts/2014/sublime-text-3-ctrl-tab-key-bindings/ 301 /posts/2014/sublime-text-ctrl-tab-key-bindings/ /posts/2014/sublime-text-3-ctrl-tab-key-bindings/ 301
/posts/2022/simple-api-fetch-hooks-with-swr/ /posts/2022/simple-data-fetching-with-custom-react-hooks-and-swr 301

22
package-lock.json generated
View file

@ -1,12 +1,12 @@
{ {
"name": "coryd.dev", "name": "coryd.dev",
"version": "2.6.7", "version": "2.8.1",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "coryd.dev", "name": "coryd.dev",
"version": "2.6.7", "version": "2.8.1",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@11ty/eleventy-fetch": "4.0.1", "@11ty/eleventy-fetch": "4.0.1",
@ -1166,9 +1166,9 @@
} }
}, },
"node_modules/caniuse-lite": { "node_modules/caniuse-lite": {
"version": "1.0.30001677", "version": "1.0.30001678",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001678.tgz",
"integrity": "sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==", "integrity": "sha512-RR+4U/05gNtps58PEBDZcPWTgEO2MBeoPZ96aQcjmfkBWRIDfN451fW2qyDA9/+HohLLIL5GqiMwA+IB1pWarw==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -1355,9 +1355,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/cross-spawn": { "node_modules/cross-spawn": {
"version": "7.0.3", "version": "7.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -1791,9 +1791,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/electron-to-chromium": { "node_modules/electron-to-chromium": {
"version": "1.5.52", "version": "1.5.55",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.52.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.55.tgz",
"integrity": "sha512-xtoijJTZ+qeucLBDNztDOuQBE1ksqjvNjvqFoST3nGC7fSpqJ+X6BdTBaY5BHG+IhWWmpc6b/KfpeuEDupEPOQ==", "integrity": "sha512-6maZ2ASDOTBtjt9FhqYPRnbvKU5tjG0IN9SztUOWYw2AzNDNpKJYLJmlK0/En4Hs/aiWnB+JZ+gW19PIGszgKg==",
"dev": true, "dev": true,
"license": "ISC" "license": "ISC"
}, },

View file

@ -1,6 +1,6 @@
{ {
"name": "coryd.dev", "name": "coryd.dev",
"version": "2.6.7", "version": "2.8.1",
"description": "The source for my personal site. Built using 11ty (and other tools).", "description": "The source for my personal site. Built using 11ty (and other tools).",
"type": "module", "type": "module",
"engines": { "engines": {

View file

@ -87,6 +87,7 @@ img {
border: var(--border-default); border: var(--border-default);
height: auto; height: auto;
width: 100%; width: 100%;
margin: var(--margin-vertical-base-horizontal-zero);
} }
} }
@ -208,6 +209,10 @@ ol {
a { a {
color: var(--accent-color); color: var(--accent-color);
&.back-link {
margin-bottom: var(--spacing-base);
}
& > img { & > img {
border: var(--border-default); border: var(--border-default);
} }
@ -216,15 +221,13 @@ a {
stroke: var(--accent-color); stroke: var(--accent-color);
} }
&:hover, &:is(:hover, :focus, :active) {
&:focus,
&:active {
color: var(--accent-color-hover); color: var(--accent-color-hover);
transition: color var(--transition-duration-default) transition: color var(--transition-duration-default)
var(--transition-ease-in-out); var(--transition-ease-in-out);
& > img { & > img {
border-color: var(--accent-color-hover); border: var(--border-default-hover);
transition: border var(--transition-duration-default) transition: border var(--transition-duration-default)
var(--transition-ease-in-out); var(--transition-ease-in-out);
} }
@ -285,14 +288,17 @@ hr {
/* articles */ /* articles */
article { article {
margin-bottom: var(--spacing-base); margin-bottom: var(--spacing-base);
border-bottom: var(--border-gray);
&:last-of-type { &:not([class], :last-of-type) {
border-bottom: 0; border-bottom: var(--border-gray);
} }
&.intro p { &.intro {
margin-top: 0; border-bottom: var(--border-gray);
& p {
margin-top: 0;
}
} }
& h3 { & h3 {
@ -313,27 +319,6 @@ article {
} }
} }
p + .associated-media,
img + .associated-media,
.banner + .associated-media {
margin-top: var(--spacing-base);
border-top: var(--border-gray);
}
.footnotes {
& .footnotes-list {
margin-bottom: 0;
& li:last-child {
margin-bottom: 0;
}
}
&:has(~ *) {
margin-bottom: var(--spacing-base);
}
}
sup.footnote-ref { sup.footnote-ref {
line-height: var(--line-height-xs); line-height: var(--line-height-xs);
padding: var(--spacing-xs); padding: var(--spacing-xs);
@ -348,6 +333,7 @@ table {
white-space: nowrap; white-space: nowrap;
caption-side: bottom; caption-side: bottom;
overscroll-behavior: none; overscroll-behavior: none;
margin: var(--margin-vertical-base-horizontal-zero);
} }
table, table,
@ -441,13 +427,9 @@ td:first-of-type,
.default-wrapper { .default-wrapper {
padding-top: var(--spacing-2xl); padding-top: var(--spacing-2xl);
& > h2 { & > h2:first-child {
margin-top: 0; margin-top: 0;
} }
& > a + h2 {
margin-top: var(--spacing-base);
}
} }
.main-wrapper { .main-wrapper {

View file

@ -86,10 +86,6 @@ ol {
overflow-wrap: break-word; overflow-wrap: break-word;
} }
:where(h1, h2, h3) {
text-wrap: balance;
}
:where(hr) { :where(hr) {
border: none; border: none;
border-block-start: 1px solid; border-block-start: 1px solid;

View file

@ -66,6 +66,7 @@
/* borders */ /* borders */
--border-default: 1px solid var(--accent-color); --border-default: 1px solid var(--accent-color);
--border-default-hover: 1px solid var(--accent-color-hover);
--border-gray: 1px solid var(--gray-light); --border-gray: 1px solid var(--gray-light);
/* fonts */ /* fonts */

View file

@ -1,5 +1,4 @@
.addon-links { .addon-links {
margin-top: var(--spacing-base);
display: grid; display: grid;
gap: var(--sizing-base); gap: var(--sizing-base);
grid-template-columns: var(--grid-columns-one); grid-template-columns: var(--grid-columns-one);
@ -8,17 +7,8 @@
grid-template-columns: var(--grid-columns-two); grid-template-columns: var(--grid-columns-two);
} }
h3 {
margin-top: 0;
}
& article { & article {
border-bottom: 0; border-bottom: 0;
margin-bottom: 0; margin-bottom: 0;
& ul,
& ol {
margin-bottom: 0;
}
} }
} }

View file

@ -7,7 +7,7 @@
grid-template-columns: var(--grid-columns-four); grid-template-columns: var(--grid-columns-four);
} }
& > * { & > a {
display: flex; display: flex;
justify-content: center; justify-content: center;
} }

View file

@ -1,15 +1,6 @@
* + .banner,
:not(* + .banner) .banner:first-of-type {
margin-top: var(--spacing-base);
}
.banner:has(+ *),
:not(* + .banner) .banner:last-of-type {
margin-bottom: var(--spacing-base);
}
.banner { .banner {
padding: var(--spacing-md); padding: var(--spacing-md);
margin: var(--margin-vertical-base-horizontal-zero);
border: 1px solid; border: 1px solid;
border-radius: var(--border-radius-slight); border-radius: var(--border-radius-slight);
@ -62,9 +53,7 @@
border-color: var(--banner-accent-color); border-color: var(--banner-accent-color);
& p a:hover, & p a:is(:hover, :active, :focus) {
& p a:active,
& p a:focus {
color: var(--banner-accent-color); color: var(--banner-accent-color);
} }

View file

@ -17,12 +17,12 @@ button,
transition: color var(--transition-duration-default) transition: color var(--transition-duration-default)
var(--transition-ease-in-out); var(--transition-ease-in-out);
& + hr {
margin-top: 0;
}
&:not(.active):is(:hover, :active, :focus, :focus-within) { &:not(.active):is(:hover, :active, :focus, :focus-within) {
background-color: var(--accent-color-hover); background-color: var(--accent-color-hover);
border-color: var(--accent-color-hover); border: 2px solid var(--accent-color-hover);
transition: background-color var(--transition-duration-default)
var(--transition-ease-in-out),
border var(--transition-duration-default) var(--transition-ease-in-out),
color var(--transition-duration-default) var(--transition-ease-in-out);
} }
} }

View file

@ -3,13 +3,12 @@
opacity: 0.5; opacity: 0.5;
} }
input:not([type="button"]):not([type="submit"]):not([type="reset"]), input:not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="checkbox"]),
textarea { textarea {
width: 100%; width: 100%;
} }
input:not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="checkbox"]),
input:not([type="button"]):not([type="submit"]):not([type="reset"]),
textarea, textarea,
select { select {
color: var(--text-color); color: var(--text-color);
@ -19,13 +18,16 @@ select {
border: var(--border-gray); border: var(--border-gray);
} }
form:has(+ *), form,
label:has(input):has(+ *) input, input:not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="checkbox"]),
input:not([type="button"]):not([type="submit"]):not([type="reset"]):has(+ *), textarea {
textarea:has(+ *) {
margin-bottom: var(--spacing-base); margin-bottom: var(--spacing-base);
} }
textarea {
resize: vertical;
}
.search__form { .search__form {
margin-top: 0; margin-top: 0;
@ -34,6 +36,18 @@ textarea:has(+ *) {
} }
} }
.search__form--type {
display: flex;
gap: var(--spacing-md);
margin-top: var(--sizing-md);
border: none;
@media screen and (max-width: 768px) {
flex-direction: column;
gap: var(--spacing-xs);
}
}
.search__results { .search__results {
margin: 0 0 var(--spacing-base); margin: 0 0 var(--spacing-base);
padding: 0; padding: 0;

View file

@ -1,6 +1,6 @@
.mastodon-post-wrapper { .mastodon-post-wrapper {
& dl, & dl,
dt { & dt {
display: flex; display: flex;
} }

View file

@ -1,7 +1,3 @@
a + .media-grid {
margin-top: var(--spacing-base);
}
.media-grid { .media-grid {
display: grid; display: grid;
gap: var(--spacing-sm); gap: var(--spacing-sm);
@ -10,15 +6,6 @@ a + .media-grid {
margin-top: var(--spacing-base); margin-top: var(--spacing-base);
} }
:is(&.poster, &.square, &.vertical) img {
border-radius: var(--border-radius-slight);
width: 100%;
}
:is(&.poster, &.vertical) img {
height: auto;
}
&.poster { &.poster {
grid-template-columns: var(--grid-poster); grid-template-columns: var(--grid-poster);
@ -33,10 +20,6 @@ a + .media-grid {
& a { & a {
aspect-ratio: var(--aspect-ratio-square); aspect-ratio: var(--aspect-ratio-square);
} }
& img {
height: 100%;
}
} }
&.vertical { &.vertical {
@ -47,40 +30,21 @@ a + .media-grid {
} }
} }
& .item { &:is(.poster, .square, .vertical) img {
width: 100%; width: 100%;
height: 100%; height: auto;
position: relative;
display: flex;
&::after {
position: absolute;
z-index: 1;
content: "";
top: 0;
left: 0;
box-shadow: var(--box-shadow-media);
width: 100%;
height: 100%;
border: var(--border-default);
border-radius: var(--border-radius-slight);
transition: border-color var(--transition-duration-default)
var(--transition-ease-in-out);
}
} }
& a:hover .item::after, & .item {
& a:active .item::after { position: relative;
border-color: var(--accent-color-hover);
} }
& .meta-text { & .meta-text {
color: var(--color-lightest);
position: absolute; position: absolute;
z-index: 2; z-index: 2;
padding: 0 var(--spacing-sm); padding: 0 var(--spacing-sm);
bottom: var(--spacing-sm); bottom: var(--spacing-sm);
width: 100%;
box-sizing: border-box;
& .header, & .header,
& .subheader { & .subheader {

View file

@ -1,53 +1,41 @@
menu { menu {
display: flex; & .menu-primary {
flex-direction: row;
align-items: center;
.menu-primary {
position: absolute; position: absolute;
flex-direction: column;
list-style: none; list-style: none;
padding: 0; padding: 0;
top: 0; top: calc(var(--spacing-3xl) * 1.75);
left: 0; left: 0;
gap: 0;
margin-top: calc(var(--spacing-3xl) * 2.25);
flex-direction: column;
width: 100%; width: 100%;
z-index: 3; z-index: 3;
& > li { & > li {
display: flex;
align-items: center;
justify-content: center;
overflow: hidden; overflow: hidden;
margin: 0; margin: 0;
padding: var(--spacing-sm) 0; padding: var(--spacing-sm) 0;
width: 100%; width: 100%;
background: var(--background-color); background: var(--background-color);
& a { & a,
text-decoration: none; & .active {
justify-content: center; justify-content: center;
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
& a {
text-decoration: none;
}
& .active { & .active {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
cursor: not-allowed; cursor: not-allowed;
} }
& .icon > svg, :is(.icon, .active) > svg {
& .active > svg {
display: none; display: none;
} }
& .icon > span, :is(.icon, .active) > span {
& .active > span {
display: inline; display: inline;
} }
} }
@ -57,29 +45,29 @@ menu {
display: none; display: none;
&:checked + .menu-button-container { &:checked + .menu-button-container {
.menu-closed { & .menu-closed {
display: none; display: none;
} }
.menu-open { & .menu-open {
display: block; display: block;
} }
} }
&:not(:checked) + .menu-button-container { &:not(:checked) + .menu-button-container {
.menu-closed { & .menu-closed {
display: block; display: block;
} }
.menu-open { & .menu-open {
display: none; display: none;
} }
} }
& ~ .menu-primary li { & ~ .menu-primary li {
height: 0; height: 0;
border: 0;
padding: 0; padding: 0;
font-size: var(--font-size-lg);
} }
&:checked ~ .menu-primary li { &:checked ~ .menu-primary li {
@ -89,18 +77,11 @@ menu {
&:first-child { &:first-child {
border-top: var(--border-gray); border-top: var(--border-gray);
} }
& a,
& .active {
font-size: var(--font-size-lg);
}
} }
} }
.menu-button-container { .menu-button-container {
display: unset; display: unset;
width: var(--sizing-svg-base);
height: var(--sizing-svg-base);
& svg { & svg {
cursor: pointer; cursor: pointer;
@ -117,38 +98,24 @@ menu {
top: unset; top: unset;
left: unset; left: unset;
width: auto; width: auto;
}
.menu-primary > li { & > li {
width: auto; padding: 0;
height: auto; background: none;
padding: 0;
background: none;
& .icon > svg, :is(.icon, .active) > svg {
& .active > svg { display: block;
display: block; }
}
& .icon > span, :is(.icon, .active) > span {
& .active > span { display: none;
display: none; }
} }
} }
#menu-toggle ~ .menu-primary li { #menu-toggle ~ .menu-primary li,
height: unset;
border: none;
padding: 0;
}
#menu-toggle:checked ~ .menu-primary li { #menu-toggle:checked ~ .menu-primary li {
height: unset; height: unset;
border: none;
&:first-child {
border: none;
}
} }
.menu-button-container { .menu-button-container {

View file

@ -1,38 +1,36 @@
.modal-wrapper { .modal-wrapper,
.modal-body {
inset: 0;
width: 100%; width: 100%;
height: 100%; height: 100%;
inset: 0;
background: var(--modal-overlay-background);
position: fixed; position: fixed;
}
.modal-wrapper {
background: var(--modal-overlay-background);
z-index: 3; z-index: 3;
& .modal-body { .modal-body {
position: fixed;
background: var(--background-color); background: var(--background-color);
height: 100%;
width: 100%;
inset: 0;
overflow-y: scroll;
border-radius: var(--border-radius-slight);
padding: var(--spacing-lg) var(--spacing-base); padding: var(--spacing-lg) var(--spacing-base);
overflow-y: auto;
border-radius: var(--border-radius-slight);
& h3 { h3 {
margin-top: 0; margin-top: 0;
} }
@media screen and (min-width: 768px) { @media (min-width: 768px) {
max-height: 75%;
max-width: 75%; max-width: 75%;
max-height: 75%;
inset: 12.5%; inset: 12.5%;
border: var(--border-gray); border: var(--border-gray);
} }
& .modal-close { .modal-close {
position: sticky; position: sticky;
top: 0; top: 0;
left: 100%; left: 100%;
height: var(--sizing-svg-base);
width: var(--sizing-svg-base);
} }
} }
} }
@ -55,13 +53,11 @@
display: inline-flex; display: inline-flex;
vertical-align: middle; vertical-align: middle;
& svg { svg {
stroke: var(--accent-color); stroke: var(--accent-color);
&:hover, &:is(:hover, :focus, :active) {
&:focus,
&:active {
stroke: var(--accent-color-hover); stroke: var(--accent-color-hover);
} }
} }
} }

View file

@ -1,17 +1,12 @@
.music-chart { .music-chart {
margin-bottom: var(--spacing-base); margin: var(--margin-vertical-base-horizontal-zero);
& ol { & ol {
padding-left: 0; padding-left: 0;
margin-top: 0;
@media screen and (min-width: 768px) { @media screen and (min-width: 768px) {
list-style-position: outside; list-style-position: outside;
} }
& li:first-of-type {
margin-top: 0;
}
} }
& .item { & .item {
@ -20,22 +15,21 @@
justify-content: start; justify-content: start;
align-items: start; align-items: start;
&:not(:last-of-type) {
margin-bottom: var(--spacing-lg);
}
@media screen and (min-width: 768px) { @media screen and (min-width: 768px) {
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
} }
&:not(:last-of-type) {
margin-bottom: var(--spacing-lg);
}
& .progress-bar-wrapper { & .progress-bar-wrapper {
margin-top: var(--spacing-sm);
max-width: 40%; max-width: 40%;
@media screen and (min-width: 768px) { @media screen and (max-width: 768px) {
margin-top: 0; margin-top: var(--spacing-sm);
} }
} }
@ -74,6 +68,7 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: start; justify-content: start;
gap: var(--spacing-xs);
@media screen and (min-width: 768px) { @media screen and (min-width: 768px) {
max-width: 85%; max-width: 85%;
@ -98,37 +93,11 @@
& time { & time {
margin-top: var(--spacing-sm); margin-top: var(--spacing-sm);
margin-left: 0;
@media screen and (min-width: 768px) { @media screen and (min-width: 768px) {
margin-left: var(--spacing-lg);
text-align: right; text-align: right;
white-space: nowrap; white-space: nowrap;
} }
} }
} }
&.grid {
display: grid;
gap: var(--spacing-sm);
grid-template-columns: repeat(2, 1fr);
margin-bottom: var(--spacing-base);
@media screen and (min-width: 768px) {
grid-template-columns: repeat(3, 1fr);
}
& .item .meta {
max-width: 80%;
& .title {
line-height: var(--line-height-sm);
}
& .subtext p {
margin: 0;
line-height: var(--line-height-sm);
}
}
}
} }

View file

@ -2,6 +2,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
margin-top: var(--spacing-base);
& button { & button {
background: none; background: none;

View file

@ -32,9 +32,7 @@ input[id="tracks-chart"] ~ .tracks-chart {
background: transparent; background: transparent;
} }
#tracks-recent:not(:checked) ~ [for="tracks-recent"]:hover, #tracks-recent:not(:checked) ~ [for="tracks-recent"]:is(:hover, :active),
#tracks-recent:not(:checked) ~ [for="tracks-recent"]:active, #tracks-chart:not(:checked) ~ [for="tracks-chart"]:is(:hover, :active) {
#tracks-chart:not(:checked) ~ [for="tracks-chart"]:hover,
#tracks-chart:not(:checked) ~ [for="tracks-chart"]:active {
color: var(--accent-color-hover); color: var(--accent-color-hover);
} }

View file

@ -20,8 +20,4 @@
left: 0; left: 0;
} }
} }
& + button[data-toggle-button]:has(+ *) {
margin: 0 0 var(--spacing-base);
}
} }

View file

@ -5,14 +5,11 @@ youtube-video {
overflow: hidden; overflow: hidden;
border: var(--border-default); border: var(--border-default);
border-radius: var(--border-radius-slight); border-radius: var(--border-radius-slight);
margin: var(--margin-vertical-base-horizontal-zero);
&:hover { &:hover {
border-color: var(--accent-color-hover); border: var(--border-default-hover);
transition: border var(--transition-duration-default) transition: border var(--transition-duration-default)
var(--transition-ease-in-out); var(--transition-ease-in-out);
} }
&:has(+ *) {
margin-bottom: var(--spacing-base);
}
} }

View file

@ -24,26 +24,28 @@
</h1> </h1>
</section> </section>
<div class="default-wrapper"> <div class="default-wrapper">
<p> <article class="intro">
<xsl:value-of select="/rss/channel/description" /> <p>
</p> <xsl:value-of select="/rss/channel/description" />
<p> </p>
<strong class="highlight-text">Subscribe by adding the URL below to your feed reader <p>
of choice.</strong> <strong class="highlight-text">Subscribe by adding the URL below to your feed reader
</p> of choice.</strong>
<p> </p>
<pre class="small"> <p>
<code><xsl:value-of select="rss/channel/atom:link/@href"/></code> <pre class="small">
</pre> <code><xsl:value-of select="rss/channel/atom:link/@href"/></code>
</p> </pre>
<p> </p>
<a href="/feeds">View more of the feeds from my site.</a> <p>
</p> <a href="/feeds">View more of the feeds from my site.</a>
</p>
</article>
<hr /> <hr />
<section> <section>
<xsl:for-each select="/rss/channel/item"> <xsl:for-each select="/rss/channel/item">
<div class="item"> <div class="item">
<p class="date">Published: <xsl:value-of select="pubDate" /></p> <time>Published: <xsl:value-of select="pubDate" /></time>
<h3> <h3>
<a> <a>
<xsl:attribute name="href"> <xsl:attribute name="href">

View file

@ -1,11 +1,11 @@
@layer reset, defaults, base, page, components, plugins; @layer reset, defaults, base, page, components, plugins;
/* style resets */ /* style resets */
@import url("./reset.css") layer(reset); @import url("./base/reset.css") layer(reset);
/* core defaults */ /* core defaults */
@import url("./defaults/fonts.css") layer(defaults); @import url("./base/fonts.css") layer(defaults);
@import url("./defaults/vars.css") layer(defaults); @import url("./base/vars.css") layer(defaults);
/* base styles */ /* base styles */
@import url("./base/index.css") layer(base); @import url("./base/index.css") layer(base);

View file

@ -8,9 +8,7 @@
.avatar-wrapper { .avatar-wrapper {
display: flex; display: flex;
align-items: center;
justify-content: center; justify-content: center;
margin-bottom: var(--spacing-sm);
width: 100%; width: 100%;
& img { & img {

View file

@ -1,32 +1,27 @@
:is(.book-entry, .book-focus) img {
height: auto;
aspect-ratio: var(--aspect-ratio-vertical);
}
.book-entry { .book-entry {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
gap: var(--spacing-sm); gap: var(--spacing-sm);
&:not(:last-of-type) {
padding-bottom: var(--spacing-base);
border-bottom: var(--border-gray);
}
@media screen and (min-width: 768px) { @media screen and (min-width: 768px) {
flex-direction: row; flex-direction: row;
gap: var(--spacing-base); gap: var(--spacing-base);
align-items: start; align-items: start;
} }
&:last-of-type {
border-bottom: 0;
margin-bottom: 0;
& .media-meta .description {
margin-bottom: 0;
}
}
& a:has(img) {
display: flex;
}
& img { & img {
max-width: calc(var(--sizing-3xl) * 4); max-width: calc(var(--sizing-3xl) * 4);
height: auto;
aspect-ratio: var(--aspect-ratio-vertical);
} }
& .media-meta { & .media-meta {
@ -38,8 +33,8 @@
align-items: start; align-items: start;
} }
& .description { & .description p:last-of-type {
margin-bottom: var(--spacing-base); margin-bottom: 0;
} }
& .progress-bar-wrapper { & .progress-bar-wrapper {
@ -55,9 +50,6 @@
} }
.book-focus { .book-focus {
margin-top: var(--spacing-base);
border-bottom: 0;
& .book-display { & .book-display {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -70,6 +62,10 @@
align-items: start; align-items: start;
} }
& img {
border: var(--border-default);
}
& .media-meta { & .media-meta {
width: 100%; width: 100%;
align-items: center; align-items: center;
@ -88,4 +84,4 @@
} }
} }
} }
} }

View file

@ -1,44 +1,34 @@
.contact-wrapper { .contact-wrapper {
display: flex; display: grid;
flex-direction: column; grid-template-columns: var(--grid-columns-one);
gap: var(--spacing-base);
@media screen and (min-width: 768px) { @media screen and (min-width: 768px) {
flex-direction: row; grid-template-columns: var(--grid-columns-two);
} }
& label.hp, & .hp,
& label > span { & label > span {
display: none; display: none;
} }
& textarea { & textarea {
height: calc(var(--sizing-3xl) * 5); height: calc(var(--sizing-3xl) * 5);
resize: none;
} }
& .column { & .column.description {
@media screen and (min-width: 768px) { & p:first-of-type {
width: 50%; margin-top: 0;
} }
&.description { ul {
& p:first-of-type { margin-bottom: 0;
margin-top: 0;
}
@media screen and (min-width: 768px) {
padding-right: var(--spacing-xl);
}
} }
} }
} }
.contact-success-wrapper { .contact-success-wrapper {
display: flex; text-align: center;
flex-direction: column;
justify-content: center;
align-items: center;
min-height: 60vh;
& h2 { & h2 {
margin: 0; margin: 0;

View file

@ -7,14 +7,11 @@
&:not(:last-of-type) { &:not(:last-of-type) {
border-bottom: var(--border-gray); border-bottom: var(--border-gray);
margin-bottom: var(--spacing-base); margin-bottom: var(--spacing-base);
padding-bottom: var(--spacing-base);
} }
& .date { & time {
display: block;
color: var(--gray-dark); color: var(--gray-dark);
font-size: var(--font-size-sm); font-size: var(--font-size-sm);
margin-bottom: 0;
} }
& h3 { & h3 {
@ -26,21 +23,15 @@
} }
} }
& p {
&:first-of-type {
margin-top: 0;
}
&:last-of-type {
margin-bottom: 0;
}
}
& ol > li p { & ol > li p {
display: inline; display: inline;
} }
& footer { & footer {
padding-bottom: var(--spacing-3xl); padding-bottom: var(--spacing-3xl);
& hr {
margin-top: 0;
}
} }
} }

View file

@ -2,7 +2,6 @@
display: grid; display: grid;
gap: var(--spacing-sm); gap: var(--spacing-sm);
grid-template-columns: var(--grid-columns-one); grid-template-columns: var(--grid-columns-one);
margin-bottom: var(--spacing-base);
@media screen and (min-width: 768px) { @media screen and (min-width: 768px) {
grid-template-columns: var(--grid-columns-two); grid-template-columns: var(--grid-columns-two);

View file

@ -16,4 +16,27 @@
height: var(--sizing-svg-sm); height: var(--sizing-svg-sm);
} }
} }
}
a:is(:hover, :active, :focus) .media-overlay::after {
border: var(--border-default-hover);
transition: border-color var(--transition-duration-default)
var(--transition-ease-in-out);
}
.media-overlay::after {
position: absolute;
z-index: 1;
content: "";
top: 0;
left: 0;
width: 100%;
height: 100%;
border: var(--border-default);
box-shadow: var(--box-shadow-media);
border-radius: var(--border-radius-slight);
}
.associated-media {
margin: var(--margin-vertical-base-horizontal-zero);
} }

View file

@ -1,23 +1,12 @@
.artist-focus,
.genre-focus {
border-bottom: 0;
}
.genre-focus [data-toggle-content] p:last-of-type {
font-size: var(--font-size-sm);
}
.artist-focus { .artist-focus {
margin-top: var(--spacing-base);
& img { & img {
border: var(--border-default); border: var(--border-default);
aspect-ratio: var(--aspect-ratio-square);
width: 100%; width: 100%;
height: auto; height: auto;
aspect-ratio: var(--aspect-ratio-square);
@media screen and (min-width: 768px) { @media screen and (min-width: 768px) {
max-width: 240px; max-width: calc(var(--sizing-3xl) * 6.75);
} }
} }
@ -43,11 +32,6 @@
& table + p { & table + p {
font-size: var(--font-size-sm); font-size: var(--font-size-sm);
margin-top: var(--spacing-base); margin: var(--spacing-base) 0 0;
margin-bottom: 0;
} }
} }
.concert-list {
margin-top: 0;
}

View file

@ -1,76 +1,29 @@
a:hover > .watching.hero::after, .watching.hero {
a:active > .watching.hero::after { position: relative;
border-color: var(--accent-color-hover);
}
.watching { & img {
&.hero {
position: relative;
display: flex;
aspect-ratio: var(--aspect-ratio-banner); aspect-ratio: var(--aspect-ratio-banner);
& img {
aspect-ratio: var(--aspect-ratio-banner);
height: auto;
width: 100%;
}
& .meta-text {
color: white;
position: absolute;
left: var(--spacing-sm);
bottom: var(--spacing-sm);
z-index: 2;
display: flex;
flex-direction: column;
& .header {
font-weight: var(--font-weight-bold);
}
& .subheader {
font-size: var(--font-size-sm);
display: inline-flex;
gap: var(--spacing-xs);
}
& .header,
& .subheader {
line-height: var(--line-height-md);
text-shadow: var(--text-shadow-default);
}
}
&::after {
position: absolute;
z-index: 1;
content: "";
top: 0;
left: 0;
box-shadow: var(--box-shadow-media);
width: 100%;
height: 100%;
border: var(--border-default);
border-radius: var(--border-radius-slight);
transition: border-color var(--transition-duration-default)
var(--transition-ease-in-out);
}
} }
&.focus { & .meta-text {
margin-top: var(--spacing-base); color: var(--color-lightest);
border-bottom: 0; position: absolute;
z-index: 2;
left: var(--spacing-sm);
bottom: var(--spacing-sm);
& .media-meta { & .header {
margin: var(--margin-vertical-base-horizontal-zero); font-weight: var(--font-weight-bold);
} }
& .footnotes { & .subheader {
padding-bottom: 0; font-size: var(--font-size-sm);
}
& .header,
& .subheader {
line-height: var(--line-height-md);
text-shadow: var(--text-shadow-default);
} }
} }
} }
a + .poster.grid {
margin-top: var(--spacing-base);
}

View file

@ -1,8 +1,11 @@
.webring-wrapper { .webring-wrapper,
.webring-navigation {
display: flex; display: flex;
flex-direction: column;
align-items: center; align-items: center;
justify-content: center; }
.webring-wrapper {
flex-direction: column;
text-align: center; text-align: center;
margin: var(--margin-vertical-base-horizontal-zero); margin: var(--margin-vertical-base-horizontal-zero);
@ -11,13 +14,7 @@
} }
& .webring-navigation { & .webring-navigation {
display: flex;
align-items: center;
justify-content: center; justify-content: center;
gap: var(--spacing-sm); gap: var(--spacing-sm);
& a {
display: flex;
}
} }
} }

View file

@ -5,7 +5,7 @@
storage="local" storage="local"
transition-duration="10ms" transition-duration="10ms"
> >
<span class="loading client-side">&nbsp;{{ nowPlaying }}</span> <span class="loading client-side">{{ nowPlaying }}</span>
<span class="content"></span> <span class="content"></span>
<noscript> <noscript>
<span>{{ nowPlaying }}</span> <span>{{ nowPlaying }}</span>

View file

@ -1,3 +1,4 @@
<article class="intro"> <article class="intro">
{{ intro }} {{ intro }}
<p class="music">{% render "blocks/now-playing.liquid", nowPlaying:nowPlaying %}</p>
</article> </article>

View file

@ -10,7 +10,6 @@
Recent activity Recent activity
</h2> </h2>
<ul> <ul>
<li><span class="music">Last track listened to:</span> {% render "blocks/now-playing.liquid", nowPlaying:nowPlaying %}</li>
<li><span class="music">Top track this week:</span> {{ track.track_name }} by <a href="{{ track.artist_url }}">{{ track.artist_name }}</a></li> <li><span class="music">Top track this week:</span> {{ track.track_name }} by <a href="{{ track.artist_url }}">{{ track.artist_name }}</a></li>
<li><span class="tv">Last episode watched:</span> <strong class="highlight-text">{{ show.formatted_episode }}</strong> of <a href="{{ show.url }}">{{ show.title }}</a></li> <li><span class="tv">Last episode watched:</span> <strong class="highlight-text">{{ show.formatted_episode }}</strong> of <a href="{{ show.url }}">{{ show.title }}</a></li>
<li><span class="movies">Last movie watched:</span> <a href="{{ movie.url }}">{{ movie.title }}</a>{%- if movie.rating %} ({{ movie.rating }}){%- endif -%}</li> <li><span class="movies">Last movie watched:</span> <a href="{{ movie.url }}">{{ movie.title }}</a>{%- if movie.rating %} ({{ movie.rating }}){%- endif -%}</li>

View file

@ -6,7 +6,7 @@
{%- assign alt = item.grid.alt | replaceQuotes -%} {%- assign alt = item.grid.alt | replaceQuotes -%}
{%- assign imageUrl = item.grid.image -%} {%- assign imageUrl = item.grid.image -%}
<a href="{{ item.grid.url }}" title="{{ alt }}"> <a href="{{ item.grid.url }}" title="{{ alt }}">
<div class="item"> <div class="item media-overlay">
<div class="meta-text"> <div class="meta-text">
<div class="header">{{ item.grid.title }}</div> <div class="header">{{ item.grid.title }}</div>
<div class="subheader">{{ item.grid.subtext }}</div> <div class="subheader">{{ item.grid.subtext }}</div>

View file

@ -1,5 +1,5 @@
<a href="{{ movie.url }}"> <a href="{{ movie.url }}">
<div class="watching hero"> <div class="watching media-overlay hero">
<div class="meta-text"> <div class="meta-text">
<div class="header">{{ movie.title }}</div> <div class="header">{{ movie.title }}</div>
<div class="subheader"> <div class="subheader">

View file

@ -12,7 +12,7 @@ schema: books-year
{%- assign currentYear = 'now' | date: "%Y" -%} {%- assign currentYear = 'now' | date: "%Y" -%}
{%- assign yearString = year.value | append: '' -%} {%- assign yearString = year.value | append: '' -%}
{%- assign currentYearString = currentYear | append: '' -%} {%- assign currentYearString = currentYear | append: '' -%}
<a href="/books" title="Go back to the books index page">{% tablericon "arrow-left" %} Back to books</a> <a href="/books" class="back-link">{% tablericon "arrow-left" %} Back to books</a>
<h2>{{ year.value }} / Books</h2> <h2>{{ year.value }} / Books</h2>
{% if yearString == currentYearString %} {% if yearString == currentYearString %}
<p>I've finished <strong class="highlight-text">{{ bookData.size }} books</strong> this year.{%- if favoriteBooks %} Among my favorites are {{ favoriteBooks }}.{%- endif -%}</p> <p>I've finished <strong class="highlight-text">{{ bookData.size }} books</strong> this year.{%- if favoriteBooks %} Among my favorites are {{ favoriteBooks }}.{%- endif -%}</p>

View file

@ -1,6 +1,6 @@
--- ---
permalink: / permalink: /
--- ---
{% render "home/intro.liquid" intro:globals.intro %} {% render "home/intro.liquid" intro:globals.intro, nowPlaying:nowPlaying.content %}
{% render "home/recent-activity.liquid" music:music, nowPlaying:nowPlaying.content, books:books.currentYear, tv:tv, movies:movies, links:links %} {% render "home/recent-activity.liquid" music:music, books:books.currentYear, tv:tv, movies:movies, links:links %}
{% render "home/recent-posts.liquid" posts:posts %} {% render "home/recent-posts.liquid" posts:posts %}

View file

@ -11,7 +11,7 @@ permalink: "/music/concerts/{% if pagination.pageNumber > 0 %}{{ pagination.page
<p>These are concerts I've attended (not all of them — just the ones I could remember or glean from emails, photo metadata et al). I've been to at least <strong class="highlight-text">{{ concerts | size }}</strong> shows. <a href="/music">You can also take a look at the music I've been listening to lately</a>.</p> <p>These are concerts I've attended (not all of them — just the ones I could remember or glean from emails, photo metadata et al). I've been to at least <strong class="highlight-text">{{ concerts | size }}</strong> shows. <a href="/music">You can also take a look at the music I've been listening to lately</a>.</p>
<hr /> <hr />
{%- endif -%} {%- endif -%}
<ul class="concert-list"> <ul>
{%- for concert in pagination.items -%} {%- for concert in pagination.items -%}
{%- capture artistName -%} {%- capture artistName -%}
{% if concert.artist.url %} {% if concert.artist.url %}

View file

@ -8,7 +8,7 @@ schema: music-index
<h2>{{ title }}</h2> <h2>{{ title }}</h2>
<p>I've listened to <strong class="highlight-text">{{ music.week.artists.size }} artists</strong>, <strong class="highlight-text">{{ music.week.albums.size }} albums</strong> and <strong class="highlight-text">{{ music.week.totalTracks }} tracks</strong> this week. Most of that has been {{ music.week.genres | mediaLinks: "genre", 5 }}.</p> <p>I've listened to <strong class="highlight-text">{{ music.week.artists.size }} artists</strong>, <strong class="highlight-text">{{ music.week.albums.size }} albums</strong> and <strong class="highlight-text">{{ music.week.totalTracks }} tracks</strong> this week. Most of that has been {{ music.week.genres | mediaLinks: "genre", 5 }}.</p>
<p><strong class="highlight-text">Take a look at what I've listened to</strong> <a href="/music/this-month">this month</a> or <a href="/music/concerts">check out the concerts I've been to.</a></p> <p><strong class="highlight-text">Take a look at what I've listened to</strong> <a href="/music/this-month">this month</a> or <a href="/music/concerts">check out the concerts I've been to.</a></p>
<p><span class="music">Last track listened to:</span> {% render "blocks/now-playing.liquid", nowPlaying:nowPlaying.content %}</p> <p class="music">{% render "blocks/now-playing.liquid", nowPlaying:nowPlaying.content %}</p>
<hr /> <hr />
<h3 id="artists"> <h3 id="artists">
{% tablericon "microphone-2" %} {% tablericon "microphone-2" %}

View file

@ -7,7 +7,7 @@ pagination:
permalink: "/watching/favorite-movies/{% if pagination.pageNumber > 0 %}{{ pagination.pageNumber }}/{% endif %}index.html" permalink: "/watching/favorite-movies/{% if pagination.pageNumber > 0 %}{{ pagination.pageNumber }}/{% endif %}index.html"
schema: favorite-movies schema: favorite-movies
--- ---
<a href="/watching" title="Go back to the watching index page">{% tablericon "arrow-left" %} Back to watching</a> <a href="/watching" class="back-link">{% tablericon "arrow-left" %} Back to watching</a>
{% if pagination.pageNumber == 0 %} {% if pagination.pageNumber == 0 %}
<h2 class="watching">{{ title }}</h2> <h2 class="watching">{{ title }}</h2>
<p>These are my favorite movies. There are many like them, but these are mine.</p> <p>These are my favorite movies. There are many like them, but these are mine.</p>

View file

@ -7,7 +7,7 @@ pagination:
permalink: "/watching/favorite-shows/{% if pagination.pageNumber > 0 %}{{ pagination.pageNumber }}/{% endif %}index.html" permalink: "/watching/favorite-shows/{% if pagination.pageNumber > 0 %}{{ pagination.pageNumber }}/{% endif %}index.html"
schema: favorite-shows schema: favorite-shows
--- ---
<a href="/watching" title="Go back to the watching index page">{% tablericon "arrow-left" %} Back to watching</a> <a href="/watching" class="back-link">{% tablericon "arrow-left" %} Back to watching</a>
{% if pagination.pageNumber == 0 %} {% if pagination.pageNumber == 0 %}
<h2 class="watching">{{ title }}</h2> <h2 class="watching">{{ title }}</h2>
<p>These are my favorite shows. There are many like them, but these are mine.</p> <p>These are my favorite shows. There are many like them, but these are mine.</p>

View file

@ -231,7 +231,7 @@ export const generateArtistHTML = (artist, globals) => {
: ""; : "";
return ` return `
<a href="/music">${ICON_MAP.arrowLeft} Back to music</a> <a href="/music" class="back-link">${ICON_MAP.arrowLeft} Back to music</a>
<article class="artist-focus"> <article class="artist-focus">
<div class="artist-display"> <div class="artist-display">
<img <img
@ -301,17 +301,17 @@ export const generateBookHTML = (book, globals) => {
const percentage = book["progress"] ? `${book["progress"]}%` : ""; const percentage = book["progress"] ? `${book["progress"]}%` : "";
const status = const status =
book["status"] === "finished" book["status"] === "finished"
? `Finished on <strong class="highlight-text">${formatDate( ? `<span class="sub-meta">Finished on <strong class="highlight-text">${formatDate(
book["date_finished"] book["date_finished"]
)}</strong>` )}</strong></span>`
: percentage : percentage
? `<div class="progress-bar-wrapper" title="${percentage}"> ? `<div class="progress-bar-wrapper" title="${percentage}">
<div style="width:${percentage}" class="progress-bar"></div> <div class="progress-bar" style="width:${percentage}"></div>
</div>` </div>`
: ""; : "";
return ` return `
<a href="/books">${ <a href="/books" class="back-link">${
ICON_MAP["arrowLeft"] ICON_MAP["arrowLeft"]
} Back to books</a> } Back to books</a>
<article class="book-focus"> <article class="book-focus">
@ -352,7 +352,7 @@ export const generateBookHTML = (book, globals) => {
? `<span class="sub-meta tattoo">${ICON_MAP["needle"]} I have a tattoo inspired by this book!</span>` ? `<span class="sub-meta tattoo">${ICON_MAP["needle"]} I have a tattoo inspired by this book!</span>`
: "" : ""
} }
${status ? `<span class="sub-meta">${status}</span>` : ""} ${status ? status : ""}
</div> </div>
</div> </div>
${ ${
@ -373,7 +373,7 @@ export const generateGenreHTML = (genre) => {
const mediaLinks = generateMediaLinks(genre["artists"], "artist", 5); const mediaLinks = generateMediaLinks(genre["artists"], "artist", 5);
return ` return `
<a href="/music">${ <a href="/music" class="back-link">${
ICON_MAP["arrowLeft"] ICON_MAP["arrowLeft"]
} Back to music</a> } Back to music</a>
<h2>${genre["name"]}</h2> <h2>${genre["name"]}</h2>
@ -411,7 +411,7 @@ export const generateWatchingHTML = (media, globals, type) => {
media["last_watched"] || (isShow && media["episode"]?.["last_watched_at"]); media["last_watched"] || (isShow && media["episode"]?.["last_watched_at"]);
return ` return `
<a href="/watching">${ <a href="/watching" class="back-link">${
ICON_MAP.arrowLeft ICON_MAP.arrowLeft
} Back to watching</a> } Back to watching</a>
<article class="watching focus"> <article class="watching focus">