Mostly audio stuff

This commit is contained in:
Dan 2025-12-13 15:17:46 +00:00
parent bdd00ec9e8
commit 2f5f4dbea4
28 changed files with 811 additions and 710 deletions

View file

@ -45,17 +45,16 @@ if (window.terminal) {
// PAGE NAVIGATION
window.terminal.registerCommand(
"latest",
"View the latest post, regardles of section",
() => {
let latestPostLink = document.getElementById("latest-post-link");
window.location.href = latestPostLink.textContent;
},
);
// About command
window.terminal.registerCommand("about", "About this site", () => {
window.location.href = "/about/";
});
window.terminal.registerCommand(
"music",
"My music interests and audio gear",
() => {
window.location.href = "/audio/";
},
);
}

View file

@ -19,3 +19,61 @@ if (document.getElementById("starfield")) {
starfield.appendChild(star);
}
}
(function () {
const container = document.querySelector(".record-shelf-container");
// Exit if the record shelf doesn't exist on this page
if (!container) {
return;
}
const recordSlots = container.querySelectorAll(".record-slot");
const albumContents = container.querySelectorAll(".album-content");
// Exit if we don't have the necessary elements
if (!recordSlots.length || !albumContents.length) {
return;
}
// Set first album as active by default
const firstSlot = recordSlots[0];
if (firstSlot) {
const firstSleeve = firstSlot.querySelector(".record-sleeve");
if (firstSleeve) {
firstSleeve.classList.add("active");
}
}
recordSlots.forEach((slot) => {
slot.addEventListener("click", function (e) {
e.preventDefault();
const index = this.getAttribute("data-album-index");
// Hide all content
albumContents.forEach((content) => (content.style.display = "none"));
// Show selected content
const selectedContent = container.querySelector(
`[data-content-index="${index}"]`,
);
if (selectedContent) {
selectedContent.style.display = "block";
}
// Remove active class from all sleeves
recordSlots.forEach((s) => {
const sleeve = s.querySelector(".record-sleeve");
if (sleeve) {
sleeve.classList.remove("active");
}
});
// Add active class to clicked sleeve
const clickedSleeve = this.querySelector(".record-sleeve");
if (clickedSleeve) {
clickedSleeve.classList.add("active");
}
});
});
})();

View file

@ -61,9 +61,9 @@ class TerminalShell {
latestPostDate.innerText +
")",
);
this.printHTML(
"<span class='info'>&nbsp;- Type \"latest\" to view it.</span>",
);
// this.printHTML(
// "<span class='info'>&nbsp;- Type \"latest\" to view it.</span>",
// );
this.printHTML("&nbsp;");
this.printHTML(
@ -71,7 +71,7 @@ class TerminalShell {
);
this.printHTML(
'<span class="warning">This site is under construction. There\'s nothing of interest here yet.</span>',
'<span class="warning">This site is under construction. There\'s not much of interest here yet.</span>',
);
this.inputContainer.classList.remove("hidden");

View file

@ -62,3 +62,34 @@ $breakpoints: (
}
}
}
@mixin scrollbar-custom(
$color: greenyellow,
$width: 8px,
$track-bg: transparent
) {
scrollbar-color: $color $track-bg;
scrollbar-width: thin;
&::-webkit-scrollbar {
width: $width;
}
&::-webkit-scrollbar-track {
background: $track-bg;
}
&::-webkit-scrollbar-thumb {
background-color: $color;
border-radius: calc($width / 2);
}
&::-webkit-scrollbar-thumb:hover {
background-color: darken($color, 10%);
}
}
// Usage
.scrollable-child {
@include scrollbar-custom(greenyellow, 10px);
}

View file

