diff --git a/frontend/package-lock.json b/frontend/package-lock.json index b58d8a9..2900289 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -21,6 +21,8 @@ "@fontsource-variable/fraunces": "^5.2.9", "@fontsource-variable/inter": "^5.2.5", "@fontsource-variable/jetbrains-mono": "^5.2.5", + "@fontsource/space-mono": "^5.2.9", + "@fontsource/vt323": "^5.2.7", "@replit/codemirror-vim": "^6.3.0", "@tailwindcss/vite": "^4.2.2", "astro": "^6.0.8", @@ -1722,6 +1724,24 @@ "url": "https://github.com/sponsors/ayuhito" } }, + "node_modules/@fontsource/space-mono": { + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/@fontsource/space-mono/-/space-mono-5.2.9.tgz", + "integrity": "sha512-b61faFOHEISQ/pD25G+cfGY9o/WW6lRv6hBQQfpWvEJ4y1V+S4gmth95EVyBE2VL3qDYHeVQ8nBzrplzdXTDDg==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@fontsource/vt323": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@fontsource/vt323/-/vt323-5.2.7.tgz", + "integrity": "sha512-8JTMM23vMhQxin9Cn/ijty8cNwXW4INrln0VAJ2227Rz0CVfkzM3qr3l/CqudZJ6BXCnbCGUTdf2ym3cTNex8A==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, "node_modules/@img/colour": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index 46a023a..5ba44fd 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -25,6 +25,8 @@ "@fontsource-variable/fraunces": "^5.2.9", "@fontsource-variable/inter": "^5.2.5", "@fontsource-variable/jetbrains-mono": "^5.2.5", + "@fontsource/space-mono": "^5.2.9", + "@fontsource/vt323": "^5.2.7", "@replit/codemirror-vim": "^6.3.0", "@tailwindcss/vite": "^4.2.2", "astro": "^6.0.8", diff --git a/frontend/src/components/CyberFx.astro b/frontend/src/components/CyberFx.astro new file mode 100644 index 0000000..0e61587 --- /dev/null +++ b/frontend/src/components/CyberFx.astro @@ -0,0 +1,110 @@ +--- +/* + * CyberFx — ambient + interactive layer for the `.cybersigil` theme. + * + * Renders an aria-hidden overlay root on every page. All visuals are CSS, + * scoped to `.cybersigil .cs-fx*` in global.css, so this is an inert, + * display:none no-op under every other theme. The bundled script only wires + * the JS-driven mechanics (custom sigil cursor + fading trail, scroll-entry + * databend on images) and self-disables off-theme, on touch, or under + * prefers-reduced-motion. + */ +--- + +
+ + diff --git a/frontend/src/layouts/Layout.astro b/frontend/src/layouts/Layout.astro index 92d9e77..d128be9 100644 --- a/frontend/src/layouts/Layout.astro +++ b/frontend/src/layouts/Layout.astro @@ -3,6 +3,10 @@ import '../styles/global.css'; import '@fontsource-variable/fraunces'; import '@fontsource-variable/eb-garamond'; import '@fontsource-variable/jetbrains-mono'; +import '@fontsource/vt323'; +import '@fontsource/space-mono'; +import '@fontsource/space-mono/700.css'; +import CyberFx from '../components/CyberFx.astro'; import Search from '../components/react/Search'; import LogoutButton from '../components/react/LogoutButton'; import EditableText from '../components/react/EditableText'; @@ -188,5 +192,7 @@ const hasContact = (siteConfig.contact_links?.length ?? 0) > 0; © {year} · {siteConfig.title} + +