diff --git a/node_modules/nodebb-theme-harmony/.eslintrc b/node_modules/nodebb-theme-harmony/.eslintrc
new file mode 100644
index 0000000000..abd292af1b
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/.eslintrc
@@ -0,0 +1,3 @@
+{
+ "extends": "nodebb"
+}
diff --git a/node_modules/nodebb-theme-harmony/README.md b/node_modules/nodebb-theme-harmony/README.md
new file mode 100644
index 0000000000..3b279f7f5e
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/README.md
@@ -0,0 +1,19 @@
+Harmony theme for NodeBB
+====================
+
+The Harmony theme is the default theme for NodeBB for versions spanning v3.0.0 onwards.
+
+## Issues
+
+Issues are tracked in [the main project issue tracker](https://github.com/NodeBB/NodeBB/issues?q=is%3Aopen+is%3Aissue+label%3Athemes).
+
+## Screenshots
+
+### Categories
+
+
+### Recent
+
+
+### Topic
+
diff --git a/node_modules/nodebb-theme-harmony/languages/harmony.json b/node_modules/nodebb-theme-harmony/languages/harmony.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/languages/harmony.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/lib/controllers.js b/node_modules/nodebb-theme-harmony/lib/controllers.js
new file mode 100644
index 0000000000..379ec06509
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/lib/controllers.js
@@ -0,0 +1,29 @@
+'use strict';
+
+const Controllers = module.exports;
+
+const accountHelpers = require.main.require('./src/controllers/accounts/helpers');
+const helpers = require.main.require('./src/controllers/helpers');
+
+Controllers.renderAdminPage = (req, res) => {
+ res.render('admin/plugins/harmony', {
+ title: '[[themes/harmony:theme-name]]',
+ });
+};
+
+Controllers.renderThemeSettings = async (req, res, next) => {
+ const userData = await accountHelpers.getUserDataByUserSlug(req.params.userslug, req.uid, req.query);
+ if (!userData) {
+ return next();
+ }
+ const lib = require('../library');
+ userData.theme = await lib.loadThemeConfig(userData.uid);
+
+ userData.title = '[[themes/harmony:settings.title]]';
+ userData.breadcrumbs = helpers.buildBreadcrumbs([
+ { text: userData.username, url: `/user/${userData.userslug}` },
+ { text: '[[themes/harmony:settings.title]]' },
+ ]);
+
+ res.render('account/theme', userData);
+};
diff --git a/node_modules/nodebb-theme-harmony/library.js b/node_modules/nodebb-theme-harmony/library.js
new file mode 100644
index 0000000000..6ab72cf4ce
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/library.js
@@ -0,0 +1,190 @@
+'use strict';
+
+const nconf = require.main.require('nconf');
+const meta = require.main.require('./src/meta');
+const _ = require.main.require('lodash');
+const user = require.main.require('./src/user');
+
+const controllers = require('./lib/controllers');
+
+const library = module.exports;
+
+const defaults = {
+ enableQuickReply: 'on',
+ enableBreadcrumbs: 'on',
+ centerHeaderElements: 'off',
+ mobileTopicTeasers: 'off',
+ stickyToolbar: 'on',
+ autohideBottombar: 'on',
+ openSidebars: 'off',
+ chatModals: 'off',
+};
+
+library.init = async function (params) {
+ const { router, middleware } = params;
+ const routeHelpers = require.main.require('./src/routes/helpers');
+
+ routeHelpers.setupAdminPageRoute(router, '/admin/plugins/harmony', [], controllers.renderAdminPage);
+
+ routeHelpers.setupPageRoute(router, '/user/:userslug/theme', [
+ middleware.exposeUid,
+ middleware.ensureLoggedIn,
+ middleware.canViewUsers,
+ middleware.checkAccountPermissions,
+ ], controllers.renderThemeSettings);
+
+ if (nconf.get('isPrimary') && process.env.NODE_ENV === 'production') {
+ setTimeout(buildSkins, 0);
+ }
+};
+
+async function buildSkins() {
+ try {
+ const plugins = require.main.require('./src/plugins');
+ await plugins.prepareForBuild(['client side styles']);
+ for (const skin of meta.css.supportedSkins) {
+ // eslint-disable-next-line no-await-in-loop
+ await meta.css.buildBundle(`client-${skin}`, true);
+ }
+ require.main.require('./src/meta/minifier').killAll();
+ } catch (err) {
+ console.error(err.stack);
+ }
+}
+
+library.addAdminNavigation = async function (header) {
+ header.plugins.push({
+ route: '/plugins/harmony',
+ icon: 'fa-paint-brush',
+ name: '[[themes/harmony:theme-name]]',
+ });
+ return header;
+};
+
+library.addProfileItem = async (data) => {
+ data.links.push({
+ id: 'theme',
+ route: 'theme',
+ icon: 'fa-paint-brush',
+ name: '[[themes/harmony:settings.title]]',
+ visibility: {
+ self: true,
+ other: false,
+ moderator: false,
+ globalMod: false,
+ admin: false,
+ },
+ });
+
+ return data;
+};
+
+library.defineWidgetAreas = async function (areas) {
+ const locations = ['header', 'sidebar', 'footer'];
+ const templates = [
+ 'categories.tpl', 'category.tpl', 'topic.tpl', 'users.tpl',
+ 'unread.tpl', 'recent.tpl', 'popular.tpl', 'top.tpl', 'tags.tpl', 'tag.tpl',
+ 'login.tpl', 'register.tpl',
+ ];
+ function capitalizeFirst(str) {
+ return str.charAt(0).toUpperCase() + str.slice(1);
+ }
+ templates.forEach((template) => {
+ locations.forEach((location) => {
+ areas.push({
+ name: `${capitalizeFirst(template.split('.')[0])} ${capitalizeFirst(location)}`,
+ template: template,
+ location: location,
+ });
+ });
+ });
+
+ areas = areas.concat([
+ {
+ name: 'Main post header',
+ template: 'topic.tpl',
+ location: 'mainpost-header',
+ },
+ {
+ name: 'Main post footer',
+ template: 'topic.tpl',
+ location: 'mainpost-footer',
+ },
+ {
+ name: 'Sidebar Footer',
+ template: 'global',
+ location: 'sidebar-footer',
+ },
+ {
+ name: 'Brand Header',
+ template: 'global',
+ location: 'brand-header',
+ },
+ {
+ name: 'About me (before)',
+ template: 'account/profile.tpl',
+ location: 'profile-aboutme-before',
+ },
+ {
+ name: 'About me (after)',
+ template: 'account/profile.tpl',
+ location: 'profile-aboutme-after',
+ },
+ ]);
+
+ return areas;
+};
+
+library.loadThemeConfig = async function (uid) {
+ const [themeConfig, userConfig] = await Promise.all([
+ meta.settings.get('harmony'),
+ user.getSettings(uid),
+ ]);
+
+ const config = { ...defaults, ...themeConfig, ...(_.pick(userConfig, Object.keys(defaults))) };
+ config.enableQuickReply = config.enableQuickReply === 'on';
+ config.enableBreadcrumbs = config.enableBreadcrumbs === 'on';
+ config.centerHeaderElements = config.centerHeaderElements === 'on';
+ config.mobileTopicTeasers = config.mobileTopicTeasers === 'on';
+ config.stickyToolbar = config.stickyToolbar === 'on';
+ config.autohideBottombar = config.autohideBottombar === 'on';
+ config.openSidebars = config.openSidebars === 'on';
+ config.chatModals = config.chatModals === 'on';
+ return config;
+};
+
+library.getThemeConfig = async function (config) {
+ config.theme = await library.loadThemeConfig(config.uid);
+ config.openDraftsOnPageLoad = false;
+ return config;
+};
+
+library.getAdminSettings = async function (hookData) {
+ if (hookData.plugin === 'harmony') {
+ hookData.values = {
+ ...defaults,
+ ...hookData.values,
+ };
+ }
+ return hookData;
+};
+
+library.saveUserSettings = async function (hookData) {
+ Object.keys(defaults).forEach((key) => {
+ if (hookData.data.hasOwnProperty(key)) {
+ hookData.settings[key] = hookData.data[key] || undefined;
+ }
+ });
+ return hookData;
+};
+
+library.filterMiddlewareRenderHeader = async function (hookData) {
+ hookData.templateData.bootswatchSkinOptions = await meta.css.getSkinSwitcherOptions(hookData.req.uid);
+ return hookData;
+};
+
+library.filterTeasersConfigureStripTags = function (hookData) {
+ // teasers have a stretched-link to go to last post, the anchors in them are not clickable
+ hookData.tags.push('a');
+ return hookData;
+};
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/100.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/100.css
new file mode 100644
index 0000000000..6d30e822e4
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/100.css
@@ -0,0 +1,69 @@
+/* inter-cyrillic-ext-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-cyrillic-ext-100-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-100-normal.woff) format('woff');
+ unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
+}
+
+/* inter-cyrillic-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-cyrillic-100-normal.woff2) format('woff2'), url(./files/inter-cyrillic-100-normal.woff) format('woff');
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
+}
+
+/* inter-greek-ext-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-greek-ext-100-normal.woff2) format('woff2'), url(./files/inter-greek-ext-100-normal.woff) format('woff');
+ unicode-range: U+1F00-1FFF;
+}
+
+/* inter-greek-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-greek-100-normal.woff2) format('woff2'), url(./files/inter-greek-100-normal.woff) format('woff');
+ unicode-range: U+0370-03FF;
+}
+
+/* inter-vietnamese-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-vietnamese-100-normal.woff2) format('woff2'), url(./files/inter-vietnamese-100-normal.woff) format('woff');
+ 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;
+}
+
+/* inter-latin-ext-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-latin-ext-100-normal.woff2) format('woff2'), url(./files/inter-latin-ext-100-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* inter-latin-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-latin-100-normal.woff2) format('woff2'), url(./files/inter-latin-100-normal.woff) format('woff');
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/200.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/200.css
new file mode 100644
index 0000000000..805d641a66
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/200.css
@@ -0,0 +1,69 @@
+/* inter-cyrillic-ext-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-cyrillic-ext-200-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-200-normal.woff) format('woff');
+ unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
+}
+
+/* inter-cyrillic-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-cyrillic-200-normal.woff2) format('woff2'), url(./files/inter-cyrillic-200-normal.woff) format('woff');
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
+}
+
+/* inter-greek-ext-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-greek-ext-200-normal.woff2) format('woff2'), url(./files/inter-greek-ext-200-normal.woff) format('woff');
+ unicode-range: U+1F00-1FFF;
+}
+
+/* inter-greek-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-greek-200-normal.woff2) format('woff2'), url(./files/inter-greek-200-normal.woff) format('woff');
+ unicode-range: U+0370-03FF;
+}
+
+/* inter-vietnamese-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-vietnamese-200-normal.woff2) format('woff2'), url(./files/inter-vietnamese-200-normal.woff) format('woff');
+ 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;
+}
+
+/* inter-latin-ext-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-latin-ext-200-normal.woff2) format('woff2'), url(./files/inter-latin-ext-200-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* inter-latin-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-latin-200-normal.woff2) format('woff2'), url(./files/inter-latin-200-normal.woff) format('woff');
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/300.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/300.css
new file mode 100644
index 0000000000..4acb825bef
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/300.css
@@ -0,0 +1,69 @@
+/* inter-cyrillic-ext-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-cyrillic-ext-300-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-300-normal.woff) format('woff');
+ unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
+}
+
+/* inter-cyrillic-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-cyrillic-300-normal.woff2) format('woff2'), url(./files/inter-cyrillic-300-normal.woff) format('woff');
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
+}
+
+/* inter-greek-ext-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-greek-ext-300-normal.woff2) format('woff2'), url(./files/inter-greek-ext-300-normal.woff) format('woff');
+ unicode-range: U+1F00-1FFF;
+}
+
+/* inter-greek-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-greek-300-normal.woff2) format('woff2'), url(./files/inter-greek-300-normal.woff) format('woff');
+ unicode-range: U+0370-03FF;
+}
+
+/* inter-vietnamese-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-vietnamese-300-normal.woff2) format('woff2'), url(./files/inter-vietnamese-300-normal.woff) format('woff');
+ 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;
+}
+
+/* inter-latin-ext-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-latin-ext-300-normal.woff2) format('woff2'), url(./files/inter-latin-ext-300-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* inter-latin-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-latin-300-normal.woff2) format('woff2'), url(./files/inter-latin-300-normal.woff) format('woff');
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/400.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/400.css
new file mode 100644
index 0000000000..dbd4039954
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/400.css
@@ -0,0 +1,69 @@
+/* inter-cyrillic-ext-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-cyrillic-ext-400-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-400-normal.woff) format('woff');
+ unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
+}
+
+/* inter-cyrillic-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-cyrillic-400-normal.woff2) format('woff2'), url(./files/inter-cyrillic-400-normal.woff) format('woff');
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
+}
+
+/* inter-greek-ext-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-greek-ext-400-normal.woff2) format('woff2'), url(./files/inter-greek-ext-400-normal.woff) format('woff');
+ unicode-range: U+1F00-1FFF;
+}
+
+/* inter-greek-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-greek-400-normal.woff2) format('woff2'), url(./files/inter-greek-400-normal.woff) format('woff');
+ unicode-range: U+0370-03FF;
+}
+
+/* inter-vietnamese-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-vietnamese-400-normal.woff2) format('woff2'), url(./files/inter-vietnamese-400-normal.woff) format('woff');
+ 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;
+}
+
+/* inter-latin-ext-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-latin-ext-400-normal.woff2) format('woff2'), url(./files/inter-latin-ext-400-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* inter-latin-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-latin-400-normal.woff2) format('woff2'), url(./files/inter-latin-400-normal.woff) format('woff');
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/500.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/500.css
new file mode 100644
index 0000000000..daa67cbaf5
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/500.css
@@ -0,0 +1,69 @@
+/* inter-cyrillic-ext-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-cyrillic-ext-500-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-500-normal.woff) format('woff');
+ unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
+}
+
+/* inter-cyrillic-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-cyrillic-500-normal.woff2) format('woff2'), url(./files/inter-cyrillic-500-normal.woff) format('woff');
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
+}
+
+/* inter-greek-ext-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-greek-ext-500-normal.woff2) format('woff2'), url(./files/inter-greek-ext-500-normal.woff) format('woff');
+ unicode-range: U+1F00-1FFF;
+}
+
+/* inter-greek-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-greek-500-normal.woff2) format('woff2'), url(./files/inter-greek-500-normal.woff) format('woff');
+ unicode-range: U+0370-03FF;
+}
+
+/* inter-vietnamese-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-vietnamese-500-normal.woff2) format('woff2'), url(./files/inter-vietnamese-500-normal.woff) format('woff');
+ 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;
+}
+
+/* inter-latin-ext-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-latin-ext-500-normal.woff2) format('woff2'), url(./files/inter-latin-ext-500-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* inter-latin-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-latin-500-normal.woff2) format('woff2'), url(./files/inter-latin-500-normal.woff) format('woff');
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/600.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/600.css
new file mode 100644
index 0000000000..4e08ba18e3
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/600.css
@@ -0,0 +1,69 @@
+/* inter-cyrillic-ext-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-cyrillic-ext-600-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-600-normal.woff) format('woff');
+ unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
+}
+
+/* inter-cyrillic-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-cyrillic-600-normal.woff2) format('woff2'), url(./files/inter-cyrillic-600-normal.woff) format('woff');
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
+}
+
+/* inter-greek-ext-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-greek-ext-600-normal.woff2) format('woff2'), url(./files/inter-greek-ext-600-normal.woff) format('woff');
+ unicode-range: U+1F00-1FFF;
+}
+
+/* inter-greek-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-greek-600-normal.woff2) format('woff2'), url(./files/inter-greek-600-normal.woff) format('woff');
+ unicode-range: U+0370-03FF;
+}
+
+/* inter-vietnamese-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-vietnamese-600-normal.woff2) format('woff2'), url(./files/inter-vietnamese-600-normal.woff) format('woff');
+ 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;
+}
+
+/* inter-latin-ext-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-latin-ext-600-normal.woff2) format('woff2'), url(./files/inter-latin-ext-600-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* inter-latin-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-latin-600-normal.woff2) format('woff2'), url(./files/inter-latin-600-normal.woff) format('woff');
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/700.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/700.css
new file mode 100644
index 0000000000..9ae6ddc90e
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/700.css
@@ -0,0 +1,69 @@
+/* inter-cyrillic-ext-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-cyrillic-ext-700-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-700-normal.woff) format('woff');
+ unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
+}
+
+/* inter-cyrillic-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-cyrillic-700-normal.woff2) format('woff2'), url(./files/inter-cyrillic-700-normal.woff) format('woff');
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
+}
+
+/* inter-greek-ext-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-greek-ext-700-normal.woff2) format('woff2'), url(./files/inter-greek-ext-700-normal.woff) format('woff');
+ unicode-range: U+1F00-1FFF;
+}
+
+/* inter-greek-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-greek-700-normal.woff2) format('woff2'), url(./files/inter-greek-700-normal.woff) format('woff');
+ unicode-range: U+0370-03FF;
+}
+
+/* inter-vietnamese-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-vietnamese-700-normal.woff2) format('woff2'), url(./files/inter-vietnamese-700-normal.woff) format('woff');
+ 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;
+}
+
+/* inter-latin-ext-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-latin-ext-700-normal.woff2) format('woff2'), url(./files/inter-latin-ext-700-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* inter-latin-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-latin-700-normal.woff2) format('woff2'), url(./files/inter-latin-700-normal.woff) format('woff');
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/800.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/800.css
new file mode 100644
index 0000000000..deba608629
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/800.css
@@ -0,0 +1,69 @@
+/* inter-cyrillic-ext-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-cyrillic-ext-800-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-800-normal.woff) format('woff');
+ unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
+}
+
+/* inter-cyrillic-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-cyrillic-800-normal.woff2) format('woff2'), url(./files/inter-cyrillic-800-normal.woff) format('woff');
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
+}
+
+/* inter-greek-ext-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-greek-ext-800-normal.woff2) format('woff2'), url(./files/inter-greek-ext-800-normal.woff) format('woff');
+ unicode-range: U+1F00-1FFF;
+}
+
+/* inter-greek-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-greek-800-normal.woff2) format('woff2'), url(./files/inter-greek-800-normal.woff) format('woff');
+ unicode-range: U+0370-03FF;
+}
+
+/* inter-vietnamese-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-vietnamese-800-normal.woff2) format('woff2'), url(./files/inter-vietnamese-800-normal.woff) format('woff');
+ 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;
+}
+
+/* inter-latin-ext-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-latin-ext-800-normal.woff2) format('woff2'), url(./files/inter-latin-ext-800-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* inter-latin-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-latin-800-normal.woff2) format('woff2'), url(./files/inter-latin-800-normal.woff) format('woff');
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/900.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/900.css
new file mode 100644
index 0000000000..408ad8e403
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/900.css
@@ -0,0 +1,69 @@
+/* inter-cyrillic-ext-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-cyrillic-ext-900-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-900-normal.woff) format('woff');
+ unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
+}
+
+/* inter-cyrillic-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-cyrillic-900-normal.woff2) format('woff2'), url(./files/inter-cyrillic-900-normal.woff) format('woff');
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
+}
+
+/* inter-greek-ext-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-greek-ext-900-normal.woff2) format('woff2'), url(./files/inter-greek-ext-900-normal.woff) format('woff');
+ unicode-range: U+1F00-1FFF;
+}
+
+/* inter-greek-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-greek-900-normal.woff2) format('woff2'), url(./files/inter-greek-900-normal.woff) format('woff');
+ unicode-range: U+0370-03FF;
+}
+
+/* inter-vietnamese-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-vietnamese-900-normal.woff2) format('woff2'), url(./files/inter-vietnamese-900-normal.woff) format('woff');
+ 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;
+}
+
+/* inter-latin-ext-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-latin-ext-900-normal.woff2) format('woff2'), url(./files/inter-latin-ext-900-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* inter-latin-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-latin-900-normal.woff2) format('woff2'), url(./files/inter-latin-900-normal.woff) format('woff');
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/CHANGELOG.md b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/CHANGELOG.md
new file mode 100644
index 0000000000..e798685bbf
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/CHANGELOG.md
@@ -0,0 +1,2 @@
+# Changelog
+See the [Fontsource CHANGELOG.md](https://github.com/fontsource/fontsource/blob/main/CHANGELOG.md).
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/LICENSE b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/LICENSE
new file mode 100644
index 0000000000..00287df15e
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/LICENSE
@@ -0,0 +1,93 @@
+Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter)
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/README.md b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/README.md
new file mode 100644
index 0000000000..6fa8fc21ac
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/README.md
@@ -0,0 +1,47 @@
+# Fontsource Inter
+
+[![npm (scoped)](https://img.shields.io/npm/v/@fontsource/inter?color=brightgreen)](https://www.npmjs.com/package/@fontsource/inter) [![Generic badge](https://img.shields.io/badge/fontsource-passing-brightgreen)](https://github.com/fontsource/fontsource) [![Monthly downloads](https://badgen.net/npm/dm/@fontsource/inter)](https://github.com/fontsource/fontsource) [![Total downloads](https://badgen.net/npm/dt/@fontsource/inter)](https://github.com/fontsource/fontsource) [![GitHub stars](https://img.shields.io/github/stars/fontsource/fontsource.svg?style=social&label=Star)](https://github.com/fontsource/fontsource/stargazers)
+
+The CSS and web font files to easily self-host the “Inter” font. Please visit the main [Fontsource website](https://fontsource.org/fonts/inter) to view more details on this package.
+
+## Quick Installation
+
+Fontsource offers multiple methods to import the CSS, including using a bundler like Vite or using SASS. You can find full documentation [here](https://fontsource.org/docs/getting-started/introduction).
+
+```javascript
+npm install @fontsource/inter
+```
+
+Within your app entry file or site component, import it in.
+
+```javascript
+import "@fontsource/inter"; // Defaults to weight 400
+import "@fontsource/inter/400.css"; // Specify weight
+import "@fontsource/inter/400-italic.css"; // Specify weight and style
+```
+
+Supported variables:
+- Weights: `[100,200,300,400,500,600,700,800,900]`
+- Styles: `[normal]`
+- Subsets: `[cyrillic,cyrillic-ext,greek,greek-ext,latin,latin-ext,vietnamese]`
+
+> Note: `italic` may not be supported by all fonts. To learn more about what weights and styles are supported, please visit the [Fontsource website](https://fontsource.org/fonts/inter).
+
+Finally, you can reference the font name in a CSS stylesheet, CSS Module, or CSS-in-JS.
+
+```css
+body {
+ font-family: "Inter";
+}
+```
+
+## Licensing
+Always make sure to read the license for each font you use. Most of the fonts in the collection use the SIL Open Font License, v1.1. Some fonts use the Apache 2 license. The Ubuntu fonts use the Ubuntu Font License v1.0.
+
+Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter)
+[OFL-1.1](http://scripts.sil.org/OFL)
+
+## Other Notes
+Font version (provided by source): `v12`.
+
+If you have any suggestions or ideas to improve the performance of font loading or expand the existing library, feel free to star and contribute to this repository. You can share your suggestions or ideas by creating an [issue](https://github.com/fontsource/fontsource/issues).
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-100.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-100.css
new file mode 100644
index 0000000000..0cc8f979db
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-100.css
@@ -0,0 +1,8 @@
+/* inter-cyrillic-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-cyrillic-100-normal.woff2) format('woff2'), url(./files/inter-cyrillic-100-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-200.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-200.css
new file mode 100644
index 0000000000..4ab8f0f2a6
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-200.css
@@ -0,0 +1,8 @@
+/* inter-cyrillic-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-cyrillic-200-normal.woff2) format('woff2'), url(./files/inter-cyrillic-200-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-300.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-300.css
new file mode 100644
index 0000000000..0320bb3d52
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-300.css
@@ -0,0 +1,8 @@
+/* inter-cyrillic-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-cyrillic-300-normal.woff2) format('woff2'), url(./files/inter-cyrillic-300-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-400.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-400.css
new file mode 100644
index 0000000000..6a207eba3f
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-400.css
@@ -0,0 +1,8 @@
+/* inter-cyrillic-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-cyrillic-400-normal.woff2) format('woff2'), url(./files/inter-cyrillic-400-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-500.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-500.css
new file mode 100644
index 0000000000..69008c1f6c
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-500.css
@@ -0,0 +1,8 @@
+/* inter-cyrillic-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-cyrillic-500-normal.woff2) format('woff2'), url(./files/inter-cyrillic-500-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-600.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-600.css
new file mode 100644
index 0000000000..b6d0b994ba
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-600.css
@@ -0,0 +1,8 @@
+/* inter-cyrillic-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-cyrillic-600-normal.woff2) format('woff2'), url(./files/inter-cyrillic-600-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-700.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-700.css
new file mode 100644
index 0000000000..11ae23b6ee
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-700.css
@@ -0,0 +1,8 @@
+/* inter-cyrillic-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-cyrillic-700-normal.woff2) format('woff2'), url(./files/inter-cyrillic-700-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-800.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-800.css
new file mode 100644
index 0000000000..4dd0491303
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-800.css
@@ -0,0 +1,8 @@
+/* inter-cyrillic-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-cyrillic-800-normal.woff2) format('woff2'), url(./files/inter-cyrillic-800-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-900.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-900.css
new file mode 100644
index 0000000000..dff50ac743
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-900.css
@@ -0,0 +1,8 @@
+/* inter-cyrillic-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-cyrillic-900-normal.woff2) format('woff2'), url(./files/inter-cyrillic-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-100.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-100.css
new file mode 100644
index 0000000000..7db4f6a816
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-100.css
@@ -0,0 +1,8 @@
+/* inter-cyrillic-ext-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-cyrillic-ext-100-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-100-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-200.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-200.css
new file mode 100644
index 0000000000..35200d3035
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-200.css
@@ -0,0 +1,8 @@
+/* inter-cyrillic-ext-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-cyrillic-ext-200-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-200-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-300.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-300.css
new file mode 100644
index 0000000000..26ccf659c1
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-300.css
@@ -0,0 +1,8 @@
+/* inter-cyrillic-ext-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-cyrillic-ext-300-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-300-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-400.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-400.css
new file mode 100644
index 0000000000..1d4f6dddc4
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-400.css
@@ -0,0 +1,8 @@
+/* inter-cyrillic-ext-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-cyrillic-ext-400-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-400-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-500.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-500.css
new file mode 100644
index 0000000000..ce6420819d
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-500.css
@@ -0,0 +1,8 @@
+/* inter-cyrillic-ext-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-cyrillic-ext-500-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-500-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-600.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-600.css
new file mode 100644
index 0000000000..a42803b683
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-600.css
@@ -0,0 +1,8 @@
+/* inter-cyrillic-ext-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-cyrillic-ext-600-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-600-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-700.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-700.css
new file mode 100644
index 0000000000..cf21bba522
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-700.css
@@ -0,0 +1,8 @@
+/* inter-cyrillic-ext-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-cyrillic-ext-700-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-700-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-800.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-800.css
new file mode 100644
index 0000000000..603acafa74
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-800.css
@@ -0,0 +1,8 @@
+/* inter-cyrillic-ext-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-cyrillic-ext-800-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-800-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-900.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-900.css
new file mode 100644
index 0000000000..3866701e07
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext-900.css
@@ -0,0 +1,8 @@
+/* inter-cyrillic-ext-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-cyrillic-ext-900-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext.css
new file mode 100644
index 0000000000..f64a5564d8
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic-ext.css
@@ -0,0 +1,80 @@
+/* inter-cyrillic-ext-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-cyrillic-ext-100-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-100-normal.woff) format('woff');
+}
+
+/* inter-cyrillic-ext-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-cyrillic-ext-200-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-200-normal.woff) format('woff');
+}
+
+/* inter-cyrillic-ext-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-cyrillic-ext-300-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-300-normal.woff) format('woff');
+}
+
+/* inter-cyrillic-ext-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-cyrillic-ext-400-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-400-normal.woff) format('woff');
+}
+
+/* inter-cyrillic-ext-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-cyrillic-ext-500-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-500-normal.woff) format('woff');
+}
+
+/* inter-cyrillic-ext-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-cyrillic-ext-600-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-600-normal.woff) format('woff');
+}
+
+/* inter-cyrillic-ext-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-cyrillic-ext-700-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-700-normal.woff) format('woff');
+}
+
+/* inter-cyrillic-ext-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-cyrillic-ext-800-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-800-normal.woff) format('woff');
+}
+
+/* inter-cyrillic-ext-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-cyrillic-ext-900-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic.css
new file mode 100644
index 0000000000..4c41dc313c
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/cyrillic.css
@@ -0,0 +1,80 @@
+/* inter-cyrillic-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-cyrillic-100-normal.woff2) format('woff2'), url(./files/inter-cyrillic-100-normal.woff) format('woff');
+}
+
+/* inter-cyrillic-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-cyrillic-200-normal.woff2) format('woff2'), url(./files/inter-cyrillic-200-normal.woff) format('woff');
+}
+
+/* inter-cyrillic-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-cyrillic-300-normal.woff2) format('woff2'), url(./files/inter-cyrillic-300-normal.woff) format('woff');
+}
+
+/* inter-cyrillic-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-cyrillic-400-normal.woff2) format('woff2'), url(./files/inter-cyrillic-400-normal.woff) format('woff');
+}
+
+/* inter-cyrillic-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-cyrillic-500-normal.woff2) format('woff2'), url(./files/inter-cyrillic-500-normal.woff) format('woff');
+}
+
+/* inter-cyrillic-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-cyrillic-600-normal.woff2) format('woff2'), url(./files/inter-cyrillic-600-normal.woff) format('woff');
+}
+
+/* inter-cyrillic-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-cyrillic-700-normal.woff2) format('woff2'), url(./files/inter-cyrillic-700-normal.woff) format('woff');
+}
+
+/* inter-cyrillic-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-cyrillic-800-normal.woff2) format('woff2'), url(./files/inter-cyrillic-800-normal.woff) format('woff');
+}
+
+/* inter-cyrillic-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-cyrillic-900-normal.woff2) format('woff2'), url(./files/inter-cyrillic-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-100-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-100-normal.woff
new file mode 100644
index 0000000000..0b328f0ed0
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-100-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-100-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-100-normal.woff2
new file mode 100644
index 0000000000..519ef27e60
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-100-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-200-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-200-normal.woff
new file mode 100644
index 0000000000..4bd3fc3b1b
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-200-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-200-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-200-normal.woff2
new file mode 100644
index 0000000000..d94f792fb6
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-200-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-300-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-300-normal.woff
new file mode 100644
index 0000000000..cbfcc5d4ce
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-300-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-300-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-300-normal.woff2
new file mode 100644
index 0000000000..f98e5b2309
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-300-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-400-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-400-normal.woff
new file mode 100644
index 0000000000..3dcb4ecc74
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-400-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-400-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-400-normal.woff2
new file mode 100644
index 0000000000..c1c57683d4
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-400-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-500-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-500-normal.woff
new file mode 100644
index 0000000000..7803e79b1d
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-500-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-500-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-500-normal.woff2
new file mode 100644
index 0000000000..d1518426fa
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-500-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-600-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-600-normal.woff
new file mode 100644
index 0000000000..0dbbbcf911
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-600-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-600-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-600-normal.woff2
new file mode 100644
index 0000000000..b0f0af58b5
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-600-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-700-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-700-normal.woff
new file mode 100644
index 0000000000..c2d977ffba
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-700-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-700-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-700-normal.woff2
new file mode 100644
index 0000000000..22a09b0bb7
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-700-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-800-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-800-normal.woff
new file mode 100644
index 0000000000..19f9d557e8
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-800-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-800-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-800-normal.woff2
new file mode 100644
index 0000000000..cad49b6327
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-800-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-900-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-900-normal.woff
new file mode 100644
index 0000000000..730baf7b66
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-900-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-900-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-900-normal.woff2
new file mode 100644
index 0000000000..d1133f54c2
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-900-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-100-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-100-normal.woff
new file mode 100644
index 0000000000..26d0051005
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-100-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-100-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-100-normal.woff2
new file mode 100644
index 0000000000..878765a5f1
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-100-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-200-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-200-normal.woff
new file mode 100644
index 0000000000..3940678e20
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-200-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-200-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-200-normal.woff2
new file mode 100644
index 0000000000..eb02003206
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-200-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-300-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-300-normal.woff
new file mode 100644
index 0000000000..186e4977b9
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-300-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-300-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-300-normal.woff2
new file mode 100644
index 0000000000..294c7ff844
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-300-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-400-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-400-normal.woff
new file mode 100644
index 0000000000..4017466b88
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-400-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-400-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-400-normal.woff2
new file mode 100644
index 0000000000..da834bb837
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-400-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-500-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-500-normal.woff
new file mode 100644
index 0000000000..1c047a5b50
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-500-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-500-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-500-normal.woff2
new file mode 100644
index 0000000000..5a1646bce5
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-500-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-600-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-600-normal.woff
new file mode 100644
index 0000000000..8d6489d770
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-600-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-600-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-600-normal.woff2
new file mode 100644
index 0000000000..3b4d7f4bc4
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-600-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-700-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-700-normal.woff
new file mode 100644
index 0000000000..cb714dfaa6
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-700-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-700-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-700-normal.woff2
new file mode 100644
index 0000000000..7e52d98cd9
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-700-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-800-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-800-normal.woff
new file mode 100644
index 0000000000..d8f99045bd
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-800-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-800-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-800-normal.woff2
new file mode 100644
index 0000000000..f9a1a8cd52
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-800-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-900-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-900-normal.woff
new file mode 100644
index 0000000000..8919d091f9
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-900-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-900-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-900-normal.woff2
new file mode 100644
index 0000000000..160f0fff85
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-cyrillic-ext-900-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-100-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-100-normal.woff
new file mode 100644
index 0000000000..9d9fa7af61
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-100-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-100-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-100-normal.woff2
new file mode 100644
index 0000000000..bbff286cb1
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-100-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-200-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-200-normal.woff
new file mode 100644
index 0000000000..c7a5b0a80c
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-200-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-200-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-200-normal.woff2
new file mode 100644
index 0000000000..8041bcbff9
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-200-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-300-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-300-normal.woff
new file mode 100644
index 0000000000..cd730de5d0
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-300-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-300-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-300-normal.woff2
new file mode 100644
index 0000000000..e96490ff2f
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-300-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-400-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-400-normal.woff
new file mode 100644
index 0000000000..d293f1fc37
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-400-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-400-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-400-normal.woff2
new file mode 100644
index 0000000000..143a941b81
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-400-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-500-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-500-normal.woff
new file mode 100644
index 0000000000..a450fa7ac2
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-500-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-500-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-500-normal.woff2
new file mode 100644
index 0000000000..5c9863829c
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-500-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-600-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-600-normal.woff
new file mode 100644
index 0000000000..39f5ccbfd6
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-600-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-600-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-600-normal.woff2
new file mode 100644
index 0000000000..f4f0a5eb8c
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-600-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-700-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-700-normal.woff
new file mode 100644
index 0000000000..5eac98ec99
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-700-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-700-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-700-normal.woff2
new file mode 100644
index 0000000000..140147ef94
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-700-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-800-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-800-normal.woff
new file mode 100644
index 0000000000..69c7296b0c
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-800-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-800-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-800-normal.woff2
new file mode 100644
index 0000000000..544d583571
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-800-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-900-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-900-normal.woff
new file mode 100644
index 0000000000..747d9ef834
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-900-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-900-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-900-normal.woff2
new file mode 100644
index 0000000000..ab3f1c08dd
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-900-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-100-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-100-normal.woff
new file mode 100644
index 0000000000..435f25c179
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-100-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-100-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-100-normal.woff2
new file mode 100644
index 0000000000..4f023ac30e
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-100-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-200-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-200-normal.woff
new file mode 100644
index 0000000000..e6c8949dea
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-200-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-200-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-200-normal.woff2
new file mode 100644
index 0000000000..8fa4e47281
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-200-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-300-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-300-normal.woff
new file mode 100644
index 0000000000..57b76f714c
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-300-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-300-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-300-normal.woff2
new file mode 100644
index 0000000000..97e45aae32
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-300-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-400-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-400-normal.woff
new file mode 100644
index 0000000000..1fe940892f
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-400-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-400-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-400-normal.woff2
new file mode 100644
index 0000000000..5f4ae9236e
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-400-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-500-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-500-normal.woff
new file mode 100644
index 0000000000..e61572c2c2
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-500-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-500-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-500-normal.woff2
new file mode 100644
index 0000000000..aec20f619f
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-500-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-600-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-600-normal.woff
new file mode 100644
index 0000000000..b2e6a57337
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-600-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-600-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-600-normal.woff2
new file mode 100644
index 0000000000..0fee707f37
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-600-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-700-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-700-normal.woff
new file mode 100644
index 0000000000..0410e2267f
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-700-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-700-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-700-normal.woff2
new file mode 100644
index 0000000000..3a44ec3683
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-700-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-800-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-800-normal.woff
new file mode 100644
index 0000000000..7e5cc6e976
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-800-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-800-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-800-normal.woff2
new file mode 100644
index 0000000000..3d281d004b
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-800-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-900-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-900-normal.woff
new file mode 100644
index 0000000000..7d81a8b3b1
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-900-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-900-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-900-normal.woff2
new file mode 100644
index 0000000000..c23b86f1d3
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-greek-ext-900-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-100-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-100-normal.woff
new file mode 100644
index 0000000000..f631780793
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-100-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-100-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-100-normal.woff2
new file mode 100644
index 0000000000..1ef2357365
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-100-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-200-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-200-normal.woff
new file mode 100644
index 0000000000..e7f0153597
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-200-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-200-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-200-normal.woff2
new file mode 100644
index 0000000000..ca591ae703
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-200-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-300-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-300-normal.woff
new file mode 100644
index 0000000000..f9a5dd911c
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-300-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-300-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-300-normal.woff2
new file mode 100644
index 0000000000..e085aa82c6
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-300-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-400-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-400-normal.woff
new file mode 100644
index 0000000000..b3db306379
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-400-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-400-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-400-normal.woff2
new file mode 100644
index 0000000000..c659f5e4a1
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-400-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-500-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-500-normal.woff
new file mode 100644
index 0000000000..ee274431c4
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-500-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-500-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-500-normal.woff2
new file mode 100644
index 0000000000..6fc94ad0cc
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-500-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-600-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-600-normal.woff
new file mode 100644
index 0000000000..8ce08d36df
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-600-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-600-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-600-normal.woff2
new file mode 100644
index 0000000000..bc76d107f6
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-600-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-700-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-700-normal.woff
new file mode 100644
index 0000000000..c2cd54d86a
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-700-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-700-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-700-normal.woff2
new file mode 100644
index 0000000000..8fcc4321c7
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-700-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-800-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-800-normal.woff
new file mode 100644
index 0000000000..5a05354c48
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-800-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-800-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-800-normal.woff2
new file mode 100644
index 0000000000..27db0546cd
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-800-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-900-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-900-normal.woff
new file mode 100644
index 0000000000..2da3cacd4d
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-900-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-900-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-900-normal.woff2
new file mode 100644
index 0000000000..b1c208a14c
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-900-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-100-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-100-normal.woff
new file mode 100644
index 0000000000..cc721fa041
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-100-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-100-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-100-normal.woff2
new file mode 100644
index 0000000000..9982f5f6e3
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-100-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-200-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-200-normal.woff
new file mode 100644
index 0000000000..cdf55aa05e
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-200-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-200-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-200-normal.woff2
new file mode 100644
index 0000000000..a822063f13
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-200-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-300-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-300-normal.woff
new file mode 100644
index 0000000000..2ee09656df
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-300-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-300-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-300-normal.woff2
new file mode 100644
index 0000000000..25be677ce2
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-300-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-400-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-400-normal.woff
new file mode 100644
index 0000000000..f71973145a
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-400-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-400-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-400-normal.woff2
new file mode 100644
index 0000000000..b0d08940ce
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-400-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-500-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-500-normal.woff
new file mode 100644
index 0000000000..cfbd116b6c
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-500-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-500-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-500-normal.woff2
new file mode 100644
index 0000000000..e78729184b
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-500-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-600-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-600-normal.woff
new file mode 100644
index 0000000000..cedbd7f9b7
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-600-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-600-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-600-normal.woff2
new file mode 100644
index 0000000000..8ff1de2f40
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-600-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-700-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-700-normal.woff
new file mode 100644
index 0000000000..de34917d80
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-700-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-700-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-700-normal.woff2
new file mode 100644
index 0000000000..d8c5665e3c
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-700-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-800-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-800-normal.woff
new file mode 100644
index 0000000000..0e99197046
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-800-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-800-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-800-normal.woff2
new file mode 100644
index 0000000000..1a2cf49605
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-800-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-900-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-900-normal.woff
new file mode 100644
index 0000000000..e35faf7f92
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-900-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-900-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-900-normal.woff2
new file mode 100644
index 0000000000..2d12b58373
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-latin-ext-900-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-100-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-100-normal.woff
new file mode 100644
index 0000000000..75c85d80db
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-100-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-100-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-100-normal.woff2
new file mode 100644
index 0000000000..1e01e43278
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-100-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-200-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-200-normal.woff
new file mode 100644
index 0000000000..259d7a53f9
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-200-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-200-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-200-normal.woff2
new file mode 100644
index 0000000000..49bf2d611a
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-200-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-300-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-300-normal.woff
new file mode 100644
index 0000000000..7a07034685
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-300-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-300-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-300-normal.woff2
new file mode 100644
index 0000000000..c75e79a68d
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-300-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-400-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-400-normal.woff
new file mode 100644
index 0000000000..4f2b3b5a77
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-400-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-400-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-400-normal.woff2
new file mode 100644
index 0000000000..b9cb104b41
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-400-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-500-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-500-normal.woff
new file mode 100644
index 0000000000..6d8f9f2dbd
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-500-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-500-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-500-normal.woff2
new file mode 100644
index 0000000000..73c7d0f34b
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-500-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-600-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-600-normal.woff
new file mode 100644
index 0000000000..b6e89fb400
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-600-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-600-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-600-normal.woff2
new file mode 100644
index 0000000000..0f59ce62e5
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-600-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-700-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-700-normal.woff
new file mode 100644
index 0000000000..4906979d08
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-700-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-700-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-700-normal.woff2
new file mode 100644
index 0000000000..a9a5314a24
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-700-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-800-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-800-normal.woff
new file mode 100644
index 0000000000..f08df88dce
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-800-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-800-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-800-normal.woff2
new file mode 100644
index 0000000000..56b1f464bd
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-800-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-900-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-900-normal.woff
new file mode 100644
index 0000000000..bf4cad4d85
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-900-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-900-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-900-normal.woff2
new file mode 100644
index 0000000000..27eadde359
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/files/inter-vietnamese-900-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-100.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-100.css
new file mode 100644
index 0000000000..1c2ac29738
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-100.css
@@ -0,0 +1,8 @@
+/* inter-greek-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-greek-100-normal.woff2) format('woff2'), url(./files/inter-greek-100-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-200.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-200.css
new file mode 100644
index 0000000000..140d9eafbc
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-200.css
@@ -0,0 +1,8 @@
+/* inter-greek-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-greek-200-normal.woff2) format('woff2'), url(./files/inter-greek-200-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-300.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-300.css
new file mode 100644
index 0000000000..88a6a9c76a
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-300.css
@@ -0,0 +1,8 @@
+/* inter-greek-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-greek-300-normal.woff2) format('woff2'), url(./files/inter-greek-300-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-400.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-400.css
new file mode 100644
index 0000000000..f739f45bd7
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-400.css
@@ -0,0 +1,8 @@
+/* inter-greek-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-greek-400-normal.woff2) format('woff2'), url(./files/inter-greek-400-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-500.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-500.css
new file mode 100644
index 0000000000..4b7edcc5cd
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-500.css
@@ -0,0 +1,8 @@
+/* inter-greek-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-greek-500-normal.woff2) format('woff2'), url(./files/inter-greek-500-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-600.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-600.css
new file mode 100644
index 0000000000..e0542671a9
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-600.css
@@ -0,0 +1,8 @@
+/* inter-greek-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-greek-600-normal.woff2) format('woff2'), url(./files/inter-greek-600-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-700.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-700.css
new file mode 100644
index 0000000000..c987276421
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-700.css
@@ -0,0 +1,8 @@
+/* inter-greek-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-greek-700-normal.woff2) format('woff2'), url(./files/inter-greek-700-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-800.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-800.css
new file mode 100644
index 0000000000..2952e1c18d
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-800.css
@@ -0,0 +1,8 @@
+/* inter-greek-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-greek-800-normal.woff2) format('woff2'), url(./files/inter-greek-800-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-900.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-900.css
new file mode 100644
index 0000000000..1f0c56be08
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-900.css
@@ -0,0 +1,8 @@
+/* inter-greek-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-greek-900-normal.woff2) format('woff2'), url(./files/inter-greek-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-100.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-100.css
new file mode 100644
index 0000000000..52e0a33552
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-100.css
@@ -0,0 +1,8 @@
+/* inter-greek-ext-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-greek-ext-100-normal.woff2) format('woff2'), url(./files/inter-greek-ext-100-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-200.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-200.css
new file mode 100644
index 0000000000..aa162a971c
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-200.css
@@ -0,0 +1,8 @@
+/* inter-greek-ext-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-greek-ext-200-normal.woff2) format('woff2'), url(./files/inter-greek-ext-200-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-300.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-300.css
new file mode 100644
index 0000000000..4c01e4ca39
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-300.css
@@ -0,0 +1,8 @@
+/* inter-greek-ext-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-greek-ext-300-normal.woff2) format('woff2'), url(./files/inter-greek-ext-300-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-400.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-400.css
new file mode 100644
index 0000000000..dc9ef2ffc4
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-400.css
@@ -0,0 +1,8 @@
+/* inter-greek-ext-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-greek-ext-400-normal.woff2) format('woff2'), url(./files/inter-greek-ext-400-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-500.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-500.css
new file mode 100644
index 0000000000..c315e68857
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-500.css
@@ -0,0 +1,8 @@
+/* inter-greek-ext-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-greek-ext-500-normal.woff2) format('woff2'), url(./files/inter-greek-ext-500-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-600.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-600.css
new file mode 100644
index 0000000000..f01c7406b0
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-600.css
@@ -0,0 +1,8 @@
+/* inter-greek-ext-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-greek-ext-600-normal.woff2) format('woff2'), url(./files/inter-greek-ext-600-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-700.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-700.css
new file mode 100644
index 0000000000..09d14da134
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-700.css
@@ -0,0 +1,8 @@
+/* inter-greek-ext-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-greek-ext-700-normal.woff2) format('woff2'), url(./files/inter-greek-ext-700-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-800.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-800.css
new file mode 100644
index 0000000000..695043bd0e
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-800.css
@@ -0,0 +1,8 @@
+/* inter-greek-ext-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-greek-ext-800-normal.woff2) format('woff2'), url(./files/inter-greek-ext-800-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-900.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-900.css
new file mode 100644
index 0000000000..aebe61a138
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext-900.css
@@ -0,0 +1,8 @@
+/* inter-greek-ext-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-greek-ext-900-normal.woff2) format('woff2'), url(./files/inter-greek-ext-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext.css
new file mode 100644
index 0000000000..c539a087e4
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek-ext.css
@@ -0,0 +1,80 @@
+/* inter-greek-ext-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-greek-ext-100-normal.woff2) format('woff2'), url(./files/inter-greek-ext-100-normal.woff) format('woff');
+}
+
+/* inter-greek-ext-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-greek-ext-200-normal.woff2) format('woff2'), url(./files/inter-greek-ext-200-normal.woff) format('woff');
+}
+
+/* inter-greek-ext-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-greek-ext-300-normal.woff2) format('woff2'), url(./files/inter-greek-ext-300-normal.woff) format('woff');
+}
+
+/* inter-greek-ext-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-greek-ext-400-normal.woff2) format('woff2'), url(./files/inter-greek-ext-400-normal.woff) format('woff');
+}
+
+/* inter-greek-ext-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-greek-ext-500-normal.woff2) format('woff2'), url(./files/inter-greek-ext-500-normal.woff) format('woff');
+}
+
+/* inter-greek-ext-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-greek-ext-600-normal.woff2) format('woff2'), url(./files/inter-greek-ext-600-normal.woff) format('woff');
+}
+
+/* inter-greek-ext-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-greek-ext-700-normal.woff2) format('woff2'), url(./files/inter-greek-ext-700-normal.woff) format('woff');
+}
+
+/* inter-greek-ext-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-greek-ext-800-normal.woff2) format('woff2'), url(./files/inter-greek-ext-800-normal.woff) format('woff');
+}
+
+/* inter-greek-ext-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-greek-ext-900-normal.woff2) format('woff2'), url(./files/inter-greek-ext-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek.css
new file mode 100644
index 0000000000..50710bcdd4
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/greek.css
@@ -0,0 +1,80 @@
+/* inter-greek-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-greek-100-normal.woff2) format('woff2'), url(./files/inter-greek-100-normal.woff) format('woff');
+}
+
+/* inter-greek-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-greek-200-normal.woff2) format('woff2'), url(./files/inter-greek-200-normal.woff) format('woff');
+}
+
+/* inter-greek-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-greek-300-normal.woff2) format('woff2'), url(./files/inter-greek-300-normal.woff) format('woff');
+}
+
+/* inter-greek-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-greek-400-normal.woff2) format('woff2'), url(./files/inter-greek-400-normal.woff) format('woff');
+}
+
+/* inter-greek-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-greek-500-normal.woff2) format('woff2'), url(./files/inter-greek-500-normal.woff) format('woff');
+}
+
+/* inter-greek-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-greek-600-normal.woff2) format('woff2'), url(./files/inter-greek-600-normal.woff) format('woff');
+}
+
+/* inter-greek-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-greek-700-normal.woff2) format('woff2'), url(./files/inter-greek-700-normal.woff) format('woff');
+}
+
+/* inter-greek-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-greek-800-normal.woff2) format('woff2'), url(./files/inter-greek-800-normal.woff) format('woff');
+}
+
+/* inter-greek-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-greek-900-normal.woff2) format('woff2'), url(./files/inter-greek-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/index.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/index.css
new file mode 100644
index 0000000000..dbd4039954
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/index.css
@@ -0,0 +1,69 @@
+/* inter-cyrillic-ext-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-cyrillic-ext-400-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-400-normal.woff) format('woff');
+ unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
+}
+
+/* inter-cyrillic-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-cyrillic-400-normal.woff2) format('woff2'), url(./files/inter-cyrillic-400-normal.woff) format('woff');
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
+}
+
+/* inter-greek-ext-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-greek-ext-400-normal.woff2) format('woff2'), url(./files/inter-greek-ext-400-normal.woff) format('woff');
+ unicode-range: U+1F00-1FFF;
+}
+
+/* inter-greek-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-greek-400-normal.woff2) format('woff2'), url(./files/inter-greek-400-normal.woff) format('woff');
+ unicode-range: U+0370-03FF;
+}
+
+/* inter-vietnamese-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-vietnamese-400-normal.woff2) format('woff2'), url(./files/inter-vietnamese-400-normal.woff) format('woff');
+ 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;
+}
+
+/* inter-latin-ext-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-latin-ext-400-normal.woff2) format('woff2'), url(./files/inter-latin-ext-400-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* inter-latin-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-latin-400-normal.woff2) format('woff2'), url(./files/inter-latin-400-normal.woff) format('woff');
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-100.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-100.css
new file mode 100644
index 0000000000..11c2158a62
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-100.css
@@ -0,0 +1,8 @@
+/* inter-latin-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-latin-100-normal.woff2) format('woff2'), url(./files/inter-latin-100-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-200.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-200.css
new file mode 100644
index 0000000000..91d4488512
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-200.css
@@ -0,0 +1,8 @@
+/* inter-latin-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-latin-200-normal.woff2) format('woff2'), url(./files/inter-latin-200-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-300.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-300.css
new file mode 100644
index 0000000000..7c4781d7aa
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-300.css
@@ -0,0 +1,8 @@
+/* inter-latin-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-latin-300-normal.woff2) format('woff2'), url(./files/inter-latin-300-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-400.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-400.css
new file mode 100644
index 0000000000..87f2d4b19a
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-400.css
@@ -0,0 +1,8 @@
+/* inter-latin-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-latin-400-normal.woff2) format('woff2'), url(./files/inter-latin-400-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-500.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-500.css
new file mode 100644
index 0000000000..25d81dd3f5
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-500.css
@@ -0,0 +1,8 @@
+/* inter-latin-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-latin-500-normal.woff2) format('woff2'), url(./files/inter-latin-500-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-600.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-600.css
new file mode 100644
index 0000000000..649a526404
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-600.css
@@ -0,0 +1,8 @@
+/* inter-latin-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-latin-600-normal.woff2) format('woff2'), url(./files/inter-latin-600-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-700.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-700.css
new file mode 100644
index 0000000000..753ddb2ee9
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-700.css
@@ -0,0 +1,8 @@
+/* inter-latin-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-latin-700-normal.woff2) format('woff2'), url(./files/inter-latin-700-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-800.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-800.css
new file mode 100644
index 0000000000..9216c225d6
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-800.css
@@ -0,0 +1,8 @@
+/* inter-latin-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-latin-800-normal.woff2) format('woff2'), url(./files/inter-latin-800-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-900.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-900.css
new file mode 100644
index 0000000000..824f349122
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-900.css
@@ -0,0 +1,8 @@
+/* inter-latin-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-latin-900-normal.woff2) format('woff2'), url(./files/inter-latin-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-100.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-100.css
new file mode 100644
index 0000000000..bef0354c8d
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-100.css
@@ -0,0 +1,8 @@
+/* inter-latin-ext-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-latin-ext-100-normal.woff2) format('woff2'), url(./files/inter-latin-ext-100-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-200.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-200.css
new file mode 100644
index 0000000000..fb707f46aa
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-200.css
@@ -0,0 +1,8 @@
+/* inter-latin-ext-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-latin-ext-200-normal.woff2) format('woff2'), url(./files/inter-latin-ext-200-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-300.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-300.css
new file mode 100644
index 0000000000..3e1195073b
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-300.css
@@ -0,0 +1,8 @@
+/* inter-latin-ext-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-latin-ext-300-normal.woff2) format('woff2'), url(./files/inter-latin-ext-300-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-400.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-400.css
new file mode 100644
index 0000000000..3bc308cb71
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-400.css
@@ -0,0 +1,8 @@
+/* inter-latin-ext-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-latin-ext-400-normal.woff2) format('woff2'), url(./files/inter-latin-ext-400-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-500.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-500.css
new file mode 100644
index 0000000000..7c8f23a33f
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-500.css
@@ -0,0 +1,8 @@
+/* inter-latin-ext-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-latin-ext-500-normal.woff2) format('woff2'), url(./files/inter-latin-ext-500-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-600.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-600.css
new file mode 100644
index 0000000000..e53cba1c62
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-600.css
@@ -0,0 +1,8 @@
+/* inter-latin-ext-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-latin-ext-600-normal.woff2) format('woff2'), url(./files/inter-latin-ext-600-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-700.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-700.css
new file mode 100644
index 0000000000..f13068c349
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-700.css
@@ -0,0 +1,8 @@
+/* inter-latin-ext-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-latin-ext-700-normal.woff2) format('woff2'), url(./files/inter-latin-ext-700-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-800.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-800.css
new file mode 100644
index 0000000000..2688e9aefa
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-800.css
@@ -0,0 +1,8 @@
+/* inter-latin-ext-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-latin-ext-800-normal.woff2) format('woff2'), url(./files/inter-latin-ext-800-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-900.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-900.css
new file mode 100644
index 0000000000..4a4e69aaff
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext-900.css
@@ -0,0 +1,8 @@
+/* inter-latin-ext-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-latin-ext-900-normal.woff2) format('woff2'), url(./files/inter-latin-ext-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext.css
new file mode 100644
index 0000000000..7253ba858a
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin-ext.css
@@ -0,0 +1,80 @@
+/* inter-latin-ext-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-latin-ext-100-normal.woff2) format('woff2'), url(./files/inter-latin-ext-100-normal.woff) format('woff');
+}
+
+/* inter-latin-ext-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-latin-ext-200-normal.woff2) format('woff2'), url(./files/inter-latin-ext-200-normal.woff) format('woff');
+}
+
+/* inter-latin-ext-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-latin-ext-300-normal.woff2) format('woff2'), url(./files/inter-latin-ext-300-normal.woff) format('woff');
+}
+
+/* inter-latin-ext-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-latin-ext-400-normal.woff2) format('woff2'), url(./files/inter-latin-ext-400-normal.woff) format('woff');
+}
+
+/* inter-latin-ext-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-latin-ext-500-normal.woff2) format('woff2'), url(./files/inter-latin-ext-500-normal.woff) format('woff');
+}
+
+/* inter-latin-ext-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-latin-ext-600-normal.woff2) format('woff2'), url(./files/inter-latin-ext-600-normal.woff) format('woff');
+}
+
+/* inter-latin-ext-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-latin-ext-700-normal.woff2) format('woff2'), url(./files/inter-latin-ext-700-normal.woff) format('woff');
+}
+
+/* inter-latin-ext-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-latin-ext-800-normal.woff2) format('woff2'), url(./files/inter-latin-ext-800-normal.woff) format('woff');
+}
+
+/* inter-latin-ext-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-latin-ext-900-normal.woff2) format('woff2'), url(./files/inter-latin-ext-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin.css
new file mode 100644
index 0000000000..c5a92ac825
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/latin.css
@@ -0,0 +1,80 @@
+/* inter-latin-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-latin-100-normal.woff2) format('woff2'), url(./files/inter-latin-100-normal.woff) format('woff');
+}
+
+/* inter-latin-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-latin-200-normal.woff2) format('woff2'), url(./files/inter-latin-200-normal.woff) format('woff');
+}
+
+/* inter-latin-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-latin-300-normal.woff2) format('woff2'), url(./files/inter-latin-300-normal.woff) format('woff');
+}
+
+/* inter-latin-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-latin-400-normal.woff2) format('woff2'), url(./files/inter-latin-400-normal.woff) format('woff');
+}
+
+/* inter-latin-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-latin-500-normal.woff2) format('woff2'), url(./files/inter-latin-500-normal.woff) format('woff');
+}
+
+/* inter-latin-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-latin-600-normal.woff2) format('woff2'), url(./files/inter-latin-600-normal.woff) format('woff');
+}
+
+/* inter-latin-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-latin-700-normal.woff2) format('woff2'), url(./files/inter-latin-700-normal.woff) format('woff');
+}
+
+/* inter-latin-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-latin-800-normal.woff2) format('woff2'), url(./files/inter-latin-800-normal.woff) format('woff');
+}
+
+/* inter-latin-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-latin-900-normal.woff2) format('woff2'), url(./files/inter-latin-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/metadata.json b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/metadata.json
new file mode 100644
index 0000000000..c3d6d0e6a1
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/metadata.json
@@ -0,0 +1,30 @@
+{
+ "id": "inter",
+ "family": "Inter",
+ "subsets": [
+ "cyrillic",
+ "cyrillic-ext",
+ "greek",
+ "greek-ext",
+ "latin",
+ "latin-ext",
+ "vietnamese"
+ ],
+ "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900],
+ "styles": ["normal"],
+ "defSubset": "latin",
+ "variable": {
+ "slnt": {"default": "0", "min": "-10", "max": "0", "step": "1"},
+ "wght": {"default": "400", "min": "100", "max": "900", "step": "1"}
+ },
+ "lastModified": "2022-09-22",
+ "version": "v12",
+ "category": "sans-serif",
+ "license": {
+ "type": "OFL-1.1",
+ "url": "http://scripts.sil.org/OFL",
+ "attribution": "Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter)"
+ },
+ "source": "https://github.com/google/fonts",
+ "type": "google"
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/package.json b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/package.json
new file mode 100644
index 0000000000..d87c625d4e
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "@fontsource/inter",
+ "version": "5.0.15",
+ "description": "Self-host the Inter font in a neatly bundled NPM package.",
+ "main": "index.css",
+ "publishConfig": {"access": "public"},
+ "keywords": [
+ "fontsource",
+ "font",
+ "font family",
+ "google fonts",
+ "inter",
+ "Inter",
+ "css",
+ "sass",
+ "front-end",
+ "web",
+ "typeface",
+ "variable"
+ ],
+ "author": "Google Inc.",
+ "license": "OFL-1.1",
+ "homepage": "https://fontsource.org/fonts/inter",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/fontsource/font-files.git",
+ "directory": "fonts/google/inter"
+ },
+ "publishHash": "735212724ad407af"
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/scss/metadata.scss b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/scss/metadata.scss
new file mode 100644
index 0000000000..24fe7b1c55
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/scss/metadata.scss
@@ -0,0 +1,22 @@
+$id: 'inter' !default;
+$family: 'Inter' !default;
+$category: sans-serif !default;
+$subsets: (cyrillic, cyrillic-ext, greek, greek-ext, latin, latin-ext, vietnamese) !default;
+$weights: (100, 200, 300, 400, 500, 600, 700, 800, 900) !default;
+$styles: (normal) !default;
+$axes: null !default;
+$defaults: (
+ subset: latin,
+ weight: 400,
+ style: normal,
+ axis: null,
+) !default;
+$unicode: (
+ cyrillic-ext: (U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F),
+ cyrillic: (U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116),
+ greek-ext: (U+1F00-1FFF),
+ greek: (U+0370-03FF),
+ vietnamese: (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: (U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF),
+ latin: (U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD),
+) !default;
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/scss/mixins.scss b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/scss/mixins.scss
new file mode 100644
index 0000000000..4d1c6c3aaf
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/scss/mixins.scss
@@ -0,0 +1,184 @@
+@use 'sass:list';
+@use 'sass:map';
+@use 'sass:math';
+@use 'sass:meta';
+@use 'sass:string';
+
+@use 'metadata';
+
+$metadata: meta.module-variables(metadata) !default;
+$directory: null !default;
+
+$family: null !default;
+$display: null !default;
+$formats: null !default;
+$subsets: null !default;
+$weights: null !default;
+$styles: null !default;
+$axes: null !default;
+
+// Deprecated
+$displayVar: null !default;
+
+@mixin generator(
+ $metadata: $metadata,
+ $directory: $directory,
+ $family: $family,
+ $display: $display,
+ $formats: $formats,
+ $subsets: $subsets,
+ $weights: $weights,
+ $styles: $styles,
+ $axes: $axes,
+
+ // Deprecated
+ $displayVar: $displayVar
+) {
+ @if $displayVar != null {
+ @warn "$displayVar is deprecated due to the limitation of using css variables in @font-face (https://github.com/fontsource/fontsource/issues/726).";
+ }
+
+ $isVariable: map.get($metadata, axes) != null;
+
+ $directory: if(
+ $directory,
+ $directory,
+ '~@fontsource#{if($isVariable, '-variable', '')}/#{map.get($metadata, id)}/files'
+ );
+
+ $family: if($family, $family, map.get($metadata, family) + if($isVariable, ' Variable', ''));
+ $display: if($display, $display, swap);
+ $formats: if(not $formats or $formats == all, if($isVariable, woff2, (woff2, woff)), $formats);
+ $subsets: if(
+ $subsets,
+ if($subsets == all, map.get($metadata, subsets), $subsets),
+ map.get($metadata, defaults, subset)
+ );
+ $weights: if(
+ $weights,
+ if($weights == all, map.get($metadata, weights), $weights),
+ map.get($metadata, defaults, weight)
+ );
+ $styles: if(
+ $styles,
+ if($styles == all, map.get($metadata, styles), $styles),
+ map.get($metadata, defaults, style)
+ );
+ $axes: if(
+ $axes,
+ if($axes == all, full, $axes),
+ if($isVariable, if(map.has-key($metadata, axes, wght), wght, full), null)
+ );
+
+ @each $subset in $subsets {
+ @each $unicodeSubset, $unicodeRange in map.get($metadata, unicode) {
+ @if (
+ ($subset == $unicodeSubset) or
+ (
+ // Is numeric subset
+ ($subset == map.get($metadata, defaults, subset)) and not
+ list.index(map.get($metadata, subsets), $unicodeSubset)
+ )
+ ) {
+ @each $weight in if($axes, null, $weights) {
+ @each $axis in $axes {
+ @each $style in $styles {
+ $variant: '#{map.get($metadata, id)}-#{if($unicodeSubset, $unicodeSubset, $subset)}-#{if($axis, $axis, $weight)}-#{$style}';
+
+ $src: ();
+ @each $format in $formats {
+ $src: append(
+ $src,
+ url('#{$directory}/#{$variant}.#{$format}')
+ format('#{$format}#{if($axis, '-variations', '')}'),
+ comma
+ );
+ }
+
+ @content ((
+ metadata: $metadata,
+ directory: $directory,
+ family: $family,
+ display: $display,
+ formats: $formats,
+ subsets: $subsets,
+ weights: $weights,
+ styles: $styles,
+ axes: $axes,
+
+ variant: $variant,
+ subset: $subset,
+ unicodeSubset: $unicodeSubset,
+ unicodeRange: $unicodeRange,
+ weight: $weight,
+ axis: $axis,
+ style: $style,
+
+ font-family: string.quote($family),
+ font-style: if(
+ (($axis == full) or ($axis == slnt)) and map.has-key($metadata, axes, slnt),
+ oblique map.get($metadata, axes, slnt, min) + deg map.get($metadata, axes, slnt, max) + deg,
+ $style
+ ),
+ font-display: $display,
+ font-weight: if(
+ (($axis == full) or ($axis == wght)) and map.has-key($metadata, axes, wght),
+ map.get($metadata, axes, wght, min) map.get($metadata, axes, wght, max),
+ $weight
+ ),
+ font-stretch: if(
+ (($axis == full) or ($axis == wdth)) and map.has-key($metadata, axes, wdth),
+ '#{map.get($metadata, axes, wdth, min)}% #{map.get($metadata, axes, wdth, max)}%',
+ null
+ ),
+ src: $src,
+ unicode-range: $unicodeRange,
+ ));
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+@mixin faces(
+ $metadata: $metadata,
+ $directory: $directory,
+ $family: $family,
+ $display: $display,
+ $formats: $formats,
+ $subsets: $subsets,
+ $weights: $weights,
+ $styles: $styles,
+ $axes: $axes,
+
+ // Deprecated
+ $displayVar: $displayVar
+) {
+ @include generator(
+ $metadata: $metadata,
+ $directory: $directory,
+ $family: $family,
+ $display: $display,
+ $formats: $formats,
+ $subsets: $subsets,
+ $weights: $weights,
+ $styles: $styles,
+ $axes: $axes,
+
+ $displayVar: $displayVar
+ )
+ using ($props) {
+ /* #{map.get($props, variant)} */
+ @font-face {
+ font-family: map.get($props, font-family);
+ font-style: map.get($props, font-style);
+ font-display: map.get($props, font-display);
+ font-weight: map.get($props, font-weight);
+ font-stretch: map.get($props, font-stretch);
+ unicode-range: map.get($props, unicode-range);
+ src: map.get($props, src);
+ }
+ }
+}
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/unicode.json b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/unicode.json
new file mode 100644
index 0000000000..0cd6dc4b0a
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/unicode.json
@@ -0,0 +1,9 @@
+{
+ "cyrillic-ext": "U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F",
+ "cyrillic": "U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116",
+ "greek-ext": "U+1F00-1FFF",
+ "greek": "U+0370-03FF",
+ "vietnamese": "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": "U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF",
+ "latin": "U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD"
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-100.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-100.css
new file mode 100644
index 0000000000..3d1e9ab8bf
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-100.css
@@ -0,0 +1,8 @@
+/* inter-vietnamese-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-vietnamese-100-normal.woff2) format('woff2'), url(./files/inter-vietnamese-100-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-200.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-200.css
new file mode 100644
index 0000000000..d5bbaf8d8b
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-200.css
@@ -0,0 +1,8 @@
+/* inter-vietnamese-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-vietnamese-200-normal.woff2) format('woff2'), url(./files/inter-vietnamese-200-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-300.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-300.css
new file mode 100644
index 0000000000..dc5cbffe8c
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-300.css
@@ -0,0 +1,8 @@
+/* inter-vietnamese-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-vietnamese-300-normal.woff2) format('woff2'), url(./files/inter-vietnamese-300-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-400.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-400.css
new file mode 100644
index 0000000000..6e93417e1b
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-400.css
@@ -0,0 +1,8 @@
+/* inter-vietnamese-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-vietnamese-400-normal.woff2) format('woff2'), url(./files/inter-vietnamese-400-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-500.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-500.css
new file mode 100644
index 0000000000..60a7ccae90
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-500.css
@@ -0,0 +1,8 @@
+/* inter-vietnamese-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-vietnamese-500-normal.woff2) format('woff2'), url(./files/inter-vietnamese-500-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-600.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-600.css
new file mode 100644
index 0000000000..c18acd043e
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-600.css
@@ -0,0 +1,8 @@
+/* inter-vietnamese-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-vietnamese-600-normal.woff2) format('woff2'), url(./files/inter-vietnamese-600-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-700.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-700.css
new file mode 100644
index 0000000000..23ba9123c1
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-700.css
@@ -0,0 +1,8 @@
+/* inter-vietnamese-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-vietnamese-700-normal.woff2) format('woff2'), url(./files/inter-vietnamese-700-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-800.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-800.css
new file mode 100644
index 0000000000..6a844da34d
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-800.css
@@ -0,0 +1,8 @@
+/* inter-vietnamese-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-vietnamese-800-normal.woff2) format('woff2'), url(./files/inter-vietnamese-800-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-900.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-900.css
new file mode 100644
index 0000000000..e21d6a4da9
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese-900.css
@@ -0,0 +1,8 @@
+/* inter-vietnamese-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-vietnamese-900-normal.woff2) format('woff2'), url(./files/inter-vietnamese-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese.css
new file mode 100644
index 0000000000..3f58350dd3
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/inter/vietnamese.css
@@ -0,0 +1,80 @@
+/* inter-vietnamese-100-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/inter-vietnamese-100-normal.woff2) format('woff2'), url(./files/inter-vietnamese-100-normal.woff) format('woff');
+}
+
+/* inter-vietnamese-200-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/inter-vietnamese-200-normal.woff2) format('woff2'), url(./files/inter-vietnamese-200-normal.woff) format('woff');
+}
+
+/* inter-vietnamese-300-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/inter-vietnamese-300-normal.woff2) format('woff2'), url(./files/inter-vietnamese-300-normal.woff) format('woff');
+}
+
+/* inter-vietnamese-400-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/inter-vietnamese-400-normal.woff2) format('woff2'), url(./files/inter-vietnamese-400-normal.woff) format('woff');
+}
+
+/* inter-vietnamese-500-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/inter-vietnamese-500-normal.woff2) format('woff2'), url(./files/inter-vietnamese-500-normal.woff) format('woff');
+}
+
+/* inter-vietnamese-600-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/inter-vietnamese-600-normal.woff2) format('woff2'), url(./files/inter-vietnamese-600-normal.woff) format('woff');
+}
+
+/* inter-vietnamese-700-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/inter-vietnamese-700-normal.woff2) format('woff2'), url(./files/inter-vietnamese-700-normal.woff) format('woff');
+}
+
+/* inter-vietnamese-800-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/inter-vietnamese-800-normal.woff2) format('woff2'), url(./files/inter-vietnamese-800-normal.woff) format('woff');
+}
+
+/* inter-vietnamese-900-normal */
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/inter-vietnamese-900-normal.woff2) format('woff2'), url(./files/inter-vietnamese-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/100-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/100-italic.css
new file mode 100644
index 0000000000..67d00ce770
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/100-italic.css
@@ -0,0 +1,29 @@
+/* poppins-devanagari-100-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/poppins-devanagari-100-italic.woff2) format('woff2'), url(./files/poppins-devanagari-100-italic.woff) format('woff');
+ unicode-range: U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF;
+}
+
+/* poppins-latin-ext-100-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/poppins-latin-ext-100-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-100-italic.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* poppins-latin-100-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/poppins-latin-100-italic.woff2) format('woff2'), url(./files/poppins-latin-100-italic.woff) format('woff');
+ 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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/100.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/100.css
new file mode 100644
index 0000000000..14212f54f5
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/100.css
@@ -0,0 +1,29 @@
+/* poppins-devanagari-100-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/poppins-devanagari-100-normal.woff2) format('woff2'), url(./files/poppins-devanagari-100-normal.woff) format('woff');
+ unicode-range: U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF;
+}
+
+/* poppins-latin-ext-100-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/poppins-latin-ext-100-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-100-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* poppins-latin-100-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/poppins-latin-100-normal.woff2) format('woff2'), url(./files/poppins-latin-100-normal.woff) format('woff');
+ 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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/200-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/200-italic.css
new file mode 100644
index 0000000000..a192be93f5
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/200-italic.css
@@ -0,0 +1,29 @@
+/* poppins-devanagari-200-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/poppins-devanagari-200-italic.woff2) format('woff2'), url(./files/poppins-devanagari-200-italic.woff) format('woff');
+ unicode-range: U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF;
+}
+
+/* poppins-latin-ext-200-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/poppins-latin-ext-200-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-200-italic.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* poppins-latin-200-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/poppins-latin-200-italic.woff2) format('woff2'), url(./files/poppins-latin-200-italic.woff) format('woff');
+ 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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/200.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/200.css
new file mode 100644
index 0000000000..3a6579c8ea
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/200.css
@@ -0,0 +1,29 @@
+/* poppins-devanagari-200-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/poppins-devanagari-200-normal.woff2) format('woff2'), url(./files/poppins-devanagari-200-normal.woff) format('woff');
+ unicode-range: U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF;
+}
+
+/* poppins-latin-ext-200-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/poppins-latin-ext-200-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-200-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* poppins-latin-200-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/poppins-latin-200-normal.woff2) format('woff2'), url(./files/poppins-latin-200-normal.woff) format('woff');
+ 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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/300-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/300-italic.css
new file mode 100644
index 0000000000..05507df334
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/300-italic.css
@@ -0,0 +1,29 @@
+/* poppins-devanagari-300-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/poppins-devanagari-300-italic.woff2) format('woff2'), url(./files/poppins-devanagari-300-italic.woff) format('woff');
+ unicode-range: U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF;
+}
+
+/* poppins-latin-ext-300-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/poppins-latin-ext-300-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-300-italic.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* poppins-latin-300-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/poppins-latin-300-italic.woff2) format('woff2'), url(./files/poppins-latin-300-italic.woff) format('woff');
+ 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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/300.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/300.css
new file mode 100644
index 0000000000..3a490903b6
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/300.css
@@ -0,0 +1,29 @@
+/* poppins-devanagari-300-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/poppins-devanagari-300-normal.woff2) format('woff2'), url(./files/poppins-devanagari-300-normal.woff) format('woff');
+ unicode-range: U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF;
+}
+
+/* poppins-latin-ext-300-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/poppins-latin-ext-300-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-300-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* poppins-latin-300-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/poppins-latin-300-normal.woff2) format('woff2'), url(./files/poppins-latin-300-normal.woff) format('woff');
+ 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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/400-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/400-italic.css
new file mode 100644
index 0000000000..d231e16d51
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/400-italic.css
@@ -0,0 +1,29 @@
+/* poppins-devanagari-400-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-devanagari-400-italic.woff2) format('woff2'), url(./files/poppins-devanagari-400-italic.woff) format('woff');
+ unicode-range: U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF;
+}
+
+/* poppins-latin-ext-400-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-latin-ext-400-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-400-italic.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* poppins-latin-400-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-latin-400-italic.woff2) format('woff2'), url(./files/poppins-latin-400-italic.woff) format('woff');
+ 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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/400.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/400.css
new file mode 100644
index 0000000000..49de948030
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/400.css
@@ -0,0 +1,29 @@
+/* poppins-devanagari-400-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-devanagari-400-normal.woff2) format('woff2'), url(./files/poppins-devanagari-400-normal.woff) format('woff');
+ unicode-range: U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF;
+}
+
+/* poppins-latin-ext-400-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-latin-ext-400-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-400-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* poppins-latin-400-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-latin-400-normal.woff2) format('woff2'), url(./files/poppins-latin-400-normal.woff) format('woff');
+ 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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/500-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/500-italic.css
new file mode 100644
index 0000000000..cf29078bd1
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/500-italic.css
@@ -0,0 +1,29 @@
+/* poppins-devanagari-500-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/poppins-devanagari-500-italic.woff2) format('woff2'), url(./files/poppins-devanagari-500-italic.woff) format('woff');
+ unicode-range: U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF;
+}
+
+/* poppins-latin-ext-500-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/poppins-latin-ext-500-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-500-italic.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* poppins-latin-500-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/poppins-latin-500-italic.woff2) format('woff2'), url(./files/poppins-latin-500-italic.woff) format('woff');
+ 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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/500.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/500.css
new file mode 100644
index 0000000000..f716b6b8a2
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/500.css
@@ -0,0 +1,29 @@
+/* poppins-devanagari-500-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/poppins-devanagari-500-normal.woff2) format('woff2'), url(./files/poppins-devanagari-500-normal.woff) format('woff');
+ unicode-range: U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF;
+}
+
+/* poppins-latin-ext-500-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/poppins-latin-ext-500-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-500-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* poppins-latin-500-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/poppins-latin-500-normal.woff2) format('woff2'), url(./files/poppins-latin-500-normal.woff) format('woff');
+ 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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/600-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/600-italic.css
new file mode 100644
index 0000000000..2ff161364c
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/600-italic.css
@@ -0,0 +1,29 @@
+/* poppins-devanagari-600-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/poppins-devanagari-600-italic.woff2) format('woff2'), url(./files/poppins-devanagari-600-italic.woff) format('woff');
+ unicode-range: U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF;
+}
+
+/* poppins-latin-ext-600-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/poppins-latin-ext-600-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-600-italic.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* poppins-latin-600-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/poppins-latin-600-italic.woff2) format('woff2'), url(./files/poppins-latin-600-italic.woff) format('woff');
+ 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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/600.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/600.css
new file mode 100644
index 0000000000..031c0d9e25
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/600.css
@@ -0,0 +1,29 @@
+/* poppins-devanagari-600-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/poppins-devanagari-600-normal.woff2) format('woff2'), url(./files/poppins-devanagari-600-normal.woff) format('woff');
+ unicode-range: U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF;
+}
+
+/* poppins-latin-ext-600-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/poppins-latin-ext-600-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-600-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* poppins-latin-600-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/poppins-latin-600-normal.woff2) format('woff2'), url(./files/poppins-latin-600-normal.woff) format('woff');
+ 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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/700-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/700-italic.css
new file mode 100644
index 0000000000..d226df4132
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/700-italic.css
@@ -0,0 +1,29 @@
+/* poppins-devanagari-700-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/poppins-devanagari-700-italic.woff2) format('woff2'), url(./files/poppins-devanagari-700-italic.woff) format('woff');
+ unicode-range: U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF;
+}
+
+/* poppins-latin-ext-700-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/poppins-latin-ext-700-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-700-italic.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* poppins-latin-700-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/poppins-latin-700-italic.woff2) format('woff2'), url(./files/poppins-latin-700-italic.woff) format('woff');
+ 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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/700.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/700.css
new file mode 100644
index 0000000000..191acf52cb
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/700.css
@@ -0,0 +1,29 @@
+/* poppins-devanagari-700-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/poppins-devanagari-700-normal.woff2) format('woff2'), url(./files/poppins-devanagari-700-normal.woff) format('woff');
+ unicode-range: U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF;
+}
+
+/* poppins-latin-ext-700-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/poppins-latin-ext-700-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-700-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* poppins-latin-700-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/poppins-latin-700-normal.woff2) format('woff2'), url(./files/poppins-latin-700-normal.woff) format('woff');
+ 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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/800-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/800-italic.css
new file mode 100644
index 0000000000..09017a4376
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/800-italic.css
@@ -0,0 +1,29 @@
+/* poppins-devanagari-800-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/poppins-devanagari-800-italic.woff2) format('woff2'), url(./files/poppins-devanagari-800-italic.woff) format('woff');
+ unicode-range: U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF;
+}
+
+/* poppins-latin-ext-800-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/poppins-latin-ext-800-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-800-italic.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* poppins-latin-800-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/poppins-latin-800-italic.woff2) format('woff2'), url(./files/poppins-latin-800-italic.woff) format('woff');
+ 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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/800.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/800.css
new file mode 100644
index 0000000000..937462a621
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/800.css
@@ -0,0 +1,29 @@
+/* poppins-devanagari-800-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/poppins-devanagari-800-normal.woff2) format('woff2'), url(./files/poppins-devanagari-800-normal.woff) format('woff');
+ unicode-range: U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF;
+}
+
+/* poppins-latin-ext-800-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/poppins-latin-ext-800-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-800-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* poppins-latin-800-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/poppins-latin-800-normal.woff2) format('woff2'), url(./files/poppins-latin-800-normal.woff) format('woff');
+ 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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/900-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/900-italic.css
new file mode 100644
index 0000000000..cf899e9952
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/900-italic.css
@@ -0,0 +1,29 @@
+/* poppins-devanagari-900-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/poppins-devanagari-900-italic.woff2) format('woff2'), url(./files/poppins-devanagari-900-italic.woff) format('woff');
+ unicode-range: U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF;
+}
+
+/* poppins-latin-ext-900-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/poppins-latin-ext-900-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-900-italic.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* poppins-latin-900-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/poppins-latin-900-italic.woff2) format('woff2'), url(./files/poppins-latin-900-italic.woff) format('woff');
+ 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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/900.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/900.css
new file mode 100644
index 0000000000..d839ae15bf
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/900.css
@@ -0,0 +1,29 @@
+/* poppins-devanagari-900-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/poppins-devanagari-900-normal.woff2) format('woff2'), url(./files/poppins-devanagari-900-normal.woff) format('woff');
+ unicode-range: U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF;
+}
+
+/* poppins-latin-ext-900-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/poppins-latin-ext-900-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-900-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* poppins-latin-900-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/poppins-latin-900-normal.woff2) format('woff2'), url(./files/poppins-latin-900-normal.woff) format('woff');
+ 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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/CHANGELOG.md b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/CHANGELOG.md
new file mode 100644
index 0000000000..e798685bbf
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/CHANGELOG.md
@@ -0,0 +1,2 @@
+# Changelog
+See the [Fontsource CHANGELOG.md](https://github.com/fontsource/fontsource/blob/main/CHANGELOG.md).
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/LICENSE b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/LICENSE
new file mode 100644
index 0000000000..c2fef66637
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/LICENSE
@@ -0,0 +1,93 @@
+Copyright 2020 The Poppins Project Authors (https://github.com/itfoundry/Poppins)
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/README.md b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/README.md
new file mode 100644
index 0000000000..c58f02aa4f
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/README.md
@@ -0,0 +1,47 @@
+# Fontsource Poppins
+
+[![npm (scoped)](https://img.shields.io/npm/v/@fontsource/poppins?color=brightgreen)](https://www.npmjs.com/package/@fontsource/poppins) [![Generic badge](https://img.shields.io/badge/fontsource-passing-brightgreen)](https://github.com/fontsource/fontsource) [![Monthly downloads](https://badgen.net/npm/dm/@fontsource/poppins)](https://github.com/fontsource/fontsource) [![Total downloads](https://badgen.net/npm/dt/@fontsource/poppins)](https://github.com/fontsource/fontsource) [![GitHub stars](https://img.shields.io/github/stars/fontsource/fontsource.svg?style=social&label=Star)](https://github.com/fontsource/fontsource/stargazers)
+
+The CSS and web font files to easily self-host the “Poppins” font. Please visit the main [Fontsource website](https://fontsource.org/fonts/poppins) to view more details on this package.
+
+## Quick Installation
+
+Fontsource offers multiple methods to import the CSS, including using a bundler like Vite or using SASS. You can find full documentation [here](https://fontsource.org/docs/getting-started/introduction).
+
+```javascript
+npm install @fontsource/poppins
+```
+
+Within your app entry file or site component, import it in.
+
+```javascript
+import "@fontsource/poppins"; // Defaults to weight 400
+import "@fontsource/poppins/400.css"; // Specify weight
+import "@fontsource/poppins/400-italic.css"; // Specify weight and style
+```
+
+Supported variables:
+- Weights: `[100,200,300,400,500,600,700,800,900]`
+- Styles: `[italic,normal]`
+- Subsets: `[devanagari,latin,latin-ext]`
+
+> Note: `italic` may not be supported by all fonts. To learn more about what weights and styles are supported, please visit the [Fontsource website](https://fontsource.org/fonts/poppins).
+
+Finally, you can reference the font name in a CSS stylesheet, CSS Module, or CSS-in-JS.
+
+```css
+body {
+ font-family: "Poppins";
+}
+```
+
+## Licensing
+Always make sure to read the license for each font you use. Most of the fonts in the collection use the SIL Open Font License, v1.1. Some fonts use the Apache 2 license. The Ubuntu fonts use the Ubuntu Font License v1.0.
+
+Copyright 2020 The Poppins Project Authors (https://github.com/itfoundry/Poppins)
+[OFL-1.1](http://scripts.sil.org/OFL)
+
+## Other Notes
+Font version (provided by source): `v20`.
+
+If you have any suggestions or ideas to improve the performance of font loading or expand the existing library, feel free to star and contribute to this repository. You can share your suggestions or ideas by creating an [issue](https://github.com/fontsource/fontsource/issues).
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-100-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-100-italic.css
new file mode 100644
index 0000000000..909001bffc
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-100-italic.css
@@ -0,0 +1,8 @@
+/* poppins-devanagari-100-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/poppins-devanagari-100-italic.woff2) format('woff2'), url(./files/poppins-devanagari-100-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-100.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-100.css
new file mode 100644
index 0000000000..01730e024a
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-100.css
@@ -0,0 +1,8 @@
+/* poppins-devanagari-100-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/poppins-devanagari-100-normal.woff2) format('woff2'), url(./files/poppins-devanagari-100-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-200-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-200-italic.css
new file mode 100644
index 0000000000..06fdd754bc
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-200-italic.css
@@ -0,0 +1,8 @@
+/* poppins-devanagari-200-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/poppins-devanagari-200-italic.woff2) format('woff2'), url(./files/poppins-devanagari-200-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-200.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-200.css
new file mode 100644
index 0000000000..9ca33ea6cd
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-200.css
@@ -0,0 +1,8 @@
+/* poppins-devanagari-200-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/poppins-devanagari-200-normal.woff2) format('woff2'), url(./files/poppins-devanagari-200-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-300-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-300-italic.css
new file mode 100644
index 0000000000..d6feaaaa0e
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-300-italic.css
@@ -0,0 +1,8 @@
+/* poppins-devanagari-300-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/poppins-devanagari-300-italic.woff2) format('woff2'), url(./files/poppins-devanagari-300-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-300.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-300.css
new file mode 100644
index 0000000000..a5cb6534e2
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-300.css
@@ -0,0 +1,8 @@
+/* poppins-devanagari-300-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/poppins-devanagari-300-normal.woff2) format('woff2'), url(./files/poppins-devanagari-300-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-400-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-400-italic.css
new file mode 100644
index 0000000000..51727be22e
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-400-italic.css
@@ -0,0 +1,8 @@
+/* poppins-devanagari-400-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-devanagari-400-italic.woff2) format('woff2'), url(./files/poppins-devanagari-400-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-400.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-400.css
new file mode 100644
index 0000000000..c9fe446cea
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-400.css
@@ -0,0 +1,8 @@
+/* poppins-devanagari-400-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-devanagari-400-normal.woff2) format('woff2'), url(./files/poppins-devanagari-400-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-500-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-500-italic.css
new file mode 100644
index 0000000000..3db6ffad0b
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-500-italic.css
@@ -0,0 +1,8 @@
+/* poppins-devanagari-500-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/poppins-devanagari-500-italic.woff2) format('woff2'), url(./files/poppins-devanagari-500-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-500.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-500.css
new file mode 100644
index 0000000000..768b59f48c
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-500.css
@@ -0,0 +1,8 @@
+/* poppins-devanagari-500-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/poppins-devanagari-500-normal.woff2) format('woff2'), url(./files/poppins-devanagari-500-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-600-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-600-italic.css
new file mode 100644
index 0000000000..5040ae585a
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-600-italic.css
@@ -0,0 +1,8 @@
+/* poppins-devanagari-600-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/poppins-devanagari-600-italic.woff2) format('woff2'), url(./files/poppins-devanagari-600-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-600.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-600.css
new file mode 100644
index 0000000000..834b48e320
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-600.css
@@ -0,0 +1,8 @@
+/* poppins-devanagari-600-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/poppins-devanagari-600-normal.woff2) format('woff2'), url(./files/poppins-devanagari-600-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-700-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-700-italic.css
new file mode 100644
index 0000000000..ba707d74d7
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-700-italic.css
@@ -0,0 +1,8 @@
+/* poppins-devanagari-700-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/poppins-devanagari-700-italic.woff2) format('woff2'), url(./files/poppins-devanagari-700-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-700.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-700.css
new file mode 100644
index 0000000000..dbe7e0811f
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-700.css
@@ -0,0 +1,8 @@
+/* poppins-devanagari-700-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/poppins-devanagari-700-normal.woff2) format('woff2'), url(./files/poppins-devanagari-700-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-800-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-800-italic.css
new file mode 100644
index 0000000000..6a05c13e49
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-800-italic.css
@@ -0,0 +1,8 @@
+/* poppins-devanagari-800-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/poppins-devanagari-800-italic.woff2) format('woff2'), url(./files/poppins-devanagari-800-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-800.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-800.css
new file mode 100644
index 0000000000..9bbf93a44c
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-800.css
@@ -0,0 +1,8 @@
+/* poppins-devanagari-800-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/poppins-devanagari-800-normal.woff2) format('woff2'), url(./files/poppins-devanagari-800-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-900-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-900-italic.css
new file mode 100644
index 0000000000..c8831b4c1c
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-900-italic.css
@@ -0,0 +1,8 @@
+/* poppins-devanagari-900-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/poppins-devanagari-900-italic.woff2) format('woff2'), url(./files/poppins-devanagari-900-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-900.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-900.css
new file mode 100644
index 0000000000..d71032b0bf
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-900.css
@@ -0,0 +1,8 @@
+/* poppins-devanagari-900-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/poppins-devanagari-900-normal.woff2) format('woff2'), url(./files/poppins-devanagari-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-italic.css
new file mode 100644
index 0000000000..aa9ff1fcc8
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari-italic.css
@@ -0,0 +1,80 @@
+/* poppins-devanagari-100-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/poppins-devanagari-100-italic.woff2) format('woff2'), url(./files/poppins-devanagari-100-italic.woff) format('woff');
+}
+
+/* poppins-devanagari-200-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/poppins-devanagari-200-italic.woff2) format('woff2'), url(./files/poppins-devanagari-200-italic.woff) format('woff');
+}
+
+/* poppins-devanagari-300-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/poppins-devanagari-300-italic.woff2) format('woff2'), url(./files/poppins-devanagari-300-italic.woff) format('woff');
+}
+
+/* poppins-devanagari-400-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-devanagari-400-italic.woff2) format('woff2'), url(./files/poppins-devanagari-400-italic.woff) format('woff');
+}
+
+/* poppins-devanagari-500-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/poppins-devanagari-500-italic.woff2) format('woff2'), url(./files/poppins-devanagari-500-italic.woff) format('woff');
+}
+
+/* poppins-devanagari-600-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/poppins-devanagari-600-italic.woff2) format('woff2'), url(./files/poppins-devanagari-600-italic.woff) format('woff');
+}
+
+/* poppins-devanagari-700-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/poppins-devanagari-700-italic.woff2) format('woff2'), url(./files/poppins-devanagari-700-italic.woff) format('woff');
+}
+
+/* poppins-devanagari-800-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/poppins-devanagari-800-italic.woff2) format('woff2'), url(./files/poppins-devanagari-800-italic.woff) format('woff');
+}
+
+/* poppins-devanagari-900-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/poppins-devanagari-900-italic.woff2) format('woff2'), url(./files/poppins-devanagari-900-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari.css
new file mode 100644
index 0000000000..571fe38b84
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/devanagari.css
@@ -0,0 +1,80 @@
+/* poppins-devanagari-100-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/poppins-devanagari-100-normal.woff2) format('woff2'), url(./files/poppins-devanagari-100-normal.woff) format('woff');
+}
+
+/* poppins-devanagari-200-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/poppins-devanagari-200-normal.woff2) format('woff2'), url(./files/poppins-devanagari-200-normal.woff) format('woff');
+}
+
+/* poppins-devanagari-300-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/poppins-devanagari-300-normal.woff2) format('woff2'), url(./files/poppins-devanagari-300-normal.woff) format('woff');
+}
+
+/* poppins-devanagari-400-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-devanagari-400-normal.woff2) format('woff2'), url(./files/poppins-devanagari-400-normal.woff) format('woff');
+}
+
+/* poppins-devanagari-500-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/poppins-devanagari-500-normal.woff2) format('woff2'), url(./files/poppins-devanagari-500-normal.woff) format('woff');
+}
+
+/* poppins-devanagari-600-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/poppins-devanagari-600-normal.woff2) format('woff2'), url(./files/poppins-devanagari-600-normal.woff) format('woff');
+}
+
+/* poppins-devanagari-700-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/poppins-devanagari-700-normal.woff2) format('woff2'), url(./files/poppins-devanagari-700-normal.woff) format('woff');
+}
+
+/* poppins-devanagari-800-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/poppins-devanagari-800-normal.woff2) format('woff2'), url(./files/poppins-devanagari-800-normal.woff) format('woff');
+}
+
+/* poppins-devanagari-900-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/poppins-devanagari-900-normal.woff2) format('woff2'), url(./files/poppins-devanagari-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-100-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-100-italic.woff
new file mode 100644
index 0000000000..ca201df505
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-100-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-100-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-100-italic.woff2
new file mode 100644
index 0000000000..4a1f80bb03
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-100-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-100-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-100-normal.woff
new file mode 100644
index 0000000000..8f1ef815bf
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-100-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-100-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-100-normal.woff2
new file mode 100644
index 0000000000..803d058ff3
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-100-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-200-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-200-italic.woff
new file mode 100644
index 0000000000..fd1e2856c7
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-200-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-200-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-200-italic.woff2
new file mode 100644
index 0000000000..49cb7fd190
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-200-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-200-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-200-normal.woff
new file mode 100644
index 0000000000..6d4da5df65
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-200-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-200-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-200-normal.woff2
new file mode 100644
index 0000000000..4224410628
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-200-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-300-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-300-italic.woff
new file mode 100644
index 0000000000..e128381ccc
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-300-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-300-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-300-italic.woff2
new file mode 100644
index 0000000000..6bcfd3a354
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-300-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-300-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-300-normal.woff
new file mode 100644
index 0000000000..2bd921b874
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-300-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-300-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-300-normal.woff2
new file mode 100644
index 0000000000..ef13593674
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-300-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-400-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-400-italic.woff
new file mode 100644
index 0000000000..a6d711a237
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-400-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-400-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-400-italic.woff2
new file mode 100644
index 0000000000..ac23a319fc
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-400-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-400-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-400-normal.woff
new file mode 100644
index 0000000000..4d7d066e9b
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-400-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-400-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-400-normal.woff2
new file mode 100644
index 0000000000..3295a4cc9d
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-400-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-500-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-500-italic.woff
new file mode 100644
index 0000000000..3539c25b14
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-500-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-500-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-500-italic.woff2
new file mode 100644
index 0000000000..a9d88cb56f
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-500-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-500-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-500-normal.woff
new file mode 100644
index 0000000000..225deab818
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-500-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-500-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-500-normal.woff2
new file mode 100644
index 0000000000..7850aa30a0
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-500-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-600-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-600-italic.woff
new file mode 100644
index 0000000000..5bb1c0eb9d
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-600-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-600-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-600-italic.woff2
new file mode 100644
index 0000000000..b4cc88cdc5
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-600-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-600-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-600-normal.woff
new file mode 100644
index 0000000000..31daea9e86
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-600-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-600-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-600-normal.woff2
new file mode 100644
index 0000000000..354d0a4d32
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-600-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-700-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-700-italic.woff
new file mode 100644
index 0000000000..0fd75a5b69
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-700-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-700-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-700-italic.woff2
new file mode 100644
index 0000000000..37a865fd16
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-700-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-700-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-700-normal.woff
new file mode 100644
index 0000000000..e66dea1c29
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-700-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-700-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-700-normal.woff2
new file mode 100644
index 0000000000..742e144243
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-700-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-800-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-800-italic.woff
new file mode 100644
index 0000000000..cb4219c814
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-800-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-800-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-800-italic.woff2
new file mode 100644
index 0000000000..62f1935c11
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-800-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-800-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-800-normal.woff
new file mode 100644
index 0000000000..ab4987a352
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-800-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-800-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-800-normal.woff2
new file mode 100644
index 0000000000..57750c4cba
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-800-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-900-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-900-italic.woff
new file mode 100644
index 0000000000..a5bc05b4cc
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-900-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-900-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-900-italic.woff2
new file mode 100644
index 0000000000..5c678d3809
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-900-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-900-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-900-normal.woff
new file mode 100644
index 0000000000..7a3649970b
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-900-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-900-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-900-normal.woff2
new file mode 100644
index 0000000000..151119ac9b
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-devanagari-900-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-100-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-100-italic.woff
new file mode 100644
index 0000000000..68218e0a36
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-100-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-100-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-100-italic.woff2
new file mode 100644
index 0000000000..f43fd413a0
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-100-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-100-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-100-normal.woff
new file mode 100644
index 0000000000..f0105d9393
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-100-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-100-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-100-normal.woff2
new file mode 100644
index 0000000000..e59b153706
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-100-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-200-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-200-italic.woff
new file mode 100644
index 0000000000..ce22b40140
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-200-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-200-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-200-italic.woff2
new file mode 100644
index 0000000000..33f40adbcd
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-200-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-200-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-200-normal.woff
new file mode 100644
index 0000000000..b4285645ad
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-200-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-200-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-200-normal.woff2
new file mode 100644
index 0000000000..eeacdfe44f
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-200-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-300-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-300-italic.woff
new file mode 100644
index 0000000000..56b1cd1b2e
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-300-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-300-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-300-italic.woff2
new file mode 100644
index 0000000000..0e9e94d46c
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-300-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-300-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-300-normal.woff
new file mode 100644
index 0000000000..8fca442126
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-300-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-300-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-300-normal.woff2
new file mode 100644
index 0000000000..962b734ef6
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-300-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-400-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-400-italic.woff
new file mode 100644
index 0000000000..bf1e22d9d2
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-400-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-400-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-400-italic.woff2
new file mode 100644
index 0000000000..11123368e5
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-400-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-400-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-400-normal.woff
new file mode 100644
index 0000000000..31c978ec57
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-400-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-400-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-400-normal.woff2
new file mode 100644
index 0000000000..b69e0091c2
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-400-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-500-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-500-italic.woff
new file mode 100644
index 0000000000..1d56ffe140
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-500-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-500-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-500-italic.woff2
new file mode 100644
index 0000000000..b995ebb6e0
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-500-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-500-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-500-normal.woff
new file mode 100644
index 0000000000..715e749c02
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-500-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-500-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-500-normal.woff2
new file mode 100644
index 0000000000..c6603368bf
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-500-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-600-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-600-italic.woff
new file mode 100644
index 0000000000..f7ed8caf1c
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-600-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-600-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-600-italic.woff2
new file mode 100644
index 0000000000..27331a9cb8
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-600-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-600-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-600-normal.woff
new file mode 100644
index 0000000000..5dc9627f1a
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-600-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-600-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-600-normal.woff2
new file mode 100644
index 0000000000..921e962b91
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-600-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-700-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-700-italic.woff
new file mode 100644
index 0000000000..40f6b16c2b
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-700-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-700-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-700-italic.woff2
new file mode 100644
index 0000000000..70974d82d2
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-700-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-700-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-700-normal.woff
new file mode 100644
index 0000000000..069f9c2ee8
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-700-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-700-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-700-normal.woff2
new file mode 100644
index 0000000000..bf022fc77e
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-700-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-800-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-800-italic.woff
new file mode 100644
index 0000000000..31bdc9783d
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-800-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-800-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-800-italic.woff2
new file mode 100644
index 0000000000..d956b75cfd
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-800-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-800-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-800-normal.woff
new file mode 100644
index 0000000000..46b74ca10f
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-800-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-800-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-800-normal.woff2
new file mode 100644
index 0000000000..f107b3699f
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-800-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-900-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-900-italic.woff
new file mode 100644
index 0000000000..abfe392350
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-900-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-900-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-900-italic.woff2
new file mode 100644
index 0000000000..b00cf810c1
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-900-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-900-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-900-normal.woff
new file mode 100644
index 0000000000..9cbc383e97
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-900-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-900-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-900-normal.woff2
new file mode 100644
index 0000000000..71f96dedc3
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-900-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-100-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-100-italic.woff
new file mode 100644
index 0000000000..c95e057eb2
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-100-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-100-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-100-italic.woff2
new file mode 100644
index 0000000000..e05ab2872f
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-100-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-100-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-100-normal.woff
new file mode 100644
index 0000000000..3b283ccd45
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-100-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-100-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-100-normal.woff2
new file mode 100644
index 0000000000..013dcfa373
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-100-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-200-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-200-italic.woff
new file mode 100644
index 0000000000..bf618d8979
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-200-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-200-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-200-italic.woff2
new file mode 100644
index 0000000000..4737d6715d
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-200-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-200-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-200-normal.woff
new file mode 100644
index 0000000000..5cf3cdba8e
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-200-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-200-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-200-normal.woff2
new file mode 100644
index 0000000000..7f7277c866
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-200-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-300-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-300-italic.woff
new file mode 100644
index 0000000000..35b2a682ba
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-300-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-300-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-300-italic.woff2
new file mode 100644
index 0000000000..3936c46388
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-300-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-300-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-300-normal.woff
new file mode 100644
index 0000000000..fa1c9ede44
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-300-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-300-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-300-normal.woff2
new file mode 100644
index 0000000000..d4f44c60cd
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-300-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-400-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-400-italic.woff
new file mode 100644
index 0000000000..f04494001b
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-400-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-400-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-400-italic.woff2
new file mode 100644
index 0000000000..580055c1e8
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-400-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-400-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-400-normal.woff
new file mode 100644
index 0000000000..646c012ba7
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-400-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-400-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-400-normal.woff2
new file mode 100644
index 0000000000..c871a3e7fc
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-400-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-500-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-500-italic.woff
new file mode 100644
index 0000000000..1ad1cd9f70
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-500-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-500-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-500-italic.woff2
new file mode 100644
index 0000000000..bcea2301a6
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-500-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-500-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-500-normal.woff
new file mode 100644
index 0000000000..449d66db0a
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-500-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-500-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-500-normal.woff2
new file mode 100644
index 0000000000..ba96dfd0f8
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-500-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-600-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-600-italic.woff
new file mode 100644
index 0000000000..413c6c6848
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-600-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-600-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-600-italic.woff2
new file mode 100644
index 0000000000..4d78d07f3f
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-600-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-600-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-600-normal.woff
new file mode 100644
index 0000000000..90e06aa5a0
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-600-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-600-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-600-normal.woff2
new file mode 100644
index 0000000000..644e5150ea
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-600-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-700-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-700-italic.woff
new file mode 100644
index 0000000000..28c570a5e1
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-700-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-700-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-700-italic.woff2
new file mode 100644
index 0000000000..32a50fafd4
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-700-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-700-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-700-normal.woff
new file mode 100644
index 0000000000..09abe53787
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-700-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-700-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-700-normal.woff2
new file mode 100644
index 0000000000..c1ee9a8c81
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-700-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-800-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-800-italic.woff
new file mode 100644
index 0000000000..c9b3810481
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-800-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-800-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-800-italic.woff2
new file mode 100644
index 0000000000..54a56a92d9
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-800-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-800-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-800-normal.woff
new file mode 100644
index 0000000000..f3848df007
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-800-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-800-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-800-normal.woff2
new file mode 100644
index 0000000000..9fee4bd1bd
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-800-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-900-italic.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-900-italic.woff
new file mode 100644
index 0000000000..fb8729ec7c
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-900-italic.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-900-italic.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-900-italic.woff2
new file mode 100644
index 0000000000..3d499912d8
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-900-italic.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-900-normal.woff b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-900-normal.woff
new file mode 100644
index 0000000000..a00d70814e
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-900-normal.woff differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-900-normal.woff2 b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-900-normal.woff2
new file mode 100644
index 0000000000..86e43dc70a
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/files/poppins-latin-ext-900-normal.woff2 differ
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/index.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/index.css
new file mode 100644
index 0000000000..49de948030
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/index.css
@@ -0,0 +1,29 @@
+/* poppins-devanagari-400-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-devanagari-400-normal.woff2) format('woff2'), url(./files/poppins-devanagari-400-normal.woff) format('woff');
+ unicode-range: U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF;
+}
+
+/* poppins-latin-ext-400-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-latin-ext-400-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-400-normal.woff) format('woff');
+ unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
+}
+
+/* poppins-latin-400-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-latin-400-normal.woff2) format('woff2'), url(./files/poppins-latin-400-normal.woff) format('woff');
+ 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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-100-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-100-italic.css
new file mode 100644
index 0000000000..308b87c55e
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-100-italic.css
@@ -0,0 +1,8 @@
+/* poppins-latin-100-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/poppins-latin-100-italic.woff2) format('woff2'), url(./files/poppins-latin-100-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-100.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-100.css
new file mode 100644
index 0000000000..ef3f46fefb
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-100.css
@@ -0,0 +1,8 @@
+/* poppins-latin-100-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/poppins-latin-100-normal.woff2) format('woff2'), url(./files/poppins-latin-100-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-200-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-200-italic.css
new file mode 100644
index 0000000000..3dae4110c5
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-200-italic.css
@@ -0,0 +1,8 @@
+/* poppins-latin-200-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/poppins-latin-200-italic.woff2) format('woff2'), url(./files/poppins-latin-200-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-200.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-200.css
new file mode 100644
index 0000000000..5613256db0
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-200.css
@@ -0,0 +1,8 @@
+/* poppins-latin-200-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/poppins-latin-200-normal.woff2) format('woff2'), url(./files/poppins-latin-200-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-300-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-300-italic.css
new file mode 100644
index 0000000000..a7cd65715c
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-300-italic.css
@@ -0,0 +1,8 @@
+/* poppins-latin-300-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/poppins-latin-300-italic.woff2) format('woff2'), url(./files/poppins-latin-300-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-300.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-300.css
new file mode 100644
index 0000000000..f12e52255f
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-300.css
@@ -0,0 +1,8 @@
+/* poppins-latin-300-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/poppins-latin-300-normal.woff2) format('woff2'), url(./files/poppins-latin-300-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-400-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-400-italic.css
new file mode 100644
index 0000000000..97dc9f9cc0
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-400-italic.css
@@ -0,0 +1,8 @@
+/* poppins-latin-400-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-latin-400-italic.woff2) format('woff2'), url(./files/poppins-latin-400-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-400.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-400.css
new file mode 100644
index 0000000000..9a244aa68c
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-400.css
@@ -0,0 +1,8 @@
+/* poppins-latin-400-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-latin-400-normal.woff2) format('woff2'), url(./files/poppins-latin-400-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-500-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-500-italic.css
new file mode 100644
index 0000000000..3bcb85624e
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-500-italic.css
@@ -0,0 +1,8 @@
+/* poppins-latin-500-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/poppins-latin-500-italic.woff2) format('woff2'), url(./files/poppins-latin-500-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-500.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-500.css
new file mode 100644
index 0000000000..6f4fc44eed
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-500.css
@@ -0,0 +1,8 @@
+/* poppins-latin-500-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/poppins-latin-500-normal.woff2) format('woff2'), url(./files/poppins-latin-500-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-600-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-600-italic.css
new file mode 100644
index 0000000000..e37b7ab200
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-600-italic.css
@@ -0,0 +1,8 @@
+/* poppins-latin-600-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/poppins-latin-600-italic.woff2) format('woff2'), url(./files/poppins-latin-600-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-600.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-600.css
new file mode 100644
index 0000000000..135ac0b1c4
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-600.css
@@ -0,0 +1,8 @@
+/* poppins-latin-600-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/poppins-latin-600-normal.woff2) format('woff2'), url(./files/poppins-latin-600-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-700-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-700-italic.css
new file mode 100644
index 0000000000..3c2be8bc52
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-700-italic.css
@@ -0,0 +1,8 @@
+/* poppins-latin-700-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/poppins-latin-700-italic.woff2) format('woff2'), url(./files/poppins-latin-700-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-700.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-700.css
new file mode 100644
index 0000000000..dca4abcef6
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-700.css
@@ -0,0 +1,8 @@
+/* poppins-latin-700-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/poppins-latin-700-normal.woff2) format('woff2'), url(./files/poppins-latin-700-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-800-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-800-italic.css
new file mode 100644
index 0000000000..a3bcecf95a
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-800-italic.css
@@ -0,0 +1,8 @@
+/* poppins-latin-800-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/poppins-latin-800-italic.woff2) format('woff2'), url(./files/poppins-latin-800-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-800.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-800.css
new file mode 100644
index 0000000000..8ae087b2fb
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-800.css
@@ -0,0 +1,8 @@
+/* poppins-latin-800-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/poppins-latin-800-normal.woff2) format('woff2'), url(./files/poppins-latin-800-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-900-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-900-italic.css
new file mode 100644
index 0000000000..9314239f88
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-900-italic.css
@@ -0,0 +1,8 @@
+/* poppins-latin-900-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/poppins-latin-900-italic.woff2) format('woff2'), url(./files/poppins-latin-900-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-900.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-900.css
new file mode 100644
index 0000000000..7c132df8c0
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-900.css
@@ -0,0 +1,8 @@
+/* poppins-latin-900-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/poppins-latin-900-normal.woff2) format('woff2'), url(./files/poppins-latin-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-100-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-100-italic.css
new file mode 100644
index 0000000000..b2f2ae0f6f
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-100-italic.css
@@ -0,0 +1,8 @@
+/* poppins-latin-ext-100-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/poppins-latin-ext-100-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-100-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-100.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-100.css
new file mode 100644
index 0000000000..c3b2ecf4d2
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-100.css
@@ -0,0 +1,8 @@
+/* poppins-latin-ext-100-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/poppins-latin-ext-100-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-100-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-200-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-200-italic.css
new file mode 100644
index 0000000000..349aedbe98
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-200-italic.css
@@ -0,0 +1,8 @@
+/* poppins-latin-ext-200-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/poppins-latin-ext-200-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-200-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-200.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-200.css
new file mode 100644
index 0000000000..b8fa09a732
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-200.css
@@ -0,0 +1,8 @@
+/* poppins-latin-ext-200-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/poppins-latin-ext-200-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-200-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-300-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-300-italic.css
new file mode 100644
index 0000000000..1a1f9ffe9d
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-300-italic.css
@@ -0,0 +1,8 @@
+/* poppins-latin-ext-300-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/poppins-latin-ext-300-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-300-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-300.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-300.css
new file mode 100644
index 0000000000..b4f915d3e2
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-300.css
@@ -0,0 +1,8 @@
+/* poppins-latin-ext-300-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/poppins-latin-ext-300-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-300-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-400-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-400-italic.css
new file mode 100644
index 0000000000..50c494f9f7
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-400-italic.css
@@ -0,0 +1,8 @@
+/* poppins-latin-ext-400-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-latin-ext-400-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-400-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-400.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-400.css
new file mode 100644
index 0000000000..0d8bf5215a
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-400.css
@@ -0,0 +1,8 @@
+/* poppins-latin-ext-400-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-latin-ext-400-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-400-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-500-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-500-italic.css
new file mode 100644
index 0000000000..590a1a4bd9
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-500-italic.css
@@ -0,0 +1,8 @@
+/* poppins-latin-ext-500-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/poppins-latin-ext-500-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-500-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-500.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-500.css
new file mode 100644
index 0000000000..d9f13ad75a
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-500.css
@@ -0,0 +1,8 @@
+/* poppins-latin-ext-500-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/poppins-latin-ext-500-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-500-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-600-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-600-italic.css
new file mode 100644
index 0000000000..c3464acbe4
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-600-italic.css
@@ -0,0 +1,8 @@
+/* poppins-latin-ext-600-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/poppins-latin-ext-600-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-600-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-600.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-600.css
new file mode 100644
index 0000000000..238f34f470
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-600.css
@@ -0,0 +1,8 @@
+/* poppins-latin-ext-600-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/poppins-latin-ext-600-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-600-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-700-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-700-italic.css
new file mode 100644
index 0000000000..f246207dc8
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-700-italic.css
@@ -0,0 +1,8 @@
+/* poppins-latin-ext-700-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/poppins-latin-ext-700-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-700-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-700.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-700.css
new file mode 100644
index 0000000000..c6c53b6ba1
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-700.css
@@ -0,0 +1,8 @@
+/* poppins-latin-ext-700-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/poppins-latin-ext-700-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-700-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-800-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-800-italic.css
new file mode 100644
index 0000000000..0688b3b90e
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-800-italic.css
@@ -0,0 +1,8 @@
+/* poppins-latin-ext-800-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/poppins-latin-ext-800-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-800-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-800.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-800.css
new file mode 100644
index 0000000000..9cd696a429
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-800.css
@@ -0,0 +1,8 @@
+/* poppins-latin-ext-800-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/poppins-latin-ext-800-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-800-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-900-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-900-italic.css
new file mode 100644
index 0000000000..e774c4cd3f
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-900-italic.css
@@ -0,0 +1,8 @@
+/* poppins-latin-ext-900-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/poppins-latin-ext-900-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-900-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-900.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-900.css
new file mode 100644
index 0000000000..cf3284f8c1
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-900.css
@@ -0,0 +1,8 @@
+/* poppins-latin-ext-900-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/poppins-latin-ext-900-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-italic.css
new file mode 100644
index 0000000000..d0dacaac7e
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext-italic.css
@@ -0,0 +1,80 @@
+/* poppins-latin-ext-100-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/poppins-latin-ext-100-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-100-italic.woff) format('woff');
+}
+
+/* poppins-latin-ext-200-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/poppins-latin-ext-200-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-200-italic.woff) format('woff');
+}
+
+/* poppins-latin-ext-300-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/poppins-latin-ext-300-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-300-italic.woff) format('woff');
+}
+
+/* poppins-latin-ext-400-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-latin-ext-400-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-400-italic.woff) format('woff');
+}
+
+/* poppins-latin-ext-500-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/poppins-latin-ext-500-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-500-italic.woff) format('woff');
+}
+
+/* poppins-latin-ext-600-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/poppins-latin-ext-600-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-600-italic.woff) format('woff');
+}
+
+/* poppins-latin-ext-700-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/poppins-latin-ext-700-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-700-italic.woff) format('woff');
+}
+
+/* poppins-latin-ext-800-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/poppins-latin-ext-800-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-800-italic.woff) format('woff');
+}
+
+/* poppins-latin-ext-900-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/poppins-latin-ext-900-italic.woff2) format('woff2'), url(./files/poppins-latin-ext-900-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext.css
new file mode 100644
index 0000000000..a1fc2904e2
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-ext.css
@@ -0,0 +1,80 @@
+/* poppins-latin-ext-100-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/poppins-latin-ext-100-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-100-normal.woff) format('woff');
+}
+
+/* poppins-latin-ext-200-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/poppins-latin-ext-200-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-200-normal.woff) format('woff');
+}
+
+/* poppins-latin-ext-300-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/poppins-latin-ext-300-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-300-normal.woff) format('woff');
+}
+
+/* poppins-latin-ext-400-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-latin-ext-400-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-400-normal.woff) format('woff');
+}
+
+/* poppins-latin-ext-500-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/poppins-latin-ext-500-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-500-normal.woff) format('woff');
+}
+
+/* poppins-latin-ext-600-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/poppins-latin-ext-600-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-600-normal.woff) format('woff');
+}
+
+/* poppins-latin-ext-700-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/poppins-latin-ext-700-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-700-normal.woff) format('woff');
+}
+
+/* poppins-latin-ext-800-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/poppins-latin-ext-800-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-800-normal.woff) format('woff');
+}
+
+/* poppins-latin-ext-900-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/poppins-latin-ext-900-normal.woff2) format('woff2'), url(./files/poppins-latin-ext-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-italic.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-italic.css
new file mode 100644
index 0000000000..c1a427e36f
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin-italic.css
@@ -0,0 +1,80 @@
+/* poppins-latin-100-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/poppins-latin-100-italic.woff2) format('woff2'), url(./files/poppins-latin-100-italic.woff) format('woff');
+}
+
+/* poppins-latin-200-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/poppins-latin-200-italic.woff2) format('woff2'), url(./files/poppins-latin-200-italic.woff) format('woff');
+}
+
+/* poppins-latin-300-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/poppins-latin-300-italic.woff2) format('woff2'), url(./files/poppins-latin-300-italic.woff) format('woff');
+}
+
+/* poppins-latin-400-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-latin-400-italic.woff2) format('woff2'), url(./files/poppins-latin-400-italic.woff) format('woff');
+}
+
+/* poppins-latin-500-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/poppins-latin-500-italic.woff2) format('woff2'), url(./files/poppins-latin-500-italic.woff) format('woff');
+}
+
+/* poppins-latin-600-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/poppins-latin-600-italic.woff2) format('woff2'), url(./files/poppins-latin-600-italic.woff) format('woff');
+}
+
+/* poppins-latin-700-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/poppins-latin-700-italic.woff2) format('woff2'), url(./files/poppins-latin-700-italic.woff) format('woff');
+}
+
+/* poppins-latin-800-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/poppins-latin-800-italic.woff2) format('woff2'), url(./files/poppins-latin-800-italic.woff) format('woff');
+}
+
+/* poppins-latin-900-italic */
+@font-face {
+ font-family: 'Poppins';
+ font-style: italic;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/poppins-latin-900-italic.woff2) format('woff2'), url(./files/poppins-latin-900-italic.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin.css b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin.css
new file mode 100644
index 0000000000..71ec627b75
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/latin.css
@@ -0,0 +1,80 @@
+/* poppins-latin-100-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 100;
+ src: url(./files/poppins-latin-100-normal.woff2) format('woff2'), url(./files/poppins-latin-100-normal.woff) format('woff');
+}
+
+/* poppins-latin-200-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 200;
+ src: url(./files/poppins-latin-200-normal.woff2) format('woff2'), url(./files/poppins-latin-200-normal.woff) format('woff');
+}
+
+/* poppins-latin-300-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 300;
+ src: url(./files/poppins-latin-300-normal.woff2) format('woff2'), url(./files/poppins-latin-300-normal.woff) format('woff');
+}
+
+/* poppins-latin-400-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 400;
+ src: url(./files/poppins-latin-400-normal.woff2) format('woff2'), url(./files/poppins-latin-400-normal.woff) format('woff');
+}
+
+/* poppins-latin-500-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 500;
+ src: url(./files/poppins-latin-500-normal.woff2) format('woff2'), url(./files/poppins-latin-500-normal.woff) format('woff');
+}
+
+/* poppins-latin-600-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 600;
+ src: url(./files/poppins-latin-600-normal.woff2) format('woff2'), url(./files/poppins-latin-600-normal.woff) format('woff');
+}
+
+/* poppins-latin-700-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 700;
+ src: url(./files/poppins-latin-700-normal.woff2) format('woff2'), url(./files/poppins-latin-700-normal.woff) format('woff');
+}
+
+/* poppins-latin-800-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 800;
+ src: url(./files/poppins-latin-800-normal.woff2) format('woff2'), url(./files/poppins-latin-800-normal.woff) format('woff');
+}
+
+/* poppins-latin-900-normal */
+@font-face {
+ font-family: 'Poppins';
+ font-style: normal;
+ font-display: swap;
+ font-weight: 900;
+ src: url(./files/poppins-latin-900-normal.woff2) format('woff2'), url(./files/poppins-latin-900-normal.woff) format('woff');
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/metadata.json b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/metadata.json
new file mode 100644
index 0000000000..71f860a6f9
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/metadata.json
@@ -0,0 +1,19 @@
+{
+ "id": "poppins",
+ "family": "Poppins",
+ "subsets": ["devanagari", "latin", "latin-ext"],
+ "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900],
+ "styles": ["italic", "normal"],
+ "defSubset": "latin",
+ "variable": false,
+ "lastModified": "2022-09-22",
+ "version": "v20",
+ "category": "sans-serif",
+ "license": {
+ "type": "OFL-1.1",
+ "url": "http://scripts.sil.org/OFL",
+ "attribution": "Copyright 2020 The Poppins Project Authors (https://github.com/itfoundry/Poppins)"
+ },
+ "source": "https://github.com/google/fonts",
+ "type": "google"
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/package.json b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/package.json
new file mode 100644
index 0000000000..e6ce292e1f
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "@fontsource/poppins",
+ "version": "5.0.8",
+ "description": "Self-host the Poppins font in a neatly bundled NPM package.",
+ "main": "index.css",
+ "publishConfig": {"access": "public"},
+ "keywords": [
+ "fontsource",
+ "font",
+ "font family",
+ "google fonts",
+ "poppins",
+ "Poppins",
+ "css",
+ "sass",
+ "front-end",
+ "web",
+ "typeface",
+ "variable"
+ ],
+ "author": "Google Inc.",
+ "license": "OFL-1.1",
+ "homepage": "https://fontsource.org/fonts/poppins",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/fontsource/font-files.git",
+ "directory": "fonts/google/poppins"
+ },
+ "publishHash": "237451c862138dbd"
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/scss/metadata.scss b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/scss/metadata.scss
new file mode 100644
index 0000000000..142eec9402
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/scss/metadata.scss
@@ -0,0 +1,18 @@
+$id: 'poppins' !default;
+$family: 'Poppins' !default;
+$category: sans-serif !default;
+$subsets: (devanagari, latin, latin-ext) !default;
+$weights: (100, 200, 300, 400, 500, 600, 700, 800, 900) !default;
+$styles: (italic, normal) !default;
+$axes: null !default;
+$defaults: (
+ subset: latin,
+ weight: 400,
+ style: normal,
+ axis: null,
+) !default;
+$unicode: (
+ devanagari: (U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF),
+ latin-ext: (U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF),
+ latin: (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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD),
+) !default;
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/scss/mixins.scss b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/scss/mixins.scss
new file mode 100644
index 0000000000..4d1c6c3aaf
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/scss/mixins.scss
@@ -0,0 +1,184 @@
+@use 'sass:list';
+@use 'sass:map';
+@use 'sass:math';
+@use 'sass:meta';
+@use 'sass:string';
+
+@use 'metadata';
+
+$metadata: meta.module-variables(metadata) !default;
+$directory: null !default;
+
+$family: null !default;
+$display: null !default;
+$formats: null !default;
+$subsets: null !default;
+$weights: null !default;
+$styles: null !default;
+$axes: null !default;
+
+// Deprecated
+$displayVar: null !default;
+
+@mixin generator(
+ $metadata: $metadata,
+ $directory: $directory,
+ $family: $family,
+ $display: $display,
+ $formats: $formats,
+ $subsets: $subsets,
+ $weights: $weights,
+ $styles: $styles,
+ $axes: $axes,
+
+ // Deprecated
+ $displayVar: $displayVar
+) {
+ @if $displayVar != null {
+ @warn "$displayVar is deprecated due to the limitation of using css variables in @font-face (https://github.com/fontsource/fontsource/issues/726).";
+ }
+
+ $isVariable: map.get($metadata, axes) != null;
+
+ $directory: if(
+ $directory,
+ $directory,
+ '~@fontsource#{if($isVariable, '-variable', '')}/#{map.get($metadata, id)}/files'
+ );
+
+ $family: if($family, $family, map.get($metadata, family) + if($isVariable, ' Variable', ''));
+ $display: if($display, $display, swap);
+ $formats: if(not $formats or $formats == all, if($isVariable, woff2, (woff2, woff)), $formats);
+ $subsets: if(
+ $subsets,
+ if($subsets == all, map.get($metadata, subsets), $subsets),
+ map.get($metadata, defaults, subset)
+ );
+ $weights: if(
+ $weights,
+ if($weights == all, map.get($metadata, weights), $weights),
+ map.get($metadata, defaults, weight)
+ );
+ $styles: if(
+ $styles,
+ if($styles == all, map.get($metadata, styles), $styles),
+ map.get($metadata, defaults, style)
+ );
+ $axes: if(
+ $axes,
+ if($axes == all, full, $axes),
+ if($isVariable, if(map.has-key($metadata, axes, wght), wght, full), null)
+ );
+
+ @each $subset in $subsets {
+ @each $unicodeSubset, $unicodeRange in map.get($metadata, unicode) {
+ @if (
+ ($subset == $unicodeSubset) or
+ (
+ // Is numeric subset
+ ($subset == map.get($metadata, defaults, subset)) and not
+ list.index(map.get($metadata, subsets), $unicodeSubset)
+ )
+ ) {
+ @each $weight in if($axes, null, $weights) {
+ @each $axis in $axes {
+ @each $style in $styles {
+ $variant: '#{map.get($metadata, id)}-#{if($unicodeSubset, $unicodeSubset, $subset)}-#{if($axis, $axis, $weight)}-#{$style}';
+
+ $src: ();
+ @each $format in $formats {
+ $src: append(
+ $src,
+ url('#{$directory}/#{$variant}.#{$format}')
+ format('#{$format}#{if($axis, '-variations', '')}'),
+ comma
+ );
+ }
+
+ @content ((
+ metadata: $metadata,
+ directory: $directory,
+ family: $family,
+ display: $display,
+ formats: $formats,
+ subsets: $subsets,
+ weights: $weights,
+ styles: $styles,
+ axes: $axes,
+
+ variant: $variant,
+ subset: $subset,
+ unicodeSubset: $unicodeSubset,
+ unicodeRange: $unicodeRange,
+ weight: $weight,
+ axis: $axis,
+ style: $style,
+
+ font-family: string.quote($family),
+ font-style: if(
+ (($axis == full) or ($axis == slnt)) and map.has-key($metadata, axes, slnt),
+ oblique map.get($metadata, axes, slnt, min) + deg map.get($metadata, axes, slnt, max) + deg,
+ $style
+ ),
+ font-display: $display,
+ font-weight: if(
+ (($axis == full) or ($axis == wght)) and map.has-key($metadata, axes, wght),
+ map.get($metadata, axes, wght, min) map.get($metadata, axes, wght, max),
+ $weight
+ ),
+ font-stretch: if(
+ (($axis == full) or ($axis == wdth)) and map.has-key($metadata, axes, wdth),
+ '#{map.get($metadata, axes, wdth, min)}% #{map.get($metadata, axes, wdth, max)}%',
+ null
+ ),
+ src: $src,
+ unicode-range: $unicodeRange,
+ ));
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+@mixin faces(
+ $metadata: $metadata,
+ $directory: $directory,
+ $family: $family,
+ $display: $display,
+ $formats: $formats,
+ $subsets: $subsets,
+ $weights: $weights,
+ $styles: $styles,
+ $axes: $axes,
+
+ // Deprecated
+ $displayVar: $displayVar
+) {
+ @include generator(
+ $metadata: $metadata,
+ $directory: $directory,
+ $family: $family,
+ $display: $display,
+ $formats: $formats,
+ $subsets: $subsets,
+ $weights: $weights,
+ $styles: $styles,
+ $axes: $axes,
+
+ $displayVar: $displayVar
+ )
+ using ($props) {
+ /* #{map.get($props, variant)} */
+ @font-face {
+ font-family: map.get($props, font-family);
+ font-style: map.get($props, font-style);
+ font-display: map.get($props, font-display);
+ font-weight: map.get($props, font-weight);
+ font-stretch: map.get($props, font-stretch);
+ unicode-range: map.get($props, unicode-range);
+ src: map.get($props, src);
+ }
+ }
+}
diff --git a/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/unicode.json b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/unicode.json
new file mode 100644
index 0000000000..610c96673f
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/node_modules/@fontsource/poppins/unicode.json
@@ -0,0 +1,5 @@
+{
+ "devanagari": "U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF",
+ "latin-ext": "U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF",
+ "latin": "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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD"
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/package.json b/node_modules/nodebb-theme-harmony/package.json
new file mode 100644
index 0000000000..37f18b5ea0
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/package.json
@@ -0,0 +1,48 @@
+{
+ "name": "nodebb-theme-harmony",
+ "version": "1.2.63",
+ "nbbpm": {
+ "compatibility": "^3.7.0"
+ },
+ "description": "Harmony theme for NodeBB",
+ "main": "library.js",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/NodeBB/nodebb-theme-harmony"
+ },
+ "scripts": {
+ "lint": "eslint ."
+ },
+ "keywords": [
+ "nodebb",
+ "theme",
+ "forum",
+ "bootstrap",
+ "responsive"
+ ],
+ "contributors": [
+ {
+ "name": "Julian Lam",
+ "email": "julian@nodebb.org",
+ "url": "https://github.com/julianlam"
+ },
+ {
+ "name": "Barış Soner Uşaklı",
+ "email": "baris@nodebb.org",
+ "url": "https://github.com/barisusakli"
+ }
+ ],
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/NodeBB/nodebb-theme-harmony/issues"
+ },
+ "dependencies": {
+ "@fontsource/inter": "5.0.15",
+ "@fontsource/poppins": "5.0.8"
+ },
+ "devDependencies": {
+ "eslint": "^9.0.0",
+ "eslint-config-nodebb": "^0.2.0",
+ "eslint-plugin-import": "^2.24.2"
+ }
+}
diff --git a/node_modules/nodebb-theme-harmony/plugin.json b/node_modules/nodebb-theme-harmony/plugin.json
new file mode 100644
index 0000000000..9a5bb19183
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/plugin.json
@@ -0,0 +1,26 @@
+{
+ "id": "nodebb-theme-harmony",
+ "hooks": [
+ { "hook": "static:app.load", "method": "init" },
+ { "hook": "filter:admin.header.build", "method": "addAdminNavigation" },
+ { "hook": "filter:widgets.getAreas", "method": "defineWidgetAreas" },
+ { "hook": "filter:config.get", "method": "getThemeConfig" },
+ { "hook": "filter:settings.get", "method": "getAdminSettings"},
+ { "hook": "filter:user.saveSettings", "method": "saveUserSettings" },
+ { "hook": "filter:user.profileMenu", "method": "addProfileItem" },
+ { "hook": "filter:middleware.renderHeader", "method": "filterMiddlewareRenderHeader" },
+ { "hook": "filter:teasers.configureStripTags", "method": "filterTeasersConfigureStripTags"}
+ ],
+ "scripts": [
+ "public/harmony.js"
+ ],
+ "modules": {
+ "../admin/plugins/harmony.js": "public/admin.js",
+ "../client/account/theme.js": "public/settings.js"
+ },
+ "staticDirs": {
+ "inter": "node_modules/@fontsource/inter/files",
+ "poppins": "node_modules/@fontsource/poppins/files"
+ },
+ "languages": "languages"
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/public/.eslintrc b/node_modules/nodebb-theme-harmony/public/.eslintrc
new file mode 100644
index 0000000000..a3ce8297a6
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/public/.eslintrc
@@ -0,0 +1,3 @@
+{
+ "extends": "nodebb/public"
+}
diff --git a/node_modules/nodebb-theme-harmony/public/admin.js b/node_modules/nodebb-theme-harmony/public/admin.js
new file mode 100644
index 0000000000..6df37a7156
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/public/admin.js
@@ -0,0 +1,15 @@
+'use strict';
+
+define('admin/plugins/harmony', ['settings'], function (Settings) {
+ var ACP = {};
+
+ ACP.init = function () {
+ Settings.load('harmony', $('.harmony-settings'));
+
+ $('#save').on('click', function () {
+ Settings.save('harmony', $('.harmony-settings'));
+ });
+ };
+
+ return ACP;
+});
diff --git a/node_modules/nodebb-theme-harmony/public/harmony.js b/node_modules/nodebb-theme-harmony/public/harmony.js
new file mode 100644
index 0000000000..63870554f3
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/public/harmony.js
@@ -0,0 +1,287 @@
+'use strict';
+
+$(document).ready(function () {
+ setupSkinSwitcher();
+ setupNProgress();
+ setupMobileMenu();
+ setupSearch();
+ setupDrafts();
+ handleMobileNavigator();
+ setupNavTooltips();
+ fixPlaceholders();
+ fixSidebarOverflow();
+
+ function setupSkinSwitcher() {
+ $('[component="skinSwitcher"]').on('click', '.dropdown-item', function () {
+ const skin = $(this).attr('data-value');
+ $('[component="skinSwitcher"] .dropdown-item .fa-check').addClass('invisible');
+ $(this).find('.fa-check').removeClass('invisible');
+ require(['forum/account/settings', 'hooks'], function (accountSettings, hooks) {
+ hooks.one('action:skin.change', function () {
+ $('[component="skinSwitcher"] [component="skinSwitcher/icon"]').removeClass('fa-fade');
+ });
+ $('[component="skinSwitcher"] [component="skinSwitcher/icon"]').addClass('fa-fade');
+ accountSettings.changeSkin(skin);
+ });
+ });
+ }
+
+ require(['hooks'], function (hooks) {
+ $(window).on('action:composer.resize action:sidebar.toggle', function () {
+ const isRtl = $('html').attr('data-dir') === 'rtl';
+ const css = {
+ width: $('#panel').width(),
+ };
+ const sidebarEl = $('.sidebar-left');
+ css[isRtl ? 'right' : 'left'] = sidebarEl.is(':visible') ? sidebarEl.outerWidth(true) : 0;
+ $('[component="composer"]').css(css);
+ });
+
+ hooks.on('filter:chat.openChat', function (hookData) {
+ // disables chat modals & goes straight to chat page based on user setting
+ hookData.modal = config.theme.chatModals && !utils.isMobile();
+ return hookData;
+ });
+ });
+
+ function setupMobileMenu() {
+ require(['hooks', 'api', 'navigator'], function (hooks, api, navigator) {
+ $('[component="sidebar/toggle"]').on('click', async function () {
+ const sidebarEl = $('.sidebar');
+ sidebarEl.toggleClass('open');
+ if (app.user.uid) {
+ await api.put(`/users/${app.user.uid}/settings`, {
+ settings: {
+ openSidebars: sidebarEl.hasClass('open') ? 'on' : 'off',
+ },
+ });
+ }
+ $(window).trigger('action:sidebar.toggle');
+ if (ajaxify.data.template.topic) {
+ hooks.fire('action:navigator.update', { newIndex: navigator.getIndex() });
+ }
+ });
+
+ const bottomBar = $('[component="bottombar"]');
+ const $body = $('body');
+ const $window = $(window);
+ $body.on('shown.bs.dropdown hidden.bs.dropdown', '.sticky-tools', function () {
+ bottomBar.toggleClass('hidden', $(this).find('.dropdown-menu.show').length);
+ });
+ function isSearchVisible() {
+ return !!$('[component="bottombar"] [component="sidebar/search"] .search-dropdown.show').length;
+ }
+
+ let lastScrollTop = 0;
+ let newPostsLoaded = false;
+
+ function onWindowScroll() {
+ const st = $window.scrollTop();
+ if (newPostsLoaded) {
+ newPostsLoaded = false;
+ lastScrollTop = st;
+ return;
+ }
+ if (st !== lastScrollTop && !navigator.scrollActive && !isSearchVisible()) {
+ const diff = Math.abs(st - lastScrollTop);
+ const scrolledDown = st > lastScrollTop;
+ const scrolledUp = st < lastScrollTop;
+ if (diff > 5) {
+ bottomBar.css({
+ bottom: !scrolledUp && scrolledDown ?
+ -bottomBar.find('.bottombar-nav').outerHeight(true) :
+ 0,
+ });
+ }
+ }
+ lastScrollTop = st;
+ }
+
+ const delayedScroll = utils.throttle(onWindowScroll, 250);
+ function enableAutohide() {
+ $window.off('scroll', delayedScroll);
+ if (config.theme.autohideBottombar) {
+ lastScrollTop = $window.scrollTop();
+ $window.on('scroll', delayedScroll);
+ }
+ }
+
+ hooks.on('action:posts.loading', function () {
+ $window.off('scroll', delayedScroll);
+ });
+ hooks.on('action:posts.loaded', function () {
+ newPostsLoaded = true;
+ setTimeout(enableAutohide, 250);
+ });
+ hooks.on('action:ajaxify.end', function () {
+ $window.off('scroll', delayedScroll);
+ bottomBar.css({ bottom: 0 });
+ setTimeout(enableAutohide, 250);
+ });
+ });
+ }
+
+ function setupSearch() {
+ $('[component="sidebar/search"]').on('shown.bs.dropdown', function () {
+ $(this).find('[component="search/fields"] input[name="query"]').trigger('focus');
+ });
+ }
+
+ function setupDrafts() {
+ require(['composer/drafts', 'bootbox'], function (drafts, bootbox) {
+ const draftsEl = $('[component="sidebar/drafts"]');
+
+ function updateBadgeCount() {
+ const count = drafts.getAvailableCount();
+ if (count > 0) {
+ draftsEl.removeClass('hidden');
+ }
+ $('[component="drafts/count"]').toggleClass('hidden', count <= 0).text(count);
+ }
+
+ async function renderDraftList() {
+ const draftListEl = $('[component="drafts/list"]');
+ const draftItems = drafts.listAvailable();
+ if (!draftItems.length) {
+ draftListEl.find('.no-drafts').removeClass('hidden');
+ draftListEl.find('.placeholder-wave').addClass('hidden');
+ draftListEl.find('.draft-item-container').html('');
+ return;
+ }
+ draftItems.reverse().forEach((draft) => {
+ if (draft) {
+ if (draft.title) {
+ draft.title = utils.escapeHTML(String(draft.title));
+ }
+ draft.text = utils.escapeHTML(
+ draft.text
+ ).replace(/(?:\r\n|\r|\n)/g, '
');
+ }
+ });
+
+ const html = await app.parseAndTranslate('partials/sidebar/drafts', 'drafts', { drafts: draftItems });
+ draftListEl.find('.no-drafts').addClass('hidden');
+ draftListEl.find('.placeholder-wave').addClass('hidden');
+ draftListEl.find('.draft-item-container').html(html).find('.timeago').timeago();
+ }
+
+
+ draftsEl.on('shown.bs.dropdown', renderDraftList);
+
+ draftsEl.on('click', '[component="drafts/open"]', function () {
+ drafts.open($(this).attr('data-save-id'));
+ });
+
+ draftsEl.on('click', '[component="drafts/delete"]', function () {
+ const save_id = $(this).attr('data-save-id');
+ bootbox.confirm('[[modules:composer.discard-draft-confirm]]', function (ok) {
+ if (ok) {
+ drafts.removeDraft(save_id);
+ renderDraftList();
+ }
+ });
+ return false;
+ });
+
+ $(window).on('action:composer.drafts.save', updateBadgeCount);
+ $(window).on('action:composer.drafts.remove', updateBadgeCount);
+ updateBadgeCount();
+ });
+ }
+
+ function setupNProgress() {
+ require(['nprogress'], function (NProgress) {
+ window.nprogress = NProgress;
+ if (NProgress) {
+ $(window).on('action:ajaxify.start', function () {
+ NProgress.set(0.7);
+ });
+
+ $(window).on('action:ajaxify.end', function () {
+ NProgress.done(true);
+ });
+ }
+ });
+ }
+
+ function handleMobileNavigator() {
+ const paginationBlockEl = $('.pagination-block');
+ require(['hooks'], function (hooks) {
+ hooks.on('action:ajaxify.end', function () {
+ paginationBlockEl.find('.dropdown-menu.show').removeClass('show');
+ });
+ hooks.on('filter:navigator.scroll', function (hookData) {
+ paginationBlockEl.find('.dropdown-menu.show').removeClass('show');
+ return hookData;
+ });
+ });
+ }
+
+ function setupNavTooltips() {
+ // remove title from user icon in sidebar to prevent double tooltip
+ $('.sidebar [component="header/avatar"] .avatar').removeAttr('title');
+ const tooltipEls = $('.sidebar [title]');
+ const lefttooltipEls = $('.sidebar-left [title]');
+ const rightooltipEls = $('.sidebar-right [title]');
+ const isRtl = $('html').attr('data-dir') === 'rtl';
+ lefttooltipEls.tooltip({
+ trigger: 'manual',
+ animation: false,
+ placement: isRtl ? 'left' : 'right',
+ });
+ rightooltipEls.tooltip({
+ trigger: 'manual',
+ animation: false,
+ placement: isRtl ? 'right' : 'left',
+ });
+
+ tooltipEls.on('mouseenter', function (ev) {
+ const target = $(ev.target);
+ const isDropdown = target.hasClass('dropdown-menu') || !!target.parents('.dropdown-menu').length;
+ if (!$('.sidebar').hasClass('open') && !isDropdown) {
+ $(this).tooltip('show');
+ }
+ });
+ tooltipEls.on('click mouseleave', function () {
+ $(this).tooltip('hide');
+ });
+ }
+
+ function fixPlaceholders() {
+ if (!config.loggedIn) {
+ return;
+ }
+ ['notifications', 'chat'].forEach((type) => {
+ const countEl = document.querySelector(`[component="${type}/count"]`);
+ if (!countEl) {
+ return;
+ }
+ const count = parseInt(countEl.innerText, 10);
+ if (count > 1) {
+ const listEls = document.querySelectorAll(`[component="${type}/list"]`);
+ listEls.forEach((listEl) => {
+ const placeholder = listEl.querySelector('*');
+ if (placeholder) {
+ for (let x = 0; x < count - 1; x++) {
+ const cloneEl = placeholder.cloneNode(true);
+ listEl.insertBefore(cloneEl, placeholder);
+ }
+ }
+ });
+ }
+ });
+ }
+
+ function fixSidebarOverflow() {
+ // overflow-y-auto needs to be removed on main-nav when dropdowns are opened
+ const mainNavEl = $('#main-nav');
+ function toggleOverflow() {
+ mainNavEl.toggleClass(
+ 'overflow-y-auto',
+ !mainNavEl.find('.dropdown-menu.show').length
+ );
+ }
+ mainNavEl.on('shown.bs.dropdown', toggleOverflow)
+ .on('hidden.bs.dropdown', toggleOverflow);
+ }
+});
diff --git a/node_modules/nodebb-theme-harmony/public/settings.js b/node_modules/nodebb-theme-harmony/public/settings.js
new file mode 100644
index 0000000000..e677db7fe0
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/public/settings.js
@@ -0,0 +1,31 @@
+'use strict';
+
+define('forum/account/theme', ['forum/account/header', 'api', 'settings', 'alerts'], function (header, api, settings, alerts) {
+ const Theme = {};
+
+ Theme.init = () => {
+ header.init();
+ Theme.setupForm();
+ };
+
+ Theme.setupForm = () => {
+ const saveEl = document.getElementById('save');
+ if (saveEl) {
+ const formEl = document.getElementById('theme-settings');
+ saveEl.addEventListener('click', async () => {
+ const themeSettings = settings.helper.serializeForm($(formEl));
+ await api.put(`/users/${ajaxify.data.uid}/settings`, {
+ settings: {
+ ...themeSettings,
+ },
+ });
+ if (ajaxify.data.isSelf) {
+ config.theme = (await api.get('/api/config')).theme;
+ }
+ alerts.success('[[success:settings-saved]]');
+ });
+ }
+ };
+
+ return Theme;
+});
diff --git a/node_modules/nodebb-theme-harmony/renovate.json b/node_modules/nodebb-theme-harmony/renovate.json
new file mode 100644
index 0000000000..39a2b6e9a5
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/renovate.json
@@ -0,0 +1,6 @@
+{
+ "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+ "extends": [
+ "config:base"
+ ]
+}
diff --git a/node_modules/nodebb-theme-harmony/screenshot.png b/node_modules/nodebb-theme-harmony/screenshot.png
new file mode 100644
index 0000000000..1f8908da19
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/screenshot.png differ
diff --git a/node_modules/nodebb-theme-harmony/screenshots/categories.png b/node_modules/nodebb-theme-harmony/screenshots/categories.png
new file mode 100644
index 0000000000..7cae6309a1
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/screenshots/categories.png differ
diff --git a/node_modules/nodebb-theme-harmony/screenshots/recent.png b/node_modules/nodebb-theme-harmony/screenshots/recent.png
new file mode 100644
index 0000000000..9551a27575
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/screenshots/recent.png differ
diff --git a/node_modules/nodebb-theme-harmony/screenshots/topic.png b/node_modules/nodebb-theme-harmony/screenshots/topic.png
new file mode 100644
index 0000000000..3e5c92cf55
Binary files /dev/null and b/node_modules/nodebb-theme-harmony/screenshots/topic.png differ
diff --git a/node_modules/nodebb-theme-harmony/scss/account.scss b/node_modules/nodebb-theme-harmony/scss/account.scss
new file mode 100644
index 0000000000..0a318b3e1e
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/account.scss
@@ -0,0 +1,27 @@
+.page-user.page-status-200 #panel {
+ margin-top: 0px!important;
+}
+.account {
+ margin-top: 200px;
+
+ @include media-breakpoint-up(md) {
+ margin-top: 300px;
+ }
+
+ .categories {
+ [component="categories/category"] {
+ $category-pad: 50;
+ @for $i from 1 through 6 {
+ .depth-#{$i} {
+ padding-left: #{$category-pad * $i}px;
+ }
+ }
+ }
+ }
+}
+
+[component="group/badge/item"]:first-child [component="group/order/up"],
+[component="group/badge/item"]:last-child [component="group/order/down"] {
+ opacity: 0.65;
+ pointer-events: none;
+}
diff --git a/node_modules/nodebb-theme-harmony/scss/category.scss b/node_modules/nodebb-theme-harmony/scss/category.scss
new file mode 100644
index 0000000000..41bff4d4eb
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/category.scss
@@ -0,0 +1,4 @@
+.category-header .description p { margin: 0; }
+.page-category .breadcrumb .breadcrumb-item:last-child {
+ display: none;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/scss/chats.scss b/node_modules/nodebb-theme-harmony/scss/chats.scss
new file mode 100644
index 0000000000..e0c5f49a96
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/chats.scss
@@ -0,0 +1,12 @@
+// themes have a different layout so each one needs this block to set height to 100%
+body.page-user-chats {
+ > .layout-container {
+ height: 100%;
+ > #panel {
+ height: 100%;
+ > .container {
+ height: 100%;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/scss/common.scss b/node_modules/nodebb-theme-harmony/scss/common.scss
new file mode 100644
index 0000000000..b78ceea634
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/common.scss
@@ -0,0 +1,130 @@
+
+html {
+ height: 100%;
+}
+
+body {
+ overflow-y: scroll;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ text-rendering: optimizeLegibility;
+}
+
+// fixes chrome font boosting :/ https://stackoverflow.com/questions/13430897/how-to-override-font-boosting-in-mobile-chrome
+body * {
+ max-height:1000000px;
+ text-size-adjust: none;
+ -webkit-text-size-adjust: none;
+ -moz-text-size-adjust: none;
+}
+
+hr {
+ border-top-color: var(--bs-border-color);
+ opacity: 1;
+}
+
+.ff-base { font-family: $font-family-base !important; }
+.ff-sans { font-family: $font-family-sans-serif !important; }
+.ff-secondary { font-family: $font-family-secondary; }
+.tracking-tight { letter-spacing: -0.02em; }
+
+.caret {
+ &::after {
+ border: none;
+ font-family: "FontAwesome";
+ content: "\f078";
+ }
+}
+
+.placeholder-wave {
+ opacity: 0.5;
+}
+
+.bg-card-cap {
+ --bs-bg-opacity: 1;
+ background-color: $card-cap-bg!important;
+}
+
+blockquote {
+ $bq-border-color: mix($light, $dark, 75%);
+ @extend .text-bg-light;
+ font-style: normal;
+ border-left: 2px solid $bq-border-color;
+ padding: 1rem;
+ p:last-child {
+ margin-bottom: 0;
+ }
+ .toggle {
+ border-color: $bq-border-color!important;
+ }
+}
+
+body:not(.page-user) {
+ #content {
+ transition: opacity 150ms linear;
+ &.ajaxifying {
+ -moz-opacity: 0;
+ opacity: 0;
+ }
+ }
+}
+.page-user {
+ #content {
+ transition: opacity 150ms linear;
+ &.ajaxifying .account-content {
+ transition: opacity 150ms linear;
+ -moz-opacity: 0;
+ opacity: 0;
+ }
+ }
+}
+
+.sticky-tools {
+ position: sticky;
+ z-index: 3;
+ top: 0;
+ padding: 0.25rem 0;
+}
+// quartz doesn't need body-bg for tool background
+.skin-quartz .sticky-tools {
+ background-color: initial;
+}
+
+.btn-link {
+ &:hover, &.active {
+ background-color: var(--btn-ghost-hover-color);
+ text-decoration: none;
+ }
+}
+
+.flex-basis-md-200 {
+ @include media-breakpoint-up(md) {
+ flex-basis: 200px!important;
+ }
+}
+
+.markdown-highlight {
+ @extend .shadow-sm;
+ @extend .border;
+}
+
+[component="chat/message/body"], [component="post/content"] {
+ .img-fluid {
+ @extend .shadow-sm;
+ padding: $spacer * 0.5;
+ margin: $spacer * 0.5 0;
+ border: 1px solid $border-color;
+ background-color: $light;
+ border-radius: $border-radius-sm;
+ max-height: 500px;
+ width: auto;
+ }
+}
+
+[component="chat/message/body"],
+[component="post/content"],
+[component="topic/teaser"] .post-content,
+[component="category/posts"] .post-content,
+.post-queue.posts-list .post-content {
+ a { text-decoration: underline;}
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/scss/fonts.scss b/node_modules/nodebb-theme-harmony/scss/fonts.scss
new file mode 100644
index 0000000000..5d3ae65fa9
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/fonts.scss
@@ -0,0 +1,19 @@
+@use "@fontsource/inter/scss/mixins" as Inter;
+@use "@fontsource/poppins/scss/mixins" as Poppins;
+
+$weights: $font-weight-light, $font-weight-normal, $font-weight-semibold, $font-weight-bold;
+$subsets: (latin, latin-ext);
+$font-path: "./plugins/nodebb-theme-harmony" !default;
+
+@include Inter.faces(
+ $weights: $weights,
+ $subsets: $subsets,
+ $display: fallback,
+ $directory: "#{$font-path}/inter"
+);
+@include Poppins.faces(
+ $weights: $weights,
+ $subsets: $subsets,
+ $display: fallback,
+ $directory: "#{$font-path}/poppins"
+);
diff --git a/node_modules/nodebb-theme-harmony/scss/groups.scss b/node_modules/nodebb-theme-harmony/scss/groups.scss
new file mode 100644
index 0000000000..914e3fce90
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/groups.scss
@@ -0,0 +1,22 @@
+.template-groups-details #panel {
+ margin-top: 0px!important;
+}
+
+.group-hover-bg {
+ $hover-color: mix($light, $dark, 97%);
+ $border-color: mix($light, $dark, 90%);
+ .card-body {
+ border-color: $border-color!important;
+ }
+ &:hover {
+ background-color: $hover-color;
+ }
+}
+
+.groups.details {
+ margin-top: 200px;
+
+ @include media-breakpoint-up(md) {
+ margin-top: 300px;
+ }
+}
diff --git a/node_modules/nodebb-theme-harmony/scss/harmony.scss b/node_modules/nodebb-theme-harmony/scss/harmony.scss
new file mode 100644
index 0000000000..f209a54f5e
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/harmony.scss
@@ -0,0 +1,26 @@
+@import "fonts";
+@import "mixins";
+@import "common";
+
+@import "header";
+@import "topic";
+@import "category";
+@import "chats";
+@import "sidebar";
+@import "status";
+@import "account";
+@import "groups";
+@import "modals";
+
+@import "modules/breadcrumbs";
+@import "modules/tags";
+@import "modules/user-menu";
+@import "modules/bottom-sheet";
+@import "modules/topic-navigator";
+@import "modules/topics-list";
+@import "modules/cover";
+@import "modules/nprogress";
+@import "modules/paginator";
+@import "modules/filters";
+
+@import "skins";
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/scss/header.scss b/node_modules/nodebb-theme-harmony/scss/header.scss
new file mode 100644
index 0000000000..a64d632c11
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/header.scss
@@ -0,0 +1,16 @@
+// hide brand/title on user and group details pages so it doesnt break covers
+body[class*="template-account-"], .template-chats, .template-groups-details {
+ .brand-container {
+ display: none;
+ }
+}
+[component="brand/wrapper"] {
+ &:hover {
+ background-color: $card-cap-bg;
+ }
+}
+
+[component="brand/logo"] {
+ max-height: 48px;
+ width: auto;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/scss/mixins.scss b/node_modules/nodebb-theme-harmony/scss/mixins.scss
new file mode 100644
index 0000000000..641b38bb7b
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/mixins.scss
@@ -0,0 +1,177 @@
+@mixin topic-avatars() {
+ .icon .avatar, .timeline-badge {
+ z-index: 1;
+
+ line-height: calc(var(--avatar-size) - 4px);
+ }
+
+ [component="user/status"] {
+ top: 20px;
+ left: 12px;
+
+ z-index: 2;
+ }
+
+ @include media-breakpoint-up(sm) {
+ [component="user/status"] {
+ padding: 5px;
+ top: 36px;
+ left: 36px;
+ }
+ }
+}
+
+@mixin timeline-style() {
+ > [component="post"], .timeline-event, > [component="post/placeholder"] {
+ position: relative; // for absolutely positioned pseudo-element, below
+ border: 0;
+ margin-left: 1.5rem;
+ transition: border-color 1s ease-out;
+
+ &:first-child {
+ &:before {
+ content: '';
+ position: absolute;
+ top: 0;
+ height: 16px;
+ width: 16px;
+ background-color: $border-color;
+ border-radius: 100%;
+ transform: translate(calc(-50% - .5px), -100%);
+ transition: background-color 1s ease-out;
+ }
+
+ &.highlight:before {
+ background-color: $primary;
+ }
+ }
+
+ &:last-child {
+ padding-bottom: 2rem;
+
+ &:after {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ height: 16px;
+ width: 16px;
+ background-color: $border-color;
+ border-radius: 100%;
+ transform: translate(calc(-50% - .5px), 100%);
+ transition: background-color 1s ease-out;
+ }
+
+ &.highlight:after {
+ background-color: $primary;
+ }
+ }
+
+ > div:first-of-type {
+ margin-left: -1.5rem;
+ }
+
+ &.highlight {
+ .bookmarked {
+ opacity: 1 !important;
+ }
+ }
+
+ @include topic-avatars();
+ }
+
+ [component="topic/event"], [component="topic/necro-post"] {
+ &.timeline-event {
+ text-align: left;
+ justify-content: left;
+ font-size: 1em;
+
+ .timeline-badge {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-shrink: 0;
+
+ width: 20px;
+ height: 20px;
+ padding: 0;
+ margin-right: 1rem;
+ color: $gray-500;
+ background-color: $body-bg;
+ }
+
+ .timeline-text {
+ line-height: 32px;
+ text-transform: initial;
+ }
+ }
+ }
+
+ @include media-breakpoint-down(sm) {
+ > [component="post"], .timeline-event {
+ &:first-child:before, &:last-child:after {
+ display: none;
+ }
+ }
+
+ [component="post"] {
+ margin-left: initial;
+ > div:not(.content) {
+ margin-left: 0;
+ }
+ }
+
+ [component="post"]:last-child:after {
+ display: none;
+ }
+
+
+ [component="topic/event"], [component="topic/necro-post"] {
+ &.timeline-event {
+ .timeline-text {
+ line-height: 16px;
+ font-size: 0.75rem;
+ }
+ }
+ }
+ }
+
+ @include media-breakpoint-up(sm) {
+ > [component="post"], .timeline-event, > [component="post/placeholder"] {
+ border-left: 2px solid $border-color;
+
+ &.highlight {
+ border-left: 2px solid $primary;
+ }
+ }
+
+ .timeline-event {
+ margin-left: 1.5rem;
+
+ [component="topic/event/delete"] {
+ visibility: hidden;
+ }
+
+ &:hover {
+ [component="topic/event/delete"] {
+ visibility: visible;
+
+ &:hover {
+ color: $danger;
+ }
+ }
+ }
+ }
+
+ [component="topic/event"], [component="topic/necro-post"] {
+ &.timeline-event .timeline-badge {
+ width: 24px;
+ height: 24px;
+ padding: 0;
+ margin-left: -0.75rem;
+ margin-right: 1.25rem;
+ border: 2px solid $border-color;
+ border-radius: 50%;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/scss/modals.scss b/node_modules/nodebb-theme-harmony/scss/modals.scss
new file mode 100644
index 0000000000..201cfb5229
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/modals.scss
@@ -0,0 +1,6 @@
+.tool-modal {
+ @include media-breakpoint-up(md) {
+ bottom: $spacer * 3;
+ right: $spacer * 4;
+ }
+}
diff --git a/node_modules/nodebb-theme-harmony/scss/modules/bottom-sheet.scss b/node_modules/nodebb-theme-harmony/scss/modules/bottom-sheet.scss
new file mode 100644
index 0000000000..339e000a8b
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/modules/bottom-sheet.scss
@@ -0,0 +1,52 @@
+.bottom-sheet {
+ @include media-breakpoint-down(md) {
+ .dropdown-menu {
+ display: block;
+ visibility: hidden;
+
+ position: fixed!important;
+ inset: auto 0 0 0!important;
+
+ margin: 0 -1px -1px -1px;
+ padding: $spacer * 0.25 !important;
+ max-height: 60%;
+
+ box-shadow: 0 2px 6px rgba(0,0,0,0.35);
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+ transform: translate3d(0, 350px, 0);
+ transition: transform 0.3s, visibility 0s 0.3s;
+ z-index: $zindex-popover;
+ padding: 5px 0 10px;
+
+ border-radius: 0;
+ border: 0px;
+ border-top: 1px solid $border-color;
+
+ > li {
+ > a, .dropdown-item {
+ padding: 10px 20px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+
+ &.divider {
+ padding: 0;
+ }
+ }
+ }
+
+ .dropdown-menu.show {
+ transform: none!important;
+ visibility: visible;
+ transition-delay: 0s;
+ top: auto;
+ width: auto;
+ }
+
+ .dropdown-backdrop {
+ background-color: rgba(0, 0, 0, .3);
+ }
+ }
+}
diff --git a/node_modules/nodebb-theme-harmony/scss/modules/breadcrumbs.scss b/node_modules/nodebb-theme-harmony/scss/modules/breadcrumbs.scss
new file mode 100644
index 0000000000..6f7d855138
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/modules/breadcrumbs.scss
@@ -0,0 +1,16 @@
+.breadcrumb .breadcrumb-item {
+ font-family: $font-family-secondary;
+
+ &::before {
+ font-family: $font-family-sans-serif;
+ font-weight: $font-weight-semibold;
+ font-size: $small-font-size;
+ line-height: $h4-font-size;
+ }
+
+ a, span {
+ color: $body-color;
+ font-size: $small-font-size;
+ line-height: 16px;
+ }
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/scss/modules/cover.scss b/node_modules/nodebb-theme-harmony/scss/modules/cover.scss
new file mode 100644
index 0000000000..acdd601c03
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/modules/cover.scss
@@ -0,0 +1,105 @@
+// used in group and account pages
+.cover {
+ background-size: cover;
+ background-repeat: no-repeat;
+ height: 200px;
+ position: absolute;
+ background-origin: content-box;
+ width: 100%;
+ top: var(--panel-offset);
+ left: auto;
+ right: 0px;
+
+ &:hover {
+ .controls {
+ opacity: 1;
+ }
+ }
+
+ .controls {
+ height: 200px;
+ line-height: 200px;
+ opacity: 0;
+ @include transition(opacity .15s linear);
+ cursor: pointer;
+ pointer-events: none;
+
+ > * {
+ pointer-events: all;
+ }
+ }
+
+ &.active {
+ &:hover {
+ cursor: move;
+ }
+
+ .controls {
+ > * {
+ display: none;
+ }
+ }
+
+ .save {
+ display: inline-block;
+ }
+ }
+
+ &.saving {
+ .save {
+ display: none;
+ }
+
+ .indicator {
+ display: inline-block;
+ }
+ }
+
+ .save, .indicator {
+ display: inline-block;
+ position: absolute;
+ top: 1em;
+ right: 2em;
+ opacity: 1;
+ padding: 0.5em;
+ font-weight: bold;
+
+ &:hover {
+ cursor: pointer;
+ }
+ }
+
+ .save {
+ display: none;
+ }
+
+ .indicator {
+ display: none;
+ }
+}
+
+.cover > .container {
+ height: 200px;
+ position: relative;
+ pointer-events: none;
+ .save {
+ pointer-events: all;
+ }
+ .controls {
+ pointer-events: none;
+ > * {
+ pointer-events: all;
+ }
+ }
+}
+
+@include media-breakpoint-up(md) {
+ .cover, .cover > .container {
+ height: 300px;
+
+ .controls {
+ height: 300px;
+ line-height: 300px;
+ }
+ }
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/scss/modules/filters.scss b/node_modules/nodebb-theme-harmony/scss/modules/filters.scss
new file mode 100644
index 0000000000..1f70620d48
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/modules/filters.scss
@@ -0,0 +1,8 @@
+[component="search/filters"], [component="flags/filters"] {
+ .filter-btn {
+ border-color: $gray-300!important;
+ &.active-filter {
+ border-color: $primary!important;
+ }
+ }
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/scss/modules/nprogress.scss b/node_modules/nodebb-theme-harmony/scss/modules/nprogress.scss
new file mode 100644
index 0000000000..a576b32d44
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/modules/nprogress.scss
@@ -0,0 +1,80 @@
+#nprogress {
+ pointer-events: none;
+}
+
+$nprogress-color: $primary;
+
+#nprogress .bar {
+ background: $nprogress-color;
+ position: fixed;
+ z-index: 1031;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 2px;
+}
+
+#nprogress .peg {
+ display: block;
+ position: absolute;
+ right: 0px;
+ width: 100px;
+ height: 100%;
+ box-shadow: 0 0 10px $nprogress-color, 0 0 5px $nprogress-color;
+ opacity: 1.0;
+
+ -webkit-transform: rotate(3deg) translate(0px, -4px);
+ -ms-transform: rotate(3deg) translate(0px, -4px);
+ transform: rotate(3deg) translate(0px, -4px);
+}
+
+#nprogress .spinner {
+ display: none;
+ position: fixed;
+ z-index: 1031;
+ top: 15px;
+ right: 15px;
+}
+
+@include media-breakpoint-down(sm) {
+ #nprogress .spinner {
+ bottom: 15px;
+ right: 15px;
+ top: initial;
+ }
+}
+
+
+#nprogress .spinner-icon {
+ width: 18px;
+ height: 18px;
+ box-sizing: border-box;
+
+ border: solid 2px transparent;
+ border-top-color: $nprogress-color;
+ border-left-color: $nprogress-color;
+ border-radius: 50%;
+
+ -webkit-animation: nprogress-spinner 400ms linear infinite;
+ animation: nprogress-spinner 400ms linear infinite;
+}
+
+.nprogress-custom-parent {
+ overflow: hidden;
+ position: relative;
+}
+
+.nprogress-custom-parent #nprogress .spinner,
+.nprogress-custom-parent #nprogress .bar {
+ position: absolute;
+}
+
+@-webkit-keyframes nprogress-spinner {
+ 0% { -webkit-transform: rotate(0deg); }
+ 100% { -webkit-transform: rotate(360deg); }
+}
+@keyframes nprogress-spinner {
+ 0% { transform: rotate(0deg); }
+ 100% { transform: rotate(360deg); }
+}
+
diff --git a/node_modules/nodebb-theme-harmony/scss/modules/paginator.scss b/node_modules/nodebb-theme-harmony/scss/modules/paginator.scss
new file mode 100644
index 0000000000..1689c8e49b
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/modules/paginator.scss
@@ -0,0 +1,24 @@
+.skin-noskin [component="pagination"] {
+ .page-item.active:not(.disabled) .page-link {
+ color: $body-color;
+ background-color: $gray-300;
+ border-color: $gray-300;
+ }
+
+ .page-item:not(.disabled):hover .page-link {
+ color: $body-color;
+ }
+}
+
+[component="pagination"] {
+ .page-item.active:not(.disabled) .page-link {
+ color: $pagination-active-color;
+ }
+ .page-item:not(.disabled):hover .page-link {
+ color: $pagination-hover-color;
+ background-color: $pagination-hover-bg;
+ }
+ .page-item:not(.disabled) .page-link {
+ color: $body-color;
+ }
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/scss/modules/tags.scss b/node_modules/nodebb-theme-harmony/scss/modules/tags.scss
new file mode 100644
index 0000000000..f1217aa621
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/modules/tags.scss
@@ -0,0 +1,6 @@
+.tag-list {
+ .tag {
+ background-color: $gray-200!important;
+ color: $gray-700!important;
+ }
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/scss/modules/topic-navigator.scss b/node_modules/nodebb-theme-harmony/scss/modules/topic-navigator.scss
new file mode 100644
index 0000000000..35d6be6c1a
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/modules/topic-navigator.scss
@@ -0,0 +1,53 @@
+.pagination-block { display: none; }
+
+body.template-topic {
+ // used for both sidebar and bottom bar pagination-block
+ .pagination-block {
+ display: block;
+ transition: opacity 250ms ease-in;
+ opacity: 0;
+ &.ready {
+ opacity: 1;
+ }
+ &.noreplies {
+ pointer-events: none;
+ cursor: none;
+ }
+ }
+}
+
+.topic .pagination-block {
+ .scroller-content {
+ min-width: 170px;
+ }
+ .scroller-container {
+ left: 10px;
+ height: 300px;
+ border-left: 2px solid $border-color;
+
+ .scroller-thumb {
+ left: -5px;
+ &:not(.active) {
+ transition: top 100ms linear;
+ }
+ cursor: grab;
+ &.active {
+ cursor: grabbing;
+ }
+ }
+
+ .unread {
+ width: 1px;
+ height: 0; // initial
+ bottom: 0;
+ background: $primary;
+ transition: $transition-base;
+ left: -1px;
+
+ .meta {
+ left: 5px;
+ font-size: 13px;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/scss/modules/topics-list.scss b/node_modules/nodebb-theme-harmony/scss/modules/topics-list.scss
new file mode 100644
index 0000000000..6ce124bead
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/modules/topics-list.scss
@@ -0,0 +1,40 @@
+ul.topics-list, ul.categories-list {
+ li {
+ &.deleted {
+ .meta, .topic-thumbs { display: none!important; }
+ opacity: 0.65;
+ }
+
+ &.selected {
+ background-color: mix($body-bg, $body-color, 90%);
+ [component="topic/select"] {
+ color: $success!important;
+ visibility: visible;
+ }
+ }
+ p {
+ margin: 0 !important;
+ }
+
+ // all other skins use link-color for unread titles
+ &.unread .title {
+ color: $link-color;
+ }
+
+ .ui-sortable-handle {
+ cursor: move;
+ }
+
+ // if only one thumb don't display
+ [data-numthumbs="1"] { display: none; }
+ }
+}
+
+// on default skin use primary color for unread titles
+.skin-noskin {
+ ul.topics-list, ul.categories-list {
+ li.unread .title {
+ color: $primary;
+ }
+ }
+}
diff --git a/node_modules/nodebb-theme-harmony/scss/modules/user-menu.scss b/node_modules/nodebb-theme-harmony/scss/modules/user-menu.scss
new file mode 100644
index 0000000000..cda2ac064b
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/modules/user-menu.scss
@@ -0,0 +1,11 @@
+[component="header/usercontrol"] {
+ [component="header/profilelink"] > div, .user-status > div {
+ min-width: 1.25em; // match fontawesome fixed width
+ }
+ .user-status i.fa-check {
+ display: none;
+ }
+ .user-status.selected i.fa-check {
+ display: block;
+ }
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/scss/overrides.scss b/node_modules/nodebb-theme-harmony/scss/overrides.scss
new file mode 100644
index 0000000000..49de2660b7
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/overrides.scss
@@ -0,0 +1,64 @@
+// only overrides to bs5 variables here
+
+// Harmony colours
+$white: #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #6c757d !default;
+$gray-700: #495057 !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
+$black: #000 !default;
+
+$blue: #0d6efd !default;
+$red: #dc3545 !default;
+$yellow: #ffc107 !default;
+$green: #198754 !default;
+$cyan: #0dcaf0 !default;
+
+$primary: $blue !default;
+$secondary: $gray-600 !default;
+$success: $green !default;
+$info: $cyan !default;
+$warning: $yellow !default;
+$danger: $red !default;
+$light: $gray-100 !default;
+$dark: $gray-900 !default;
+
+$body-color: $gray-800 !default;
+$body-bg: $white !default;
+$body-tertiary-bg: $gray-200 !default;
+$text-muted: $gray-600 !default;
+$border-color: $gray-200 !default;
+$link-color: #0951be !default;
+
+$form-check-input-border: var(--bs-border-width) solid $gray-500 !default;
+
+// no caret on dropdown-toggle
+$enable-caret: false;
+
+// disable smooth scroll, this makes window.scrollTo(0,0) in ajaxify.js take x milliseconds
+$enable-smooth-scroll: false;
+
+$enable-shadows: true;
+
+$link-decoration: none;
+$link-hover-decoration: underline;
+
+// Custom fonts
+$font-family-sans-serif: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+$font-family-secondary: "Poppins", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
+$font-weight-semibold: 500 !default;
+$small-font-size: 0.875rem !default;
+
+$breadcrumb-divider: quote("→");
+$breadcrumb-divider-color: $gray-500 !default;
+$breadcrumb-active-color: $body-color !default;
+$breadcrumb-item-padding-x: 12px !default;
+
+.form-control::placeholder, .bootstrap-tagsinput::placeholder {
+ color: $gray-500 !important;
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/scss/sidebar.scss b/node_modules/nodebb-theme-harmony/scss/sidebar.scss
new file mode 100644
index 0000000000..ca8df90d0c
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/sidebar.scss
@@ -0,0 +1,189 @@
+.skin-noskin {
+ // only using colors when there is no bootswatch skin applied
+ nav.sidebar, .bottombar-nav {
+ color: $secondary !important;
+ background-color: $light !important;
+ }
+ .bottombar-nav {
+ .dropdown-menu {
+ color: $secondary !important;
+ background-color: $light !important;
+ }
+ }
+}
+
+.sidebar {
+ $hover-color: mix($light, $dark, 90%);
+
+ @include media-breakpoint-up(lg) {
+ &.open {
+ min-width: 200px;
+ max-width: 200px;
+ width: 200px;
+
+ .sidebar-toggle {
+ .fa-angles-right { display: none; }
+ .fa-angles-left { display: inline-block; }
+ }
+ .visible-open { display: initial; }
+ .visible-closed { display: none; }
+ hr.visible-open { display: block; }
+ .truncate-open {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ .sidebar-toggle-container {
+ width: 100%
+ }
+ }
+ }
+ .visible-open { display: none; }
+ .visible-closed {display: initial; }
+
+ .truncate-open {
+ overflow: initial;
+ text-overflow: initial;
+ white-space: initial;
+ }
+
+ .nav-link {
+ @extend .ff-secondary;
+ padding: ($spacer * 0.25) ($spacer * 0.5);
+ border-radius: $border-radius-sm;
+ cursor: pointer;
+ &.active {
+ background-color: $hover-color;
+ }
+ &:hover {
+ background-color: $hover-color;
+ }
+ }
+
+ .nav-item {
+ .dropdown-menu .dropdown-item {
+ @extend .rounded-1;
+ }
+ }
+
+ #user_dropdown .avatar {
+ margin: 2px 0; // fixes the avatar so its height is same as the icons on right sidebar
+ }
+
+ .sidebar-toggle {
+ justify-content: start;
+ .fa-angles-right { display: inline-block; }
+ .fa-angles-left { display: none; }
+ }
+
+ .search-dropdown {
+ width: 300px;
+ }
+
+ .chats-dropdown, .notifications-dropdown, .drafts-dropdown {
+ min-width: 300px;
+ width: 300px;
+ .list-container {
+ max-height: 400px;
+ overflow-y: auto;
+ }
+ }
+
+ .badge {
+ font-size: 9px;
+ line-height: 12px;
+ &.visible-open {
+ font-size:12px;
+ line-height: 12px;
+ font-weight: normal;
+ }
+ }
+
+ [data-widget-area="sidebar-footer"] {
+ font-size: $font-size-base * 0.75;
+ }
+}
+
+ /*rtl:begin:ignore*/
+ html[data-dir="rtl"] {
+ .sidebar {
+ &.open {
+ .sidebar-toggle {
+ .fa-angles-right { display: none; }
+ .fa-angles-left { display: inline-block; }
+ }
+ }
+ .sidebar-toggle {
+ .fa-angles-right { display: inline-block; }
+ .fa-angles-left { display: none; }
+ }
+ }
+}
+ /*rtl:end:ignore*/
+
+.bottombar {
+ transition: bottom 150ms linear;
+
+ .pagination-block {
+ .scroller-container {
+ border-right: 3px solid;
+ margin-right: 5.5px;
+ .scroller-thumb {
+ right: -6px;
+ padding-right: 15px;
+ margin-right: -15px;
+ }
+ }
+ }
+}
+
+.bottombar-nav {
+ .nav-text {
+ font-size: 1rem;
+ color: $body-color;
+ }
+ .nav-link {
+ padding: 8px;
+ border-radius: $border-radius-sm;
+ }
+ .usermenu, .chats, .notifications, .drafts, .search, .logged-out-menu {
+ .visible-open { display: none; }
+ }
+ .badge {
+ font-size: 9px;
+ line-height: 12px;
+ }
+
+ .navigation-dropdown, .user-dropdown {
+ > li {
+ > a, .dropdown-item {
+ padding: 10px 20px!important;
+ }
+ }
+ left: 0!important;
+ right: 0!important;
+ bottom: $spacer*0.5!important;
+ box-shadow: none!important;
+ max-height: 60vh!important;
+ overflow: auto!important;
+ }
+ .search-dropdown .quick-search-results {
+ max-height: 225px!important;
+ overflow-y: auto!important;
+ }
+ .search-dropdown, .chats-dropdown, .notifications-dropdown, .drafts-dropdown {
+ left: 0 !important;
+ right: 0 !important;
+ box-shadow: none!important;
+
+ border-left: 0;
+ border-right: 0;
+ border-bottom: 0;
+ border-radius: 0;
+
+ .list-container {
+ max-height: 60vh!important;
+ overflow-y: auto!important;
+ }
+ }
+}
diff --git a/node_modules/nodebb-theme-harmony/scss/skins.scss b/node_modules/nodebb-theme-harmony/scss/skins.scss
new file mode 100644
index 0000000000..322e3cb2f5
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/skins.scss
@@ -0,0 +1,50 @@
+.skin-quartz {
+ // $body-bg-image is gradient in quartz
+ [component="post"] .icon {
+ background-color: transparent !important;
+ }
+}
+
+.skin-quartz, .skin-lux, .skin-morph {
+ // $spacer being modified looks bad on this element
+ .topic-list-header .btn, .topic-main-buttons .btn {
+ padding: 6px 12px;
+ }
+}
+
+.skin-yeti {
+ .badge {
+ padding-left: 0.5rem;
+ padding-right: 0.5rem;
+ }
+}
+
+// table color fix, remove once https://github.com/thomaspark/bootswatch/issues/1276 is published
+.skin-darkly, .skin-superhero, .skin-solar, .skin-quartz {
+ table > :not(caption) > * > * {
+ color: white;
+ }
+}
+
+.skin-superhero {
+ // fix read button in dropdowns
+ .mark-read .read {
+ color: $primary!important;
+ }
+}
+
+.skin-slate {
+ // fix unread button colors in dropdowns
+ .mark-read .unread {
+ color: $secondary!important;
+ }
+}
+
+:root {
+ .skin-darkly, .skin-slate, .skin-cyborg {
+ --bs-border-color: #929292;
+ }
+ .skin-zephyr {
+ --bs-secondary-rgb: var(--bs-secondary-color);
+ }
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/scss/status.scss b/node_modules/nodebb-theme-harmony/scss/status.scss
new file mode 100644
index 0000000000..37c5f0a474
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/status.scss
@@ -0,0 +1,25 @@
+.status {
+ padding: 3px;
+
+ &.online {
+ background-color: $success;
+ }
+
+ &.away {
+ background-color: $warning;
+ }
+
+ &.dnd {
+ background-color: $danger;
+ }
+
+ &.offline {
+ background-color: $gray-600;
+ }
+}
+
+@include media-breakpoint-up(sm) {
+ .status {
+ padding: 5px;
+ }
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/scss/topic.scss b/node_modules/nodebb-theme-harmony/scss/topic.scss
new file mode 100644
index 0000000000..94f10bc36d
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/scss/topic.scss
@@ -0,0 +1,139 @@
+body.template-topic {
+ .breadcrumb .breadcrumb-item:last-child {
+ display: none;
+ }
+ .topic {
+ .posts-container {
+ max-width: 960px;
+ width: 960px;
+ }
+
+ .posts {
+ // fixes code blocks pushing content out on mobile
+ @include media-breakpoint-down(md) {
+ max-width: calc(100vw - $grid-gutter-width);
+ }
+
+ &.timeline {
+ @include timeline-style;
+ }
+
+ .post-header {
+ font-size: 0.8125rem;
+ line-height: 1.25rem;
+
+ .bookmarked {
+ transition: $transition-fade;
+ }
+ }
+
+ > [component="post"] > [component="post/footer"] {
+ margin-left: calc($spacer * 2.5);
+ }
+
+ [component="post"] {
+ &.selected .post-container {
+ background-color: mix($body-bg, $body-color, 90%);
+ }
+ &.deleted .post-container .content { opacity: .65; }
+
+ [component="post/content"] {
+ @include fix-lists();
+
+ > blockquote {
+ > blockquote {
+ > *:not(.blockquote) {
+ display: none;
+ }
+ }
+
+ > blockquote.uncollapsed {
+ > *:not(.blockquote) {
+ display: block;
+ }
+ }
+ }
+
+ @include media-breakpoint-up(lg) {
+ table { // text-break breaks table formatting
+ word-break:initial!important;
+ }
+ }
+ }
+ }
+
+ [component="post/upvote"], [component="post/downvote"] {
+ &.upvoted, &.downvoted {
+ background-color: var(--btn-ghost-active-color);
+
+ &:hover {
+ background-color: var(--btn-ghost-hover-color);
+ }
+ }
+ }
+ }
+ }
+
+ .quick-reply {
+ @include topic-avatars();
+ }
+
+ [component="post/replies/container"] {
+ .icon {
+ display: none !important;
+ }
+
+ .post-header .icon {
+ display: initial !important;
+
+ .status {
+ display: none;
+ }
+ }
+
+ .timeline-event {
+ display: none !important;
+ }
+
+ [component="post"] {
+ padding-top: 0 !important;
+ padding-bottom: $spacer;
+ &:last-of-type {
+ padding-bottom: 0;
+ .post-footer {
+ border-bottom: none !important;
+ }
+ }
+ }
+ }
+
+
+ [component="topic/thumb/list"] {
+ height: calc($font-size-base * 4);
+ }
+}
+
+@include media-breakpoint-up(sm) {
+ body.template-topic {
+ .topic .posts {
+ [component="post"] {
+ [component="post/actions"] {
+ opacity: 0;
+ transition: $transition-fade;
+
+ &:has([aria-expanded="true"]) {
+ opacity: 1;
+ }
+ }
+ [component="post/actions"]:focus-within {
+ opacity: 1;
+ }
+ &:hover {
+ > .post-footer > [component="post/actions"] {
+ opacity: 1;
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/templates/account/best.tpl b/node_modules/nodebb-theme-harmony/templates/account/best.tpl
new file mode 100644
index 0000000000..21b7d5b195
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/best.tpl
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/templates/account/blocks.tpl b/node_modules/nodebb-theme-harmony/templates/account/blocks.tpl
new file mode 100644
index 0000000000..fb7a60aabb
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/blocks.tpl
@@ -0,0 +1,51 @@
+
+
+
[[pages:account/blocks, {username}]]
+
+
+
+
[[user:has-no-blocks]]
+
+
+ {{{ each users }}}
+
+
+ [[user:unblock-user]]
+
+ {{{ end }}}
+
+
+
+
+
diff --git a/node_modules/nodebb-theme-harmony/templates/account/bookmarks.tpl b/node_modules/nodebb-theme-harmony/templates/account/bookmarks.tpl
new file mode 100644
index 0000000000..21b7d5b195
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/bookmarks.tpl
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/templates/account/categories.tpl b/node_modules/nodebb-theme-harmony/templates/account/categories.tpl
new file mode 100644
index 0000000000..289f1de7a3
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/categories.tpl
@@ -0,0 +1,64 @@
+
+
+
+
+
{title}
+
+
+
+
+
+ [[user:change-all]]
+
+
+
+
+
+
+
+
+ {{{each categories}}}
+
+ {{{end}}}
+
+
+
+
+
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/templates/account/consent.tpl b/node_modules/nodebb-theme-harmony/templates/account/consent.tpl
new file mode 100644
index 0000000000..f472e9ee99
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/consent.tpl
@@ -0,0 +1,73 @@
+
+
[[user:consent.title]]
+
+
[[user:consent.lead]]
+
[[user:consent.intro]]
+
+
+
+
+
+ {{{ if gdpr_consent }}}
+
+ [[user:consent.received]]
+
+
+ {{{ else }}}
+
+ [[user:consent.not-received]]
+
+
+ [[user:consent.give]]
+
+
+ {{{ end }}}
+
+
+
[[user:consent.email-intro]]
+ {{{ if digest.enabled }}}
+
[[user:consent.digest-frequency, {digest.frequency}]]
+ {{{ else }}}
+
[[user:consent.digest-off]]
+ {{{ end }}}
+
+
+
+
+
+
+
+
+
[[user:consent.right-of-access]]
+
[[user:consent.right-of-access-description]]
+
[[user:consent.right-to-rectification]]
+
[[user:consent.right-to-rectification-description]]
+
[[user:consent.right-to-erasure]]
+
[[user:consent.right-to-erasure-description]]
+
[[user:consent.right-to-data-portability]]
+
[[user:consent.right-to-data-portability-description]]
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/nodebb-theme-harmony/templates/account/controversial.tpl b/node_modules/nodebb-theme-harmony/templates/account/controversial.tpl
new file mode 100644
index 0000000000..21b7d5b195
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/controversial.tpl
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/templates/account/downvoted.tpl b/node_modules/nodebb-theme-harmony/templates/account/downvoted.tpl
new file mode 100644
index 0000000000..21b7d5b195
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/downvoted.tpl
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/templates/account/edit.tpl b/node_modules/nodebb-theme-harmony/templates/account/edit.tpl
new file mode 100644
index 0000000000..1eee58e176
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/edit.tpl
@@ -0,0 +1,123 @@
+
+
+
+
{{{ if isSelf }}}[[user:edit-profile]]{{{ else }}}[[pages:account/edit, {username}]]{{{ end }}}
+ [[global:save-changes]]
+
+
+
+
+
+
+
+ {{{ if allowProfilePicture }}}
+ [[user:change-picture]]
+ {{{ end }}}
+ {{{ if !username:disableEdit }}}
+ [[user:change-username]]
+ {{{ end }}}
+ {{{ if !email:disableEdit }}}
+ [[user:change-email]]
+ {{{ end }}}
+ {{{ if canChangePassword }}}
+ [[user:change-password]]
+ {{{ end }}}
+ {{{ each editButtons }}}
+ {./text}
+ {{{ end }}}
+
+
+ {{{ if config.requireEmailConfirmation }}}
+ {{{ if (email && isSelf) }}}
+
[[user:confirm-email]]
+ {{{ end }}}
+ {{{ end }}}
+
+
+ {{{ if sso.length }}}
+
[[user:sso.title]]
+
+ {{{ each sso }}}
+
+ {{{ end }}}
+
+ {{{ end }}}
+
+
+ {{{ if (allowAccountDelete && isSelf) }}}
+
+ [[user:delete-account]]
+
+ {{{ end }}}
+
+
+
+
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/templates/account/edit/password.tpl b/node_modules/nodebb-theme-harmony/templates/account/edit/password.tpl
new file mode 100644
index 0000000000..4ab4fd252d
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/edit/password.tpl
@@ -0,0 +1,35 @@
+
+
+
{{{ if isSelf }}}[[user:change-password]]{{{ else }}}[[pages:{template.name}, {username}]]{{{ end }}}
+
+
+
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/templates/account/edit/username.tpl b/node_modules/nodebb-theme-harmony/templates/account/edit/username.tpl
new file mode 100644
index 0000000000..cc225d1b4e
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/edit/username.tpl
@@ -0,0 +1,31 @@
+
+
+
{{{ if isSelf }}}[[user:change-username]]{{{ else }}}[[pages:{template.name}, {username}]]{{{ end }}}
+
+
+
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/templates/account/followers.tpl b/node_modules/nodebb-theme-harmony/templates/account/followers.tpl
new file mode 100644
index 0000000000..68fe6de65d
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/followers.tpl
@@ -0,0 +1,15 @@
+
+
[[pages:{template.name}, {username}]]
+
+{{{ if !users.length }}}
+
[[user:has-no-follower]]
+{{{ end }}}
+
+
+{{{ each users }}}
+
+{{{end}}}
+
+
+
+
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/templates/account/following.tpl b/node_modules/nodebb-theme-harmony/templates/account/following.tpl
new file mode 100644
index 0000000000..73fd4913db
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/following.tpl
@@ -0,0 +1,16 @@
+
+
+
[[pages:{template.name}, {username}]]
+
+{{{ if !users.length }}}
+
[[user:follows-no-one]]
+{{{ end }}}
+
+
+{{{ each users }}}
+
+{{{end}}}
+
+
+
+
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/templates/account/groups.tpl b/node_modules/nodebb-theme-harmony/templates/account/groups.tpl
new file mode 100644
index 0000000000..c1faf80836
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/groups.tpl
@@ -0,0 +1,15 @@
+
+
+
[[pages:{template.name}, {username}]]
+
+
+
+ {{{ if !groups.length }}}
+
[[groups:no-groups-found]]
+ {{{ else }}}
+
+ {{{ end }}}
+
+
+
+
diff --git a/node_modules/nodebb-theme-harmony/templates/account/ignored.tpl b/node_modules/nodebb-theme-harmony/templates/account/ignored.tpl
new file mode 100644
index 0000000000..238b943cd5
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/ignored.tpl
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/templates/account/info.tpl b/node_modules/nodebb-theme-harmony/templates/account/info.tpl
new file mode 100644
index 0000000000..fa0a215db0
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/info.tpl
@@ -0,0 +1,271 @@
+
+
+{{{ if sessions.length }}}
+
+
[[global:sessions]]
+
+
+{{{ end }}}
+
+
+
+
+
+
+
+ {{{each ips}}}
+ {@value}
+ {{{end}}}
+
+
+
+
+
+
+
+
+ {{{ each usernames }}}
+
+ {./value}
+
+
+
+ {{{ end }}}
+
+
+
+
+
+
+
+
+ {{{ each emails }}}
+
+ {./value}
+
+
+ {{{ end }}}
+
+
+
+
+ {{{ if isAdminOrGlobalModerator }}}
+
+
+
+
+
+
[[user:info.moderation-note.add]]
+
+
+ {{{ each moderationNotes }}}
+
+
+
+
+
+
+
+
+ {./note}
+
+
[[topic:edit]]
+
+
+
+
{./rawNote}
+
+ [[global:cancel]]
+ [[global:save]]
+
+
+
+ {{{ end }}}
+
+
+
+
+ {{{ end }}}
+
+
+
+
+
+ {{{ if history.flags.length }}}
+
+ {{{ else }}}
+
[[user:info.no-flags]]
+ {{{ end }}}
+
+
+
+
+
+
+ {{{ if history.bans.length }}}
+
+ {{{ each history.bans }}}
+
+
+
+ {{{ if (./type != "unban") }}}
+
[[user:banned]]
+ {{{ else }}}
+
[[user:unbanned]]
+ {{{ end }}}
+
+
+ [[user:info.banned-reason-label]]: {./reason}
+
+
+ {{{ if ./until }}}
+ [[user:info.banned-until, {isoTimeToLocaleString(./untilISO, config.userLang)}]]
+ {{{ else }}}
+ {{{ if (./type != "unban") }}}
+ [[user:info.banned-permanently]]
+ {{{ end }}}
+ {{{ end }}}
+
+
+ {{{ end }}}
+
+ {{{ else }}}
+
[[user:info.no-ban-history]]
+ {{{ end }}}
+
+
+
+
+
+
+ {{{ if history.mutes.length }}}
+
+ {{{ each history.mutes }}}
+
+
+
+ {{{ if (./type != "unmute") }}}
+
[[user:muted]]
+ {{{ else }}}
+
[[user:unmuted]]
+ {{{ end }}}
+
+
+ [[user:info.banned-reason-label]]: {./reason}
+
+
+ {{{ if ./until }}}
+ [[user:info.muted-until, {isoTimeToLocaleString(./untilISO, config.userLang)}]]
+ {{{ end }}}
+
+
+ {{{ end }}}
+
+ {{{ else }}}
+
[[user:info.no-mute-history]]
+ {{{ end }}}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/templates/account/posts.tpl b/node_modules/nodebb-theme-harmony/templates/account/posts.tpl
new file mode 100644
index 0000000000..d8934a07b8
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/posts.tpl
@@ -0,0 +1,35 @@
+
+
+
+
+{{{ if !posts.length }}}
+
{noItemsFoundKey}
+{{{ end }}}
+
+
+
+
+ {{{ if config.usePagination }}}
+
+ {{{ end }}}
+
+
+
diff --git a/node_modules/nodebb-theme-harmony/templates/account/profile.tpl b/node_modules/nodebb-theme-harmony/templates/account/profile.tpl
new file mode 100644
index 0000000000..7fa531c639
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/profile.tpl
@@ -0,0 +1,95 @@
+
+
+{{{ if widgets.profile-aboutme-before.length }}}
+
+{{{each widgets.profile-aboutme-before}}}
+{./html}
+{{{end}}}
+
+{{{ end }}}
+
+{{{ if aboutme }}}
+
+{aboutmeParsed}
+
+{{{ end }}}
+
+{{{ if widgets.profile-aboutme-after.length }}}
+
+{{{each widgets.profile-aboutme-after}}}
+{./html}
+{{{end}}}
+
+{{{ end }}}
+
+
+
+ {{{ if !reputation:disabled }}}
+
+
+
+ {{{ end }}}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{{ if email }}}
+
+
+
+ {{{ end }}}
+
+ {{{ if websiteName }}}
+
+
+
+ {{{ end }}}
+
+ {{{ if location }}}
+
+
+
+ {{{ end }}}
+
+ {{{ if age }}}
+
+
+
+ {{{ end }}}
+
+
+
+
diff --git a/node_modules/nodebb-theme-harmony/templates/account/sessions.tpl b/node_modules/nodebb-theme-harmony/templates/account/sessions.tpl
new file mode 100644
index 0000000000..679d087729
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/sessions.tpl
@@ -0,0 +1,9 @@
+
+
+
[[user:sessions.description]]
+
+
+
+
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/templates/account/settings.tpl b/node_modules/nodebb-theme-harmony/templates/account/settings.tpl
new file mode 100644
index 0000000000..c4c78a1650
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/settings.tpl
@@ -0,0 +1,236 @@
+
+
+
+
{{{ if isSelf }}}[[pages:account/settings]]{{{ else }}}[[pages:account/settings-of, {username}]]{{{ end }}}
+ [[global:save-changes]]
+
+
+
+ {{{ if !disableCustomUserSkins }}}
+
[[user:select-skin]]
+
+ {{{each bootswatchSkinOptions}}}
+ {bootswatchSkinOptions.name}
+ {{{end}}}
+
+
+
+ {{{ end }}}
+
+ {{{ if allowUserHomePage }}}
+
[[user:select-homepage]]
+
+
+
+
[[user:homepage-description]]
+
+
+
[[user:custom-route]]
+
+
[[user:custom-route-help]]
+
+
+
+ {{{ end }}}
+
+
[[global:privacy]]
+
+ {{{ if !hideEmail }}}
+
+
+ [[user:show-email]]
+
+ {{{ end }}}
+
+ {{{ if !hideFullname }}}
+
+
+ [[user:show-fullname]]
+
+ {{{ end }}}
+
+ {{{ if !config.disableChat }}}
+
+
+ [[user:restrict-chats]]
+
+ {{{ end }}}
+
+
+
+
[[user:browsing]]
+
+
+
+ [[user:open-links-in-new-tab]]
+
+
+ {{{ if inTopicSearchAvailable }}}
+
+
+ [[user:enable-topic-searching]]
+
+
[[user:topic-search-help]]
+ {{{ end }}}
+
+
+
+ [[user:update-url-with-post-index]]
+
+
+
+
+ [[user:scroll-to-my-post]]
+
+
+
+
+
[[global:pagination]]
+
+
+
+ [[user:paginate-description]]
+
+
+ [[user:topics-per-page]] ([[user:max-items-per-page, {maxTopicsPerPage}]])
+
+
+
+ [[user:posts-per-page]] ([[user:max-items-per-page, {maxPostsPerPage}]])
+
+
+
+
+
+
[[global:sort]]
+
+
+ [[user:category-topic-sort]]
+
+ [[topic:recently-replied]]
+ [[topic:recently-created]]
+ [[topic:most-posts]]
+ [[topic:most-votes]]
+ [[topic:most-views]]
+
+
+
+ [[user:topic-post-sort]]
+
+ [[topic:oldest-to-newest]]
+ [[topic:newest-to-oldest]]
+ [[topic:most-votes]]
+
+
+
+
+ {{{ if !disableEmailSubscriptions }}}
+
+
[[global:email]]
+
+
+
[[user:digest-label]]
+
+ {{{each dailyDigestFreqOptions}}}
+ {./name}
+ {{{end}}}
+
+
[[user:digest-description]]
+
+
+ {{{ end }}}
+
+ {{{ each customSettings}}}
+
+
{./title}
+
+ {./content}
+
+ {{{end}}}
+
+
+
+
+
[[global:language]]
+
+ {{{each languages}}}
+ {./name} ({./code})
+ {{{end}}}
+
+
+
+
+ {{{ if (isAdmin && isSelf) }}}
+
[[user:acp-language]]
+
+ {{{each acpLanguages}}}
+ {./name} ({./code})
+ {{{end}}}
+
+
+
+ {{{ end }}}
+
+
[[topic:watch]]
+
+
+
+ [[user:follow-topics-you-create]]
+
+
+
+ [[user:follow-topics-you-reply-to]]
+
+
+ [[user:default-category-watch-state]]
+
+ [[category:tracking]]
+ [[category:not-watching]]
+ [[category:ignoring]]
+
+
+
+
+
+
[[user:notifications]]
+
+ {{{ each notificationSettings }}}
+
+
+ {./label}
+
+
+
+ [[notifications:none]]
+ [[notifications:notification-only]]
+ [[notifications:email-only]]
+ [[notifications:notification-and-email]]
+
+
+
+ {{{end}}}
+
+
+
+ [[user:upvote-notif-freq]]
+
+
+
+ {{{ each upvoteNotifFreq }}}
+
+ [[user:upvote-notif-freq.{./name}]]
+
+ {{{end}}}
+
+
+
+
+
+
+
+
diff --git a/node_modules/nodebb-theme-harmony/templates/account/tags.tpl b/node_modules/nodebb-theme-harmony/templates/account/tags.tpl
new file mode 100644
index 0000000000..c1007eb836
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/tags.tpl
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/templates/account/theme.tpl b/node_modules/nodebb-theme-harmony/templates/account/theme.tpl
new file mode 100644
index 0000000000..67fdbc717f
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/theme.tpl
@@ -0,0 +1,64 @@
+
+
+
+
[[themes/harmony:settings.title]]
+
+ [[global:save-changes]]
+
+
+
+
+
+ [[themes/harmony:settings.enableQuickReply]]
+
+
+
+
+ [[themes/harmony:settings.enableBreadcrumbs]]
+
+
+
+
+ [[themes/harmony:settings.centerHeaderElements]]
+
+
+
+
+ [[themes/harmony:settings.mobileTopicTeasers]]
+
+
+
+
+
+
+
+
+ [[themes/harmony:settings.openSidebars]]
+
+
+
+
+
+ [[themes/harmony:settings.chatModals]]
+
+
+
+
+
+
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/templates/account/topics.tpl b/node_modules/nodebb-theme-harmony/templates/account/topics.tpl
new file mode 100644
index 0000000000..b696098892
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/topics.tpl
@@ -0,0 +1,44 @@
+
+
+
+
+
[[global:topics]]
+ {{{ if showSort }}}
+
+
+
+
+ {{{ end }}}
+
+
+
+
+
+
+{{{ if !topics.length }}}
+
{noItemsFoundKey}
+{{{ end }}}
+
+
+
+ {{{ if config.usePagination }}}
+
+ {{{ end }}}
+
+
+
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/templates/account/uploads.tpl b/node_modules/nodebb-theme-harmony/templates/account/uploads.tpl
new file mode 100644
index 0000000000..dd5e79002e
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/uploads.tpl
@@ -0,0 +1,37 @@
+
+
+
{title}
+
+
+ {{{ if privateUploads }}}[[uploads:private-uploads-info]]{{{ else }}}[[uploads:public-uploads-info]]{{{ end }}}
+
+
+{{{ if !uploads.length }}}
+
[[uploads:no-uploads-found]]
+{{{ end }}}
+
+
+
+
+
+
+
+
+
+ {{{ each uploads }}}
+
+
+ {./url}
+
+
+
+
+
+
+
+ {{{ end }}}
+
+
+
+
+
diff --git a/node_modules/nodebb-theme-harmony/templates/account/upvoted.tpl b/node_modules/nodebb-theme-harmony/templates/account/upvoted.tpl
new file mode 100644
index 0000000000..21b7d5b195
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/upvoted.tpl
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/templates/account/watched.tpl b/node_modules/nodebb-theme-harmony/templates/account/watched.tpl
new file mode 100644
index 0000000000..238b943cd5
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/account/watched.tpl
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/node_modules/nodebb-theme-harmony/templates/admin/plugins/harmony.tpl b/node_modules/nodebb-theme-harmony/templates/admin/plugins/harmony.tpl
new file mode 100644
index 0000000000..289011ad6d
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/admin/plugins/harmony.tpl
@@ -0,0 +1,56 @@
+
diff --git a/node_modules/nodebb-theme-harmony/templates/categories.tpl b/node_modules/nodebb-theme-harmony/templates/categories.tpl
new file mode 100644
index 0000000000..24d98b46a3
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/categories.tpl
@@ -0,0 +1,29 @@
+
+ {{{ each widgets.header }}}
+ {{widgets.header.html}}
+ {{{ end }}}
+
+
+
+
+
+
+ {{{ each widgets.footer }}}
+ {{widgets.footer.html}}
+ {{{ end }}}
+
diff --git a/node_modules/nodebb-theme-harmony/templates/category.tpl b/node_modules/nodebb-theme-harmony/templates/category.tpl
new file mode 100644
index 0000000000..e9b75915ce
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/category.tpl
@@ -0,0 +1,72 @@
+
+{{{ if config.theme.enableBreadcrumbs }}}
+
+{{{ end }}}
+
+
+
+ {{{ if ./descriptionParsed }}}
+
+ {{{ end }}}
+
+
+
+{{{ if widgets.header.length }}}
+
+ {{{ each widgets.header }}}
+ {{widgets.header.html}}
+ {{{ end }}}
+
+{{{ end }}}
+
+
+
+
+ {{{each widgets.footer}}}
+ {{widgets.footer.html}}
+ {{{end}}}
+
+
+{{{ if !config.usePagination }}}
+
+
+
+{{{ end }}}
diff --git a/node_modules/nodebb-theme-harmony/templates/flags/detail.tpl b/node_modules/nodebb-theme-harmony/templates/flags/detail.tpl
new file mode 100644
index 0000000000..3a81a466f1
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/flags/detail.tpl
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
+
+ [[flags:state]]
+
+ [[flags:state-open]]
+ [[flags:state-wip]]
+ [[flags:state-resolved]]
+ [[flags:state-rejected]]
+
+
+
+ [[flags:assignee]]
+
+ [[flags:no-assignee]]
+ {{{each assignees}}}
+ {../username}
+ {{{end}}}
+
+
+
+ [[flags:update]]
+
+
+
+
+
[[flags:history]]
+ {{{ if !history.length }}}
+
[[flags:no-history]]
+ {{{ end }}}
+ {{{ each history }}}
+
+
+
+
+ {{{ each ./fields }}}
+
+ [[flags:{@key}]]{{{ if @value }}} → {@value} {{{ end }}}
+
+ {{{ end }}}
+ {{{ each ./meta }}}
+
+ {{./key}}{{{ if ./value }}} → {./value} {{{ end }}}
+
+ {{{ end }}}
+
+
+
+ {{{ end }}}
+
+
+
+
+
+ {target_readable}
+
+
+ {{{ if type_bool.post }}}
+
+
{target.content}
+ {{{ end }}}
+
+ {{{ if type_bool.user }}}
+
+
{{{ if target.aboutme }}}{target.aboutme}{{{ else }}}[[flags:target-aboutme-empty]] {{{ end }}}
+ {{{ end }}}
+
+ {{{ if type_bool.empty }}}
+
[[flags:target-purged]]
+ {{{ end }}}
+
+
+
[[flags:reports]]
+
+ {{{ each reports }}}
+
+
+ {./value}
+
+ {{{ end }}}
+
+
+
+
+
[[flags:notes]]
+ [[flags:add-note]]
+
+
+ {{{ if !notes.length }}}
+ [[flags:no-notes]]
+ {{{ end }}}
+ {{{ each notes }}}
+
+
+ {./content}
+
+ {{{ end }}}
+
+
+
+
+
diff --git a/node_modules/nodebb-theme-harmony/templates/flags/list.tpl b/node_modules/nodebb-theme-harmony/templates/flags/list.tpl
new file mode 100644
index 0000000000..1e5aa05930
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/flags/list.tpl
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/node_modules/nodebb-theme-harmony/templates/footer.tpl b/node_modules/nodebb-theme-harmony/templates/footer.tpl
new file mode 100644
index 0000000000..6bcfd58619
--- /dev/null
+++ b/node_modules/nodebb-theme-harmony/templates/footer.tpl
@@ -0,0 +1,17 @@
+
+