// VARIABLES AND IMPORTS // --------------------------------------------------------------------------- $clr-bg: oklch(22.49% 0.008 297.21); $clr-fg: oklch(98.51% 0 0); $clr-primary: oklch(82.67% 0.096 307.5); $clr-secondary: oklch(from $clr-primary l c 240); // hue-shifted copy $gap: 1rem; $max-width: 50rem; $mobile: 980px; @import "syntax"; // MIXINS // --------------------------------------------------------------------------- @mixin phone-only { @media (max-width: $mobile) { @content; } } @mixin std-block { display: block; margin: 0; } // GLOBAL RESET & TYPOGRAPHY // --------------------------------------------------------------------------- *, *::before, *::after { box-sizing: border-box; } * { padding: 0; margin: 0; transition: .1s ease-in-out; font-family: "Atkinson Hyperlegible Next", sans-serif; font-optical-sizing: auto; text-transform: lowercase; } html { font-size: 16px; } // 1rem base body { display: flex; flex-direction: column; align-items: center; gap: $gap; padding: 5rem $gap $gap; overflow-x: hidden; color: $clr-fg; background-color: black; background: url("/assets/images/noise.png"), radial-gradient(circle at center, $clr-bg, transparent), radial-gradient(circle at bottom left, #27577D, transparent), radial-gradient(circle at top right, #952EA4 0%, transparent), radial-gradient(circle at center right, #6949A5 0%, transparent), radial-gradient(circle at top center, #336BA0 0%, transparent); background-attachment: fixed; } // LAYOUT WRAPPER // --------------------------------------------------------------------------- body>* { // every top-level section display: flex; flex-direction: column; gap: $gap; width: 100%; max-width: $max-width; padding: 1.5rem 2.5rem; background: $clr-bg; outline: .2rem solid $clr-bg; outline-offset: .2rem; } @include phone-only { body { padding: 0; gap: .2rem; } body>* { outline: 0; } } // NAVIGATION // --------------------------------------------------------------------------- nav { position: fixed; transform: translateX(28rem); display: flex; flex-direction: column; align-items: center; gap: $gap; padding: 1rem 2rem; width: 0rem; svg { width: 2rem; height: 2rem; fill: $clr-fg; } a { writing-mode: vertical-rl; text-orientation: sideways; text-decoration: none; color: $clr-fg; } hr { width: 100%; } } @include phone-only { nav { position: static; transform: none; flex-direction: row; justify-content: space-between; width: 100%; a { writing-mode: horizontal-tb; } hr { display: none; } } } // TYPOGRAPHIC ELEMENTS // --------------------------------------------------------------------------- p, ul, span { font-size: 1.2rem; text-align: justify; } h1, h2, h3, h4, h5, h6 { @include std-block; padding-top: .5rem; font-size: 1.75rem; } // auto-generate heading prefixes @for $i from 1 through 6 { h#{$i}::before { $hashes: ""; @for $_ from 1 through $i { $hashes: $hashes + "#" } content: "#{$hashes} "; color: oklch(82.67% .087 #{280 + ($i - 1) * 40}); } } // LISTS // --------------------------------------------------------------------------- ul { display: flex; flex-direction: column; gap: .5rem; list-style: none; li::before { content: "~"; padding: 0 .25rem 0 .5rem; color: oklch(82.67% .087 180); } } // rainbow list items @for $i from 1 through 15 { ul li:nth-child(n+#{$i})::before { color: oklch(82.67% .087 #{100 + ($i - 1) * 80}); } } // LINKS & MISC // --------------------------------------------------------------------------- a { color: $clr-primary; &:hover { filter: brightness(.75); } } hr { $c: oklch(from $clr-fg .45 c h); background: $c; border-color: $c; } img { user-select: none; } address { opacity: .5; text-align: right; margin-top: -2.1lh; margin-bottom: .5rem; } footer { gap: 0; >* { text-align: center; font-size: 1rem; opacity: .5; } } // CODE BLOCKS // --------------------------------------------------------------------------- div.sourceCode { padding: .2rem; overflow: hidden; font-family: "Atkinson Hyperlegible Mono", monospace; background-color: black; background: url("/images/noise.png"), radial-gradient(circle at center, $clr-bg, transparent), radial-gradient(circle at bottom left, #27577D, transparent), radial-gradient(circle at top right, #952EA4 0%, transparent), radial-gradient(circle at center right, #6949A5 0%, transparent), radial-gradient(circle at top center, #336BA0 0%, transparent); background-attachment: scroll; outline: 0.2rem solid $clr-bg; outline-offset: 0.2rem; >* { background: $clr-bg; background-attachment: fixed; padding: 1.2rem; overflow: auto; } * { font-family: "Atkinson Hyperlegible Mono", monospace; text-transform: none; font-size: 1.05rem; } }