@ -7,249 +7,283 @@
* Use a better box model (opinionated).
*/
html {
box-sizing: border-box;
}
* {
html {
box-sizing: border-box;
}
* {
box-sizing: inherit;
&::before,
&::after {
box-sizing: inherit;
&::before, &::after {
box-sizing: inherit;
}
}
/**
}
/**
* Use a more readable tab size (opinionated).
*/
:root {
-moz-tab-size: 4;
tab-size: 4;
}
/**
:root {
-moz-tab-size: 4;
tab-size: 4;
}
/**
* 1. Correct the line height in all browsers.
* 2. Prevent adjustments of font size after orientation changes in iOS.
*/
html {
line-height: 1.15;
/* 1 */
-webkit-text-size-adjust: 100%;
/* 2 */
}
/* Sections
html {
line-height: 1.15;
/* 1 */
-webkit-text-size-adjust: 100%;
/* 2 */
}
/* Sections
========================================================================== */
/**
/**
* Remove the margin in all browsers.
*/
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
}
/**
body {
margin: 0;
font-family:
-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial,
sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}
/**
* Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
*/
/* Grouping content
/* Grouping content
========================================================================== */
/**
/**
* Add the correct height in Firefox.
*/
hr {
height: 0;
}
/* Text-level semantics
hr {
height: 0;
}
/* Text-level semantics
========================================================================== */
/**
/**
* Add the correct text decoration in Chrome, Edge, and Safari.
*/
abbr[title] {
text-decoration: underline dotted;
}
/**
abbr[title] {
text-decoration: underline dotted;
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b, strong {
font-weight: bolder;
}
/**
b,
strong {
font-weight: bolder;
}
/**
* 1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
* 2. Correct the odd `em` font sizing in all browsers.
*/
code, kbd, samp, pre {
font-family: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;
/* 1 */
font-size: 1em;
/* 2 */
}
/**
code,
kbd,
samp,
pre {
font-family:
SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace;
/* 1 */
font-size: 1em;
/* 2 */
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/
sub, sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Forms
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Forms
========================================================================== */
/**
/**
* 1. Change the font styles in all browsers.
* 2. Remove the margin in Firefox and Safari.
*/
button, input, optgroup, select, textarea {
font-family: inherit;
/* 1 */
font-size: 100%;
/* 1 */
line-height: 1.15;
/* 1 */
margin: 0;
/* 2 */
}
/**
button,
input,
optgroup,
select,
textarea {
font-family: inherit;
/* 1 */
font-size: 100%;
/* 1 */
line-height: 1.15;
/* 1 */
margin: 0;
/* 2 */
}
/**
* Remove the inheritance of text transform in Edge and Firefox.
* 1. Remove the inheritance of text transform in Firefox.
*/
button, select {
/* 1 */
text-transform: none;
}
/**
button,
select {
/* 1 */
text-transform: none;
}
/**
* Correct the inability to style clickable types in iOS and Safari.
*/
button, [type='button'], [type='reset'], [type='submit'] {
-webkit-appearance: button;
}
/**
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner, [type='button']::-moz-focus-inner, [type='reset']::-moz-focus-inner, [type='submit']::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring, [type='button']:-moz-focusring, [type='reset']:-moz-focusring, [type='submit']:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Correct the padding in Firefox.
*/
fieldset {
padding: 0.35em 0.75em 0.625em;
}
/**
fieldset {
padding: 0.35em 0.75em 0.625em;
}
/**
* Remove the padding so developers are not caught out when they zero out `fieldset` elements in all browsers.
*/
legend {
padding: 0;
}
/**
legend {
padding: 0;
}
/**
* Add the correct vertical alignment in Chrome and Firefox.
*/
progress {
vertical-align: baseline;
}
/**
progress {
vertical-align: baseline;
}
/**
* Correct the cursor style of increment and decrement buttons in Safari.
*/
[type='number'] {
&::-webkit-inner-spin-button, &::-webkit-outer-spin-button {
height: auto;
}
[type="number"] {
&::-webkit-inner-spin-button,
&::-webkit-outer-spin-button {
height: auto;
}
/**
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type='search'] {
-webkit-appearance: textfield;
/* 1 */
outline-offset: -2px;
/* 2 */
&::-webkit-search-decoration {
-webkit-appearance: none;
}
[type="search"] {
-webkit-appearance: textfield;
/* 1 */
outline-offset: -2px;
/* 2 */
&::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
}
/**
* Remove the inner padding in Chrome and Safari on macOS.
*/
/**
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button;
/* 1 */
font: inherit;
/* 2 */
}
/* Interactive
::-webkit-file-upload-button {
-webkit-appearance: button;
/* 1 */
font: inherit;
/* 2 */
}
/* Interactive
========================================================================== */
/*
/*
* Add the correct display in Chrome and Safari.
*/
summary {
display: list-item;
}
summary {
display: list-item;
}
p {
line-height: 1.5em;
letter-spacing: 0.01em;
word-spacing: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
}

View file

