diff --git a/Dockerfile b/Dockerfile index b3968fd..18a29f3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,6 +19,7 @@ COPY package*.json ./ COPY --from=build-stage /app/dist /usr/share/nginx/html COPY --from=build-stage /app/public/icons /usr/share/nginx/html/icons +COPY --from=build-stage /app/public/fonts /usr/share/nginx/html/fonts COPY nginx.conf /etc/nginx/conf.d/default.conf COPY BuildConfig.sh /docker-entrypoint.d/10-build-config.sh RUN chmod a+x /docker-entrypoint.d/10-build-config.sh diff --git a/public/fonts/-F63fjptAgt5VM-kVkqdyU8n1i8q1w.woff2 b/public/fonts/-F63fjptAgt5VM-kVkqdyU8n1i8q1w.woff2 new file mode 100644 index 0000000..0804aaf Binary files /dev/null and b/public/fonts/-F63fjptAgt5VM-kVkqdyU8n1i8q1w.woff2 differ diff --git a/public/fonts/-F63fjptAgt5VM-kVkqdyU8n1iAq129k.woff2 b/public/fonts/-F63fjptAgt5VM-kVkqdyU8n1iAq129k.woff2 new file mode 100644 index 0000000..21612f4 Binary files /dev/null and b/public/fonts/-F63fjptAgt5VM-kVkqdyU8n1iAq129k.woff2 differ diff --git a/public/fonts/-F63fjptAgt5VM-kVkqdyU8n1iEq129k.woff2 b/public/fonts/-F63fjptAgt5VM-kVkqdyU8n1iEq129k.woff2 new file mode 100644 index 0000000..732c64d Binary files /dev/null and b/public/fonts/-F63fjptAgt5VM-kVkqdyU8n1iEq129k.woff2 differ diff --git a/public/fonts/-F63fjptAgt5VM-kVkqdyU8n1iIq129k.woff2 b/public/fonts/-F63fjptAgt5VM-kVkqdyU8n1iIq129k.woff2 new file mode 100644 index 0000000..b54e556 Binary files /dev/null and b/public/fonts/-F63fjptAgt5VM-kVkqdyU8n1iIq129k.woff2 differ diff --git a/public/fonts/-F63fjptAgt5VM-kVkqdyU8n1isq129k.woff2 b/public/fonts/-F63fjptAgt5VM-kVkqdyU8n1isq129k.woff2 new file mode 100644 index 0000000..20e72b0 Binary files /dev/null and b/public/fonts/-F63fjptAgt5VM-kVkqdyU8n1isq129k.woff2 differ diff --git a/public/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa0Xdgv-s.woff2 b/public/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa0Xdgv-s.woff2 new file mode 100644 index 0000000..2bbfd70 Binary files /dev/null and b/public/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa0Xdgv-s.woff2 differ diff --git a/public/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa1Xdg.woff2 b/public/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa1Xdg.woff2 new file mode 100644 index 0000000..855c41c Binary files /dev/null and b/public/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa1Xdg.woff2 differ diff --git a/public/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa23dgv-s.woff2 b/public/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa23dgv-s.woff2 new file mode 100644 index 0000000..7d4e8fd Binary files /dev/null and b/public/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa23dgv-s.woff2 differ diff --git a/public/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa2Hdgv-s.woff2 b/public/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa2Hdgv-s.woff2 new file mode 100644 index 0000000..d7f4391 Binary files /dev/null and b/public/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa2Hdgv-s.woff2 differ diff --git a/public/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa2ndgv-s.woff2 b/public/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa2ndgv-s.woff2 new file mode 100644 index 0000000..bafe6fa Binary files /dev/null and b/public/fonts/-F6pfjptAgt5VM-kVkqdyU8n1ioa2ndgv-s.woff2 differ diff --git a/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwl1FgtIU.woff2 b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwl1FgtIU.woff2 new file mode 100644 index 0000000..7d066e9 Binary files /dev/null and b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwl1FgtIU.woff2 differ diff --git a/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwl5FgtIU.woff2 b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwl5FgtIU.woff2 new file mode 100644 index 0000000..6f33f8c Binary files /dev/null and b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwl5FgtIU.woff2 differ diff --git a/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwl9FgtIU.woff2 b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwl9FgtIU.woff2 new file mode 100644 index 0000000..3920890 Binary files /dev/null and b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwl9FgtIU.woff2 differ diff --git a/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwlBFgg.woff2 b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwlBFgg.woff2 new file mode 100644 index 0000000..090f82f Binary files /dev/null and b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwlBFgg.woff2 differ diff --git a/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwlRFgtIU.woff2 b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwlRFgtIU.woff2 new file mode 100644 index 0000000..328efe3 Binary files /dev/null and b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJwlRFgtIU.woff2 differ diff --git a/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3vAOwl1FgtIU.woff2 b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3vAOwl1FgtIU.woff2 new file mode 100644 index 0000000..7ebf1f2 Binary files /dev/null and b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3vAOwl1FgtIU.woff2 differ diff --git a/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3vAOwl5FgtIU.woff2 b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3vAOwl5FgtIU.woff2 new file mode 100644 index 0000000..c0b57de Binary files /dev/null and b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3vAOwl5FgtIU.woff2 differ diff --git a/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3vAOwl9FgtIU.woff2 b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3vAOwl9FgtIU.woff2 new file mode 100644 index 0000000..a1c5bd3 Binary files /dev/null and b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3vAOwl9FgtIU.woff2 differ diff --git a/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3vAOwlBFgg.woff2 b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3vAOwlBFgg.woff2 new file mode 100644 index 0000000..67aeeb0 Binary files /dev/null and b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3vAOwlBFgg.woff2 differ diff --git a/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3vAOwlRFgtIU.woff2 b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3vAOwlRFgtIU.woff2 new file mode 100644 index 0000000..56fa97f Binary files /dev/null and b/public/fonts/-F6qfjptAgt5VM-kVkqdyU8n3vAOwlRFgtIU.woff2 differ diff --git a/public/fonts/RWmVoLyb5fEqtsfBX9PDZIGr2tFubRh7A3eREnc.woff2 b/public/fonts/RWmVoLyb5fEqtsfBX9PDZIGr2tFubRh7A3eREnc.woff2 new file mode 100644 index 0000000..3fb0f0a Binary files /dev/null and b/public/fonts/RWmVoLyb5fEqtsfBX9PDZIGr2tFubRh7A3eREnc.woff2 differ diff --git a/public/fonts/RWmVoLyb5fEqtsfBX9PDZIGr2tFubRh7AneREnc.woff2 b/public/fonts/RWmVoLyb5fEqtsfBX9PDZIGr2tFubRh7AneREnc.woff2 new file mode 100644 index 0000000..0f9ff03 Binary files /dev/null and b/public/fonts/RWmVoLyb5fEqtsfBX9PDZIGr2tFubRh7AneREnc.woff2 differ diff --git a/public/fonts/RWmVoLyb5fEqtsfBX9PDZIGr2tFubRh7DXeR.woff2 b/public/fonts/RWmVoLyb5fEqtsfBX9PDZIGr2tFubRh7DXeR.woff2 new file mode 100644 index 0000000..1624f0c Binary files /dev/null and b/public/fonts/RWmVoLyb5fEqtsfBX9PDZIGr2tFubRh7DXeR.woff2 differ diff --git a/public/fonts/fonts.css b/public/fonts/fonts.css new file mode 100644 index 0000000..a3e1f82 --- /dev/null +++ b/public/fonts/fonts.css @@ -0,0 +1,207 @@ +/* cyrillic-ext */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(./-F6pfjptAgt5VM-kVkqdyU8n1ioa2Hdgv-s.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(./-F6pfjptAgt5VM-kVkqdyU8n1ioa0Xdgv-s.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(./-F6pfjptAgt5VM-kVkqdyU8n1ioa2ndgv-s.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(./-F6pfjptAgt5VM-kVkqdyU8n1ioa23dgv-s.woff2) format('woff2'); + unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(./-F6pfjptAgt5VM-kVkqdyU8n1ioa1Xdg.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(./-F63fjptAgt5VM-kVkqdyU8n1iIq129k.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(./-F63fjptAgt5VM-kVkqdyU8n1isq129k.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(./-F63fjptAgt5VM-kVkqdyU8n1iAq129k.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(./-F63fjptAgt5VM-kVkqdyU8n1iEq129k.woff2) format('woff2'); + unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(./-F63fjptAgt5VM-kVkqdyU8n1i8q1w.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(./-F6qfjptAgt5VM-kVkqdyU8n3twJwl1FgtIU.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(./-F6qfjptAgt5VM-kVkqdyU8n3twJwlRFgtIU.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(./-F6qfjptAgt5VM-kVkqdyU8n3twJwl9FgtIU.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(./-F6qfjptAgt5VM-kVkqdyU8n3twJwl5FgtIU.woff2) format('woff2'); + unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(./-F6qfjptAgt5VM-kVkqdyU8n3twJwlBFgg.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(./-F6qfjptAgt5VM-kVkqdyU8n3vAOwl1FgtIU.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(./-F6qfjptAgt5VM-kVkqdyU8n3vAOwlRFgtIU.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(./-F6qfjptAgt5VM-kVkqdyU8n3vAOwl9FgtIU.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(./-F6qfjptAgt5VM-kVkqdyU8n3vAOwl5FgtIU.woff2) format('woff2'); + unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(./-F6qfjptAgt5VM-kVkqdyU8n3vAOwlBFgg.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* vietnamese */ +@font-face { + font-family: 'Major Mono Display'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(./RWmVoLyb5fEqtsfBX9PDZIGr2tFubRh7AneREnc.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Major Mono Display'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(./RWmVoLyb5fEqtsfBX9PDZIGr2tFubRh7A3eREnc.woff2) format('woff2'); + unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Major Mono Display'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(./RWmVoLyb5fEqtsfBX9PDZIGr2tFubRh7DXeR.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} diff --git a/public/icons/hangman-lab-logo.svg b/public/icons/hangman-lab-logo.svg new file mode 100644 index 0000000..977f98a --- /dev/null +++ b/public/icons/hangman-lab-logo.svg @@ -0,0 +1,44 @@ + + + + + diff --git a/public/index.html b/public/index.html index 8b7ca3c..51e7158 100644 --- a/public/index.html +++ b/public/index.html @@ -5,20 +5,11 @@ Hangman Lab - - - - + +
- \ No newline at end of file diff --git a/src/components/Markdowns/MarkdownEditor.css b/src/components/Markdowns/MarkdownEditor.css index 86e9ef6..82da43f 100644 --- a/src/components/Markdowns/MarkdownEditor.css +++ b/src/components/Markdowns/MarkdownEditor.css @@ -12,7 +12,7 @@ } code { - font-family: ui-monospace, "JetBrains Mono", "Courier New", Courier, monospace; + font-family: ui-monospace, "IBM Plex Mono", "Courier New", Courier, monospace; background-color: hsl(var(--muted)); color: hsl(var(--foreground)); padding: 2px 6px; diff --git a/src/components/Markdowns/MarkdownView.css b/src/components/Markdowns/MarkdownView.css index cae6628..9ae4479 100644 --- a/src/components/Markdowns/MarkdownView.css +++ b/src/components/Markdowns/MarkdownView.css @@ -34,7 +34,7 @@ .markdown-preview h4, .markdown-preview h5, .markdown-preview h6 { - font-family: "JetBrains Mono", ui-monospace, monospace; + font-family: "IBM Plex Mono", ui-monospace, monospace; font-weight: 600; color: hsl(var(--foreground)); line-height: 1.3; @@ -108,7 +108,7 @@ /* Inline code */ .markdown-preview :not(pre) > code { - font-family: "JetBrains Mono", ui-monospace, monospace; + font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 0.85em; background-color: hsl(var(--muted)); color: hsl(var(--primary)); @@ -128,7 +128,7 @@ box-shadow: inset 0 0 40px -20px hsl(var(--primary) / 0.25); } .markdown-preview pre code { - font-family: "JetBrains Mono", ui-monospace, monospace; + font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 0.85rem; background: transparent; border: none; @@ -150,7 +150,7 @@ } .markdown-preview th { background-color: hsl(var(--muted)); - font-family: "JetBrains Mono", ui-monospace, monospace; + font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.04em; diff --git a/src/components/Navigations/MainNavigation.js b/src/components/Navigations/MainNavigation.js index 68bbbe6..eaf5d17 100644 --- a/src/components/Navigations/MainNavigation.js +++ b/src/components/Navigations/MainNavigation.js @@ -124,13 +124,13 @@ const MainNavigation = () => { className="group flex items-center gap-2.5 pr-3" > Logo - - HANGMAN - //LAB + + hangman + lab diff --git a/src/globals.css b/src/globals.css index 1807c81..251ee64 100644 --- a/src/globals.css +++ b/src/globals.css @@ -2,37 +2,40 @@ @tailwind components; @tailwind utilities; -/* Dark-tech design tokens (single dark theme). HSL triplets so Tailwind - color utilities and shadcn-style primitives resolve via hsl(var(--x)). */ +/* Lab-terminal theme — adapted from the Gitea STYLE.md for this React app. + Single acid accent (#d8ff3e), dark blueprint surfaces, monospace UI. + HSL triplets so Tailwind / shadcn-style primitives resolve hsl(var(--x)). */ :root, .dark { - --background: 222 32% 6%; - --foreground: 210 22% 92%; + --background: 216 24% 4%; /* #080a0d ink */ + --foreground: 217 35% 86%; /* #cdd8e8 text */ - --surface: 222 28% 8.5%; - --card: 222 26% 9.5%; - --card-foreground: 210 22% 92%; + --surface: 214 29% 8%; /* #0f141b panel */ + --card: 214 29% 8%; + --card-foreground: 217 38% 95%; /* #e9f0fa strong text */ - --muted: 222 20% 14%; - --muted-foreground: 215 16% 60%; + --muted: 214 27% 12%; /* hovered panel */ + --muted-foreground: 216 18% 48%; /* #647691 dim / eyebrow */ - --accent: 222 24% 13%; - --accent-foreground: 210 22% 92%; + --accent: 214 27% 11%; /* row/element hover wash base */ + --accent-foreground: 217 35% 86%; - --border: 220 18% 18%; - --input: 220 18% 16%; - --ring: 186 92% 56%; + --border: 213 28% 16%; /* #1d2733 lines / dividers */ + --input: 213 28% 14%; + --ring: 72 100% 62%; /* acid focus ring */ - /* cyan primary, violet secondary — the neon accents */ - --primary: 186 92% 56%; - --primary-foreground: 222 47% 6%; - --secondary: 258 90% 68%; - --secondary-foreground: 0 0% 100%; + /* THE accent — one acid, used for links/primary/active/focus. */ + --primary: 72 100% 62%; /* #d8ff3e */ + --primary-foreground: 96 24% 5%; /* #0c0f08 text on acid */ + /* No second hue (STYLE: "one acid"). Secondary == acid so any + component using it stays on-brand. */ + --secondary: 72 100% 62%; + --secondary-foreground: 96 24% 5%; - --destructive: 0 72% 56%; + --destructive: 3 100% 66%; /* #ff5a52 errors only */ --destructive-foreground: 0 0% 100%; - --radius: 0.5rem; + --radius: 0.75rem; } * { @@ -45,25 +48,37 @@ body, height: 100%; } +html { + background-color: hsl(var(--background)); + /* Larger base so all rem-based UI text scales up. */ + font-size: 18px; +} + body { margin: 0; - background-color: hsl(var(--background)); + background-color: transparent; color: hsl(var(--foreground)); - font-family: Inter, ui-sans-serif, system-ui, sans-serif; + font-family: "IBM Plex Mono", ui-monospace, SFMono-Regular, monospace; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; } -/* Ambient grid + glow backdrop for the app shell */ +/* Site-wide blueprint grid backdrop (STYLE §11.2): fixed, behind content, + 48px #1d2733 lines at low opacity, radial-masked, plus one acid sheen. */ body::before { content: ""; position: fixed; inset: 0; + z-index: -1; pointer-events: none; - z-index: 0; - background: - radial-gradient(60rem 60rem at 110% -10%, hsl(258 90% 68% / 0.10), transparent 60%), - radial-gradient(50rem 50rem at -10% 110%, hsl(186 92% 56% / 0.08), transparent 60%); + background-color: hsl(var(--background)); + background-image: + radial-gradient(1000px 560px at 78% -8%, hsl(72 100% 62% / 0.10), transparent 60%), + linear-gradient(hsl(213 28% 16% / 0.16) 1px, transparent 1px), + linear-gradient(90deg, hsl(213 28% 16% / 0.16) 1px, transparent 1px); + background-size: 100% 100%, 48px 48px, 48px 48px; + -webkit-mask-image: radial-gradient(ellipse 90% 80% at 50% 30%, #000 55%, transparent 100%); + mask-image: radial-gradient(ellipse 90% 80% at 50% 30%, #000 55%, transparent 100%); } ::selection { @@ -71,7 +86,6 @@ body::before { color: hsl(var(--foreground)); } -/* Slim techy scrollbars */ * { scrollbar-width: thin; scrollbar-color: hsl(var(--border)) transparent; @@ -89,16 +103,24 @@ body::before { } @layer utilities { + /* Display lockup font — always lowercase per STYLE §3. */ + .font-display { + font-family: "Major Mono Display", "IBM Plex Mono", monospace; + text-transform: lowercase; + } .neon-text { color: hsl(var(--primary)); - text-shadow: 0 0 12px hsl(var(--primary) / 0.55); + text-shadow: 0 0 44px hsl(var(--primary) / 0.38); } + /* kept for compatibility with components that used the old violet + accent — now the same single acid. */ .neon-text-violet { - color: hsl(var(--secondary)); - text-shadow: 0 0 12px hsl(var(--secondary) / 0.55); + color: hsl(var(--primary)); + text-shadow: 0 0 44px hsl(var(--primary) / 0.38); } .glass { - background: hsl(var(--surface) / 0.7); - backdrop-filter: blur(10px); + background: hsl(214 29% 8% / 0.55); + backdrop-filter: blur(16px) saturate(150%); + border: 1px solid hsl(var(--primary) / 0.16); } } diff --git a/tailwind.config.js b/tailwind.config.js index f7bf2da..dd15868 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -42,15 +42,10 @@ module.exports = { sm: "calc(var(--radius) - 4px)", }, fontFamily: { - sans: ["Inter", "ui-sans-serif", "system-ui", "sans-serif"], - mono: [ - "JetBrains Mono", - "Fira Code", - "ui-monospace", - "SFMono-Regular", - "Menlo", - "monospace", - ], + // Lab-terminal: IBM Plex Mono is the body/UI/mono face. + sans: ["IBM Plex Mono", "ui-monospace", "SFMono-Regular", "monospace"], + mono: ["IBM Plex Mono", "ui-monospace", "SFMono-Regular", "monospace"], + display: ["Major Mono Display", "IBM Plex Mono", "monospace"], }, boxShadow: { glow: "0 0 0 1px hsl(var(--primary) / 0.25), 0 0 24px -6px hsl(var(--primary) / 0.45)",