diff options
| author | Alexander Kassouni <alex@kassouni.net> | 2026-09-28 21:35:50 -0700 |
|---|---|---|
| committer | Alexander Kassouni <alex@kassouni.net> | 2026-09-28 21:35:50 -0700 |
| commit | a570da443586fa3b3490b5add88ea5932456a5b3 (patch) | |
| tree | 41d45d56ef31b7e632578a7e384e7cb4bf25911f /site/sass | |
| parent | 151d2de0894d726de80d8702aea3335b9389de6f (diff) | |
site
Diffstat (limited to 'site/sass')
| -rw-r--r-- | site/sass/_fonts.scss | 28 | ||||
| -rw-r--r-- | site/sass/_palette.scss | 51 | ||||
| -rw-r--r-- | site/sass/style.scss | 122 |
3 files changed, 201 insertions, 0 deletions
diff --git a/site/sass/_fonts.scss b/site/sass/_fonts.scss new file mode 100644 index 0000000..2299bca --- /dev/null +++ b/site/sass/_fonts.scss @@ -0,0 +1,28 @@ +@use "sass:list"; + +$-faces: ( + 100: ("Thin", "ThinItalic"), + 200: ("ExtraLight", "ExtraLightItalic"), + 300: ("Light", "LightItalic"), + 400: ("Regular", "Italic"), + 450: ("Text", "TextItalic"), + 500: ("Medium", "MediumItalic"), + 600: ("SemiBold", "SemiBoldItalic"), + 700: ("Bold", "BoldItalic"), +); + +$-styles: normal italic; + +@each $weight, $names in $-faces { + @for $i from 1 through 2 { + @font-face { + font-family: "IBM Plex Mono"; + src: url("/fonts/mono/IBMPlexMono-#{list.nth($names, $i)}.woff2") format("woff2"); + font-weight: $weight; + font-style: list.nth($-styles, $i); + font-display: swap; + } + } +} + +$mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; diff --git a/site/sass/_palette.scss b/site/sass/_palette.scss new file mode 100644 index 0000000..b61eb94 --- /dev/null +++ b/site/sass/_palette.scss @@ -0,0 +1,51 @@ +@mixin ayu-dark { + color-scheme: dark; + + --bg: #0F1419; // base00 default background + --bg-alt: #131721; // base01 raised background + --bg-sel: #272D38; // base02 selection background + --grey: #3E4B59; // base03 comments, invisibles + --fg-dim: #BFBDB6; // base04 muted foreground + --fg: #E6E1CF; // base05 default foreground + --fg-alt: #E6E1CF; // base06 + --fg-bright: #F3F4F5; // base07 brightest foreground + + --red: #F07178; // base08 + --orange: #FF8F40; // base09 + --yellow: #FFB454; // base0A + --green: #B8CC52; // base0B + --cyan: #95E6CB; // base0C + --blue: #59C2FF; // base0D + --purple: #D2A6FF; // base0E + --brown: #E6B673; // base0F +} + +@mixin ayu-light { + color-scheme: light; + + --bg: #FAFAFA; // base00 + --bg-alt: #F3F4F5; // base01 + --bg-sel: #F8F9FA; // base02 + --grey: #ABB0B6; // base03 + --fg-dim: #828C99; // base04 + --fg: #5C6773; // base05 + --fg-alt: #242936; // base06 + --fg-bright: #1A1F29; // base07 + + --red: #F07178; // base08 + --orange: #FA8D3E; // base09 + --yellow: #F2AE49; // base0A + --green: #86B300; // base0B + --cyan: #4CBF99; // base0C + --blue: #36A3D9; // base0D + --purple: #A37ACC; // base0E + --brown: #E6BA7E; // base0F +} + +:root { @include ayu-light; } +@media (prefers-color-scheme: dark) { + :root { @include ayu-dark; } +} + +:root[data-theme="dark"] { @include ayu-dark; } +:root[data-theme="light"] { @include ayu-light; } diff --git a/site/sass/style.scss b/site/sass/style.scss new file mode 100644 index 0000000..5ce9f88 --- /dev/null +++ b/site/sass/style.scss @@ -0,0 +1,122 @@ +@use "palette"; +@use "fonts"; + +body { + background: var(--bg); + color: var(--fg); + font-family: fonts.$mono; + line-height: 1.6; + + max-width: 46rem; + margin: 0 auto; + padding: 3rem 1.5rem; +} + +header { + margin-bottom: 2.5rem; + padding-bottom: 0.75rem; + border-bottom: 1px solid var(--grey); +} + +nav { + display: flex; + align-items: baseline; + justify-content: space-between; + gap: 1.5rem; + + ul { + display: flex; + gap: 1.5rem; + margin: 0; + padding: 0; + list-style: none; + } +} + +.brand, +.brand:visited { + color: var(--fg-bright); + font-weight: 500; +} + +.brand:hover { + font-weight: 700; +} + +footer { + display: flex; + gap: 1.5rem; + margin-top: 3rem; + padding-top: 0.75rem; + border-top: 1px solid var(--grey); +} + +img { + max-width: 100%; + height: auto; +} + +.centered-img { + display: block; + margin: 2rem auto; +} + +.intro { + display: flex; + align-items: flex-start; + gap: 2.5rem; +} + +.intro-text > p:first-child { + margin-top: 0; +} + +.avatar { + flex: none; + width: 14rem; + height: 14rem; + border-radius: 50%; + object-fit: cover; +} + +@media (max-width: 34rem) { + .intro { + flex-direction: column-reverse; + align-items: center; + } +} + +.post-list { + margin: 0; + padding: 0; + list-style: none; + + li { + display: flex; + justify-content: space-between; + gap: 1rem; + } +} + +time { + color: var(--fg-dim); +} + +strong { + color: var(--orange); + font-weight: 600; +} + +a { + color: var(--blue); + text-decoration: none; +} + +a:visited { + color: var(--purple); +} + +a:hover { + font-weight: 700; + text-decoration: underline; +} |