@ -6,6 +6,10 @@
color: #fff;
text-align: center;
a {
color: #fff;
}
> .page-content {
position: absolute;
left: 50%;
@ -20,7 +24,77 @@
padding-top: 400px;
}
.neon-sign {
.audio-intro {
width: 100%;
margin: auto;
text-align: left;
margin-bottom: 30px;
display: grid;
grid-template-columns: 1fr auto 1fr;
gap: 2rem;
> div > .neon-sign {
position: relative;
top: auto;
left: auto;
right: auto;
bottom: auto;
transform: none;
margin-bottom: 40px;
> .neon-text {
font-size: 3rem;
animation-delay: 2.5s;
line-height: 1rem;
> span {
display: block;
position: absolute;
top: 50px;
left: 50%;
transform: rotate(110deg);
letter-spacing: -20%;
animation-delay: 2.3s;
}
}
}
> *:nth-child(3n + 2) {
align-self: center;
font-size: 3rem;
}
@include media-down(xl) {
width: 100%;
grid-template-columns: 1fr;
> *:nth-child(3n + 2) {
display: none;
}
}
ul {
margin-bottom: 2rem;
li {
margin-left: 2rem;
}
}
.intro-ipod {
float: left;
@include media-down(lg) {
display: none;
}
}
p {
margin-bottom: 1rem;
}
}
> .neon-sign {
position: absolute;
top: 0;
left: 50%;
@ -39,11 +113,11 @@
.record-shelf-container {
.shelf {
display: flex;
gap: 5rem;
gap: 5%;
position: relative;
overflow: visible;
padding-left: 2em;
padding-right: 2em;
padding-left: 5%;
padding-right: 5%;
}
.shelf::before {
@ -65,10 +139,9 @@
.record-slot {
position: relative;
width: 200px;
min-width: 140px;
height: 200px;
perspective: 1000px;
width: 20%;
min-width: 100px;
aspect-ratio: 1/1;
}
.record-sleeve {
@ -76,11 +149,18 @@
height: 100%;
position: relative;
transition: transform 0.3s ease;
&.active {
.sleeve-front {
border: 3px solid white;
}
}
}
.sleeve-front {
width: 100%;
height: 100%;
aspect-ratio: 1/1;
position: absolute;
border-radius: 2px;
box-shadow:
@ -181,6 +261,134 @@
transform: translateX(-10%);
}
}
.audio-shelf-text {
width: 60%;
margin: auto;
margin-top: 50px;
margin-bottom: 50px;
text-align: left;
border: 1px solid white;
padding: 30px;
border-radius: 10px;
backdrop-filter: blur(10px);
background-color: rgba(255, 255, 255, 0.1);
@include media-down(lg) {
width: 100%;
padding: 10px;
}
p {
margin-bottom: 1rem;
}
}
.audio-gear {
margin: 2rem 0;
> .neon-sign {
position: relative;
top: auto;
left: auto;
right: auto;
bottom: auto;
transform: none;
margin-bottom: 90px;
> .neon-text {
font-size: 5rem;
animation-delay: 2.5s;
line-height: 1rem;
> span {
display: block;
position: absolute;
top: 50px;
left: 50%;
transform: rotate(80deg);
letter-spacing: -20%;
animation-delay: 2.3s;
}
}
}
.gear-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 1.5rem;
margin-top: 1.5rem;
@media (max-width: 768px) {
grid-template-columns: 1fr;
}
.gear-item {
backdrop-filter: blur(10px);
background-color: rgba(255, 255, 255, 0.1);
border: 1px solid white;
border-radius: 4px;
padding: 1.5rem;
transition: all 0.3s ease;
display: flex;
flex-direction: column;
gap: 1rem;
&:hover {
transform: translateY(-2px);
}
.gear-icon {
font-size: 2rem;
text-align: center;
}
.gear-content {
display: flex;
flex-direction: column;
gap: 0.5rem;
flex: 1;
}
}
}
.gear-title {
font-size: 1.2rem;
margin: 0;
color: var(--neon-cyan);
font-family: var(--mono-font, monospace);
}
.gear-category {
font-size: 0.85rem;
color: var(--neon-magenta);
text-transform: uppercase;
letter-spacing: 0.05em;
opacity: 0.8;
}
.gear-summary {
font-size: 0.9rem;
line-height: 1.5;
opacity: 0.85;
margin: 0.5rem 0;
flex: 1;
}
.gear-link {
color: var(--neon-cyan);
text-decoration: none;
font-size: 0.9rem;
margin-top: auto;
transition: color 0.3s ease;
&:hover {
color: var(--neon-magenta);
text-decoration: underline;
}
}
}
}
.starfield-full {

View file

@ -1,3 +1,4 @@
@import "normalize";
@import "mixins";
@import "partials/global-styles";
@ -17,7 +18,7 @@
@import "pages/about";
@import "pages/audio";
@import url("https://fonts.googleapis.com/css2?family=Caveat:wght@400;700&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Caveat:wght@400..700&family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&family=Neonderthaw&display=swap");
@font-face {
font-family: "DSEG7-Classic";
@ -48,7 +49,7 @@
body {
width: 100%;
height: 100vh;
font-family: "Courier New", monospace;
font-family: "Lato", sans-serif;
background: #1a1a1a;
position: relative;
}
@ -291,6 +292,12 @@ body {
background: black;
color: greenyellow;
font-family: monospace;
> .scroll {
overflow: scroll;
max-height: 100%;
@include scrollbar-custom(#0f0, 3px);
}
}
.crt a {
@ -1616,9 +1623,6 @@ body {
border-radius: 50%;
}
/* Import a nice cursive font */
@import url("https://fonts.googleapis.com/css2?family=Neonderthaw&display=swap");
.navigation {
position: absolute;
bottom: 10%;