diff --git a/.forgejo/workflows/build-eleventy.yaml b/.forgejo/workflows/build-eleventy.yaml index 40a15c2..82825c8 100644 --- a/.forgejo/workflows/build-eleventy.yaml +++ b/.forgejo/workflows/build-eleventy.yaml @@ -12,8 +12,7 @@ jobs: container: image: node:18 volumes: - # This is the path mounted in the Forgejo stack's docker-compose - - /sites:/sites + - /media/Media:/media/Media steps: - name: Checkout code @@ -30,15 +29,14 @@ jobs: - name: Move built site run: | - set -e # Exit on any error if [ "${{ github.ref }}" = "refs/heads/main" ]; then echo "Deploying production..." - rm -rf /sites/devon.lol && mkdir /sites/devon.lol && mv dist/* /sites/devon.lol + rm -rf /media/Media/sites/devon.lol && mkdir /media/Media/sites/devon.lol && mv dist/* /media/Media/sites/devon.lol echo "Running webmention..." echo "ls dist:" ls dist - npx webmention /sites/devon.lol/feed.xml --send + npx webmention /media/Media/sites/devon.lol/feed.xml --send else echo "Deploying staging..." - rm -rf /sites/staging.devon.lol && mkdir /sites/staging.devon.lol && mv dist/* /sites/staging.devon.lol + rm -rf /media/Media/sites/staging.devon.lol && mkdir /media/Media/sites/staging.devon.lol && mv dist/* /media/Media/sites/staging.devon.lol fi diff --git a/css/theme.css b/css/theme.css index 56ff0df..8b9ff2e 100644 --- a/css/theme.css +++ b/css/theme.css @@ -50,6 +50,71 @@ body { grid-template-columns: 1fr; justify-items: start; column-gap: 3rem; + + /* Styles for CRT effect */ + margin: 0; + min-height: 100vh; + /* Text glow */ + text-shadow: + 2px 2px 0px #000, /* Hard shadow for legibility */ + -1px -1px 0 rgba(255,255,255,0.3), /* Slight highlight */ + 0 0 8px rgba(255, 255, 255, 0.5), /* Soft bloom */ + 0 0 20px rgba(255, 255, 255, 0.3); /* Wide bloom */ +} + +/* Scanline overlay pseudo-element */ +body::before { + content: " "; + display: block; + position: fixed; + top: 0; left: 0; bottom: 0; right: 0; + z-index: 9999; + pointer-events: none; + + background: linear-gradient( + to bottom, + rgba(0,0,0, 0) 50%, + rgba(0,0,0, 0.1) 50% + ); + background-size: 100% 4px; +} + +/* Rolling refresh rate mismatch bar pseudo-element */ +body::after { + content: " "; + display: block; + position: fixed; + z-index: 9999; + top: -5vh; + left: 0; right: 0; + height: 5vh; + pointer-events: none; + background: linear-gradient( + to bottom, + rgba(255,255,255,0) 0%, + rgba(255,255,255,0.05) 50%, + rgba(255,255,255,0) 100% + ); + + will-change: transform; + animation: scan-drop 15s linear infinite; +} + +@keyframes scan-drop { + 0% { transform: translateY(0); } + 25% { transform: translateY(0); } + 50% { transform: translateY(150vh); } + 100% { transform: translateY(150vh); } +} + +/* Theme scrollbars */ +body::-webkit-scrollbar { + width: 12px; + background: #000; +} +body::-webkit-scrollbar-thumb { + background: var(--accent-alt); + border: 1px solid #fff; } body > nav, @@ -60,6 +125,10 @@ h4, h5, h6 { font-family: var(--fancy-font-stack); + + text-shadow: + 3px 0px 0px rgba(255, 0, 0, 0.5), + -3px 0px 0px rgba(0, 0, 255, 0.5); } img { @@ -126,7 +195,11 @@ h1 { z-index: 1; position: relative; margin-top: 0; - text-shadow: 0.1em 0 black; + text-shadow: + 0.1em 0 black, + /* Chromatic aberration */ + -0.03em 0 rgba(255, 0, 0, 0.8), + 0.13em 0 rgba(0, 0, 255, 0.6); color: var(--text-over-background); } h1 + article {