diff --git a/apps/web/src/app/decks/_components/_index.scss b/apps/web/src/app/decks/_components/_index.scss
index 673a653080..272168c26e 100644
--- a/apps/web/src/app/decks/_components/_index.scss
+++ b/apps/web/src/app/decks/_components/_index.scss
@@ -1,6 +1,12 @@
@import "src/styles/vars_mixins";
-html, body {
+// Scoped to pages that actually render the decks UI. Unscoped, this hides the
+// window scrollbar on EVERY route, which cancels the `scrollbar-gutter: stable`
+// that styles/_base.scss reserves to stop modal-open CLS, and shifts every
+// centered element by 7px. That only stayed invisible while this file compiled
+// into a decks-only chunk; once CSS chunks are consolidated the rule is merged
+// into the shared sheet and leaks site-wide. See issue #1632.
+html:has(.decks), body:has(.decks) {
&::-webkit-scrollbar {
display: none;
}
diff --git a/apps/web/src/features/announcement/index.tsx b/apps/web/src/features/announcement/index.tsx
index 1cd898e29c..18df47ee5d 100644
--- a/apps/web/src/features/announcement/index.tsx
+++ b/apps/web/src/features/announcement/index.tsx
@@ -2,7 +2,6 @@ import React, { useEffect, useMemo, useState } from "react";
import dayjs from "@/utils/dayjs";
import * as ls from "@/utils/local-storage";
import { Announcement, LaterAnnouncement } from "./types";
-import "./index.scss";
import { Button } from "@ui/button";
import { usePathname } from "next/navigation";
import { closeSvg } from "@ui/svg";
diff --git a/apps/web/src/features/post-renderer/components/extensions/hive-operation-extension.tsx b/apps/web/src/features/post-renderer/components/extensions/hive-operation-extension.tsx
index 41028e61c0..12b58d6741 100644
--- a/apps/web/src/features/post-renderer/components/extensions/hive-operation-extension.tsx
+++ b/apps/web/src/features/post-renderer/components/extensions/hive-operation-extension.tsx
@@ -2,7 +2,6 @@
import React, { RefObject, useEffect, useMemo, useRef } from "react";
import { createRoot } from "react-dom/client";
-import "./hive-operation-extension.scss";
import type { Operation } from "@ecency/sdk";
import defaults from "@/defaults";
diff --git a/apps/web/src/features/post-renderer/components/extensions/hive-post-link-extension.tsx b/apps/web/src/features/post-renderer/components/extensions/hive-post-link-extension.tsx
index a2856137e6..c423ffb15b 100644
--- a/apps/web/src/features/post-renderer/components/extensions/hive-post-link-extension.tsx
+++ b/apps/web/src/features/post-renderer/components/extensions/hive-post-link-extension.tsx
@@ -9,7 +9,6 @@ import React, {
useState,
} from "react";
import { createRoot } from "react-dom/client";
-import "./hive-post-link-extension.scss";
import {
findPostLinkElements,
isInvalidPermlinkLink,
diff --git a/apps/web/src/features/post-renderer/components/extensions/wave-like-post-extension.tsx b/apps/web/src/features/post-renderer/components/extensions/wave-like-post-extension.tsx
index 02c664f27a..f931371fcf 100644
--- a/apps/web/src/features/post-renderer/components/extensions/wave-like-post-extension.tsx
+++ b/apps/web/src/features/post-renderer/components/extensions/wave-like-post-extension.tsx
@@ -7,7 +7,6 @@ import { getPostQueryOptions, QueryKeys } from "@ecency/sdk";
import { getQueryClient } from "@/core/react-query";
import { makeEntryPath } from "@/utils";
import { findPostLinkElements, isWaveLikePost } from "../functions";
-import "./wave-like-post-extension.scss";
import { EcencyRenderer } from "../ecency-renderer";
import { Logo } from "../icons";
import defaults from "@/defaults";
diff --git a/apps/web/src/features/shared/available-credits/index.tsx b/apps/web/src/features/shared/available-credits/index.tsx
index 3aed76503e..433c8a8247 100644
--- a/apps/web/src/features/shared/available-credits/index.tsx
+++ b/apps/web/src/features/shared/available-credits/index.tsx
@@ -21,8 +21,6 @@ import dayjs, { Dayjs } from "@/utils/dayjs";
import { useEffect, useState } from "react";
import { createPortal } from "react-dom";
import { PurchaseQrDialog } from "../purchase-qr";
-import "./index.scss";
-
interface Props {
username: string;
operation: RcOperation;
diff --git a/apps/web/src/features/shared/bookmark-btn/index.tsx b/apps/web/src/features/shared/bookmark-btn/index.tsx
index ba2e2d49b8..ba0e8147d8 100644
--- a/apps/web/src/features/shared/bookmark-btn/index.tsx
+++ b/apps/web/src/features/shared/bookmark-btn/index.tsx
@@ -14,7 +14,6 @@ import { Button } from "@ui/button";
import { Tooltip } from "@ui/tooltip";
import i18next from "i18next";
import { useMemo, useState } from "react";
-import "./_index.scss";
import { error, success } from "../feedback";
import { getAccessToken } from "@/utils";
import { useGlobalStore } from "@/core/global-store";
diff --git a/apps/web/src/features/shared/bookmarks/index.tsx b/apps/web/src/features/shared/bookmarks/index.tsx
index 898361cd4d..57b4acdff7 100644
--- a/apps/web/src/features/shared/bookmarks/index.tsx
+++ b/apps/web/src/features/shared/bookmarks/index.tsx
@@ -4,8 +4,6 @@ import { TabItem } from "@/features/ui";
import { Modal, ModalBody, ModalHeader } from "@ui/modal";
import i18next from "i18next";
import { useState } from "react";
-import "./_index.scss";
-
interface Props {
show: boolean;
setShow: (v: boolean) => void;
diff --git a/apps/web/src/features/shared/boost/index.tsx b/apps/web/src/features/shared/boost/index.tsx
index fa30ce3689..d2b32057f6 100644
--- a/apps/web/src/features/shared/boost/index.tsx
+++ b/apps/web/src/features/shared/boost/index.tsx
@@ -3,7 +3,6 @@
import { useActiveAccount } from "@/core/hooks/use-active-account";
import React, { ChangeEvent, useCallback, useEffect, useMemo, useRef, useState } from "react";
-import "./_index.scss";
import { Modal, ModalBody, ModalHeader } from "@ui/modal";
import { FormControl } from "@ui/input";
import { Button } from "@ui/button";
diff --git a/apps/web/src/features/shared/buy-sell-hive/index.tsx b/apps/web/src/features/shared/buy-sell-hive/index.tsx
index a99a8bd2e7..07d9f03891 100644
--- a/apps/web/src/features/shared/buy-sell-hive/index.tsx
+++ b/apps/web/src/features/shared/buy-sell-hive/index.tsx
@@ -3,7 +3,6 @@
import React, { useCallback, useRef, useState } from "react";
import { error } from "../feedback";
import { formatError } from "@/api/format-error";
-import "./_index.scss";
import { Modal, ModalBody, ModalHeader } from "@ui/modal";
import { Button } from "@ui/button";
import i18next from "i18next";
diff --git a/apps/web/src/features/shared/comment/index.tsx b/apps/web/src/features/shared/comment/index.tsx
index 9e9f6816ee..87f5f084ab 100644
--- a/apps/web/src/features/shared/comment/index.tsx
+++ b/apps/web/src/features/shared/comment/index.tsx
@@ -25,7 +25,6 @@ import React, {
import { useDebounce, useMount } from "react-use";
import useLocalStorage from "react-use/lib/useLocalStorage";
import useUnmount from "react-use/lib/useUnmount";
-import "./_index.scss";
import { useActiveAccount } from "@/core/hooks/use-active-account";
import { useIsMobile } from "@/features/ui/util/use-is-mobile";
import { useQuery } from "@tanstack/react-query";
diff --git a/apps/web/src/features/shared/discussion/index.tsx b/apps/web/src/features/shared/discussion/index.tsx
index 478d33b850..9802dbaa52 100644
--- a/apps/web/src/features/shared/discussion/index.tsx
+++ b/apps/web/src/features/shared/discussion/index.tsx
@@ -22,8 +22,6 @@ import { EcencyEntriesCacheManagement } from "@/core/caches";
import { UilComment } from "@tooni/iconscout-unicons-react";
import defaults from "@/defaults";
import { setProxyBase } from "@ecency/render-helper";
-import "./_index.scss";
-
setProxyBase(defaults.imageServer);
interface Props {
diff --git a/apps/web/src/features/shared/edit-history/index.tsx b/apps/web/src/features/shared/edit-history/index.tsx
index a630075f98..7bc3e3d17e 100644
--- a/apps/web/src/features/shared/edit-history/index.tsx
+++ b/apps/web/src/features/shared/edit-history/index.tsx
@@ -3,7 +3,6 @@
import React, { useMemo, useState } from "react";
import defaults from "@/defaults";
import { renderPostBody, setProxyBase } from "@ecency/render-helper";
-import "./index.scss";
import { Modal, ModalBody, ModalHeader, ModalTitle } from "@ui/modal";
import { FormControl } from "@ui/input";
import { Entry } from "@/entities";
diff --git a/apps/web/src/features/shared/editor-toolbar/add-image-mobile/index.tsx b/apps/web/src/features/shared/editor-toolbar/add-image-mobile/index.tsx
index a349075b21..6d81dbddbf 100644
--- a/apps/web/src/features/shared/editor-toolbar/add-image-mobile/index.tsx
+++ b/apps/web/src/features/shared/editor-toolbar/add-image-mobile/index.tsx
@@ -1,6 +1,5 @@
import React from "react";
import { proxifyImageSrc, setProxyBase } from "@ecency/render-helper";
-import "./_index.scss";
import { Modal, ModalBody, ModalHeader, ModalTitle } from "@ui/modal";
import { Button } from "@ui/button";
import i18next from "i18next";
diff --git a/apps/web/src/features/shared/editor-toolbar/index.tsx b/apps/web/src/features/shared/editor-toolbar/index.tsx
index 2224099acc..b219853f3c 100644
--- a/apps/web/src/features/shared/editor-toolbar/index.tsx
+++ b/apps/web/src/features/shared/editor-toolbar/index.tsx
@@ -4,7 +4,6 @@ import React, { useCallback, useEffect, useMemo, useRef, useState } from "react"
import { useMountedState } from "react-use";
import { v4 } from "uuid";
import { codeTagsSvg, emoticonHappyOutlineSvg, formatBoldSvg, formatItalicSvg, formatListBulletedSvg, formatListNumberedSvg, formatQuoteCloseSvg, formatTitleSvg, gifIcon, gridSvg, imageSvg, textShortSvg, videoSvg } from "@/assets/img/svg";
-import "./_index.scss";
import { UilPanelAdd } from "@tooni/iconscout-unicons-react";
import { PollsCreation, PollSnapshot } from "@/features/polls";
import { useIsMobile } from "@/features/ui/util/use-is-mobile";
diff --git a/apps/web/src/features/shared/entry-info/index.tsx b/apps/web/src/features/shared/entry-info/index.tsx
index 1f917b4675..eaa1d2dda4 100644
--- a/apps/web/src/features/shared/entry-info/index.tsx
+++ b/apps/web/src/features/shared/entry-info/index.tsx
@@ -1,4 +1,3 @@
-import "./_index.scss";
import { accountReputation, parseDate } from "@/utils";
import { Entry } from "@/entities";
import {
diff --git a/apps/web/src/features/shared/entry-list-content/index.tsx b/apps/web/src/features/shared/entry-list-content/index.tsx
index cd30e74a67..5acdeea85d 100644
--- a/apps/web/src/features/shared/entry-list-content/index.tsx
+++ b/apps/web/src/features/shared/entry-list-content/index.tsx
@@ -1,7 +1,6 @@
"use client";
import React from "react";
-import "./_index.scss";
import { Account, Community, Entry } from "@/entities";
import { EntryListItem } from "@/features/shared";
import { useVisibleEntries } from "@/features/shared/entry-list-item/use-muted-authors";
diff --git a/apps/web/src/features/shared/entry-list-item/index.tsx b/apps/web/src/features/shared/entry-list-item/index.tsx
index 75488af4db..3441a9d623 100644
--- a/apps/web/src/features/shared/entry-list-item/index.tsx
+++ b/apps/web/src/features/shared/entry-list-item/index.tsx
@@ -2,7 +2,6 @@
import React from "react";
import { setProxyBase } from "@ecency/render-helper";
-import "./_index.scss";
import defaults from "@/defaults";
import { Account, Community, Entry, FullAccount } from "@/entities";
import { makeEntryPath } from "@/utils";
diff --git a/apps/web/src/features/shared/entry-list-loading-item/index.tsx b/apps/web/src/features/shared/entry-list-loading-item/index.tsx
index 05cba16464..9414e1b911 100644
--- a/apps/web/src/features/shared/entry-list-loading-item/index.tsx
+++ b/apps/web/src/features/shared/entry-list-loading-item/index.tsx
@@ -1,6 +1,4 @@
import React from "react";
-import "./_index.scss";
-
export function EntryListLoadingItem() {
return (
<>
diff --git a/apps/web/src/features/shared/entry-menu/index.tsx b/apps/web/src/features/shared/entry-menu/index.tsx
index 074d71fe75..657cfd0cfa 100644
--- a/apps/web/src/features/shared/entry-menu/index.tsx
+++ b/apps/web/src/features/shared/entry-menu/index.tsx
@@ -2,7 +2,6 @@
import React, { useEffect, useRef, useState } from "react";
import { success } from "../feedback";
-import "./_index.scss";
import { useMenuItemsGenerator } from "./menu-items-generator";
import { Entry } from "@/entities";
import { getCommunityCache, useCommunityPin } from "@/core/caches";
diff --git a/apps/web/src/features/shared/entry-payout/index.tsx b/apps/web/src/features/shared/entry-payout/index.tsx
index 6cfb9e5f21..9580667ea8 100644
--- a/apps/web/src/features/shared/entry-payout/index.tsx
+++ b/apps/web/src/features/shared/entry-payout/index.tsx
@@ -1,7 +1,6 @@
"use client";
import React, { useRef, useState } from "react";
-import "./_index.scss";
import { Popover, PopoverContent } from "@ui/popover";
import { EntryPayoutDetail } from "@/features/shared/entry-payout/entry-payout-detail";
import { parseAsset } from "@/utils";
diff --git a/apps/web/src/features/shared/entry-reblog-btn/index.tsx b/apps/web/src/features/shared/entry-reblog-btn/index.tsx
index 832a4747a9..a149e8f870 100644
--- a/apps/web/src/features/shared/entry-reblog-btn/index.tsx
+++ b/apps/web/src/features/shared/entry-reblog-btn/index.tsx
@@ -1,7 +1,6 @@
"use client";
import React, { useMemo, useRef, useState } from "react";
-import "./_index.scss";
import { Entry } from "@/entities";
import { PopoverConfirm } from "@/features/ui";
import i18next from "i18next";
diff --git a/apps/web/src/features/shared/entry-share/index.tsx b/apps/web/src/features/shared/entry-share/index.tsx
index 67c95b5455..81f77fcda2 100644
--- a/apps/web/src/features/shared/entry-share/index.tsx
+++ b/apps/web/src/features/shared/entry-share/index.tsx
@@ -1,5 +1,4 @@
import React from "react";
-import "./_index.scss";
import { Modal, ModalBody, ModalHeader, ModalTitle } from "@ui/modal";
import { Entry } from "@/entities";
import {
diff --git a/apps/web/src/features/shared/entry-tip-btn/index.tsx b/apps/web/src/features/shared/entry-tip-btn/index.tsx
index 08f608b2b6..e8eb81a0e3 100644
--- a/apps/web/src/features/shared/entry-tip-btn/index.tsx
+++ b/apps/web/src/features/shared/entry-tip-btn/index.tsx
@@ -3,7 +3,6 @@
import { useActiveAccount } from "@/core/hooks/use-active-account";
import React, { useMemo, useState } from "react";
-import "./_index.scss";
import dynamic from "next/dynamic";
import { Modal, ModalBody, ModalHeader } from "@ui/modal";
import { Account, Entry } from "@/entities";
diff --git a/apps/web/src/features/shared/entry-vote-btn/index.tsx b/apps/web/src/features/shared/entry-vote-btn/index.tsx
index c34ba61989..b65525e8b4 100644
--- a/apps/web/src/features/shared/entry-vote-btn/index.tsx
+++ b/apps/web/src/features/shared/entry-vote-btn/index.tsx
@@ -1,7 +1,6 @@
"use client";
import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
-import "./_index.scss";
import * as ss from "@/utils/session-storage";
import { LoginRequired } from "@/features/shared";
import useClickAway from "react-use/lib/useClickAway";
diff --git a/apps/web/src/features/shared/entry-votes/index.tsx b/apps/web/src/features/shared/entry-votes/index.tsx
index 9230081444..7d246a556e 100644
--- a/apps/web/src/features/shared/entry-votes/index.tsx
+++ b/apps/web/src/features/shared/entry-votes/index.tsx
@@ -1,7 +1,6 @@
"use client";
import React, { ReactNode, useMemo, useRef, useState } from "react";
-import "./_index.scss";
import { Entry } from "@/entities";
import { Tooltip } from "@ui/tooltip";
import i18next from "i18next";
diff --git a/apps/web/src/features/shared/feedback/feedback-modal/index.tsx b/apps/web/src/features/shared/feedback/feedback-modal/index.tsx
index 3777b63715..fb929bbdec 100644
--- a/apps/web/src/features/shared/feedback/feedback-modal/index.tsx
+++ b/apps/web/src/features/shared/feedback/feedback-modal/index.tsx
@@ -1,7 +1,6 @@
import React from "react";
import { InsufficientResourceCreditsDetails } from "./insufficient-resource-credits-details";
import { CommonDetails } from "./common-details";
-import "./_index.scss";
import { Modal, ModalBody, ModalHeader, ModalTitle } from "@ui/modal";
import { ErrorFeedbackObject } from "../feedback-events";
import { ErrorTypes } from "@/enums";
diff --git a/apps/web/src/features/shared/feedback/feedback.tsx b/apps/web/src/features/shared/feedback/feedback.tsx
index 9ed97ce9b5..da5a95804a 100644
--- a/apps/web/src/features/shared/feedback/feedback.tsx
+++ b/apps/web/src/features/shared/feedback/feedback.tsx
@@ -6,8 +6,6 @@ import { useMountTransition } from "@/core/hooks";
import clsx from "clsx";
import { useCallback, useEffect, useMemo, useRef } from "react";
import { useMount, useSet, useUnmount } from "react-use";
-import "./_index.scss";
-
interface FeedbackItemProps {
feedback: FeedbackObject;
live: boolean;
diff --git a/apps/web/src/features/shared/gallery/index.tsx b/apps/web/src/features/shared/gallery/index.tsx
index 5db228ac64..db1ada620a 100644
--- a/apps/web/src/features/shared/gallery/index.tsx
+++ b/apps/web/src/features/shared/gallery/index.tsx
@@ -1,7 +1,6 @@
import React from "react";
import { setProxyBase } from "@ecency/render-helper";
import defaults from "@/defaults";
-import "./_index.scss";
import { Modal, ModalBody, ModalHeader, ModalTitle } from "@ui/modal";
import i18next from "i18next";
import { GalleryList } from "@/features/shared/gallery/gallery-list";
diff --git a/apps/web/src/features/shared/key-or-hot/index.tsx b/apps/web/src/features/shared/key-or-hot/index.tsx
index a6964c5b2b..c2fd79835c 100644
--- a/apps/web/src/features/shared/key-or-hot/index.tsx
+++ b/apps/web/src/features/shared/key-or-hot/index.tsx
@@ -12,7 +12,6 @@ import { useCallback, useState } from "react";
import { OrDivider } from "../or-divider";
import { MetaMaskSignButton } from "../metamask-sign-button";
import { ExtensionChooser } from "../extension-chooser";
-import "./index.scss";
import { shouldUseKeychainMobile } from "@/utils/client";
import { isInAppBrowser } from "@/utils/keychain";
import { getLoginType } from "@/utils/user-token";
diff --git a/apps/web/src/features/shared/linear-progress/index.tsx b/apps/web/src/features/shared/linear-progress/index.tsx
index 440792c4e4..f6617b0068 100644
--- a/apps/web/src/features/shared/linear-progress/index.tsx
+++ b/apps/web/src/features/shared/linear-progress/index.tsx
@@ -1,8 +1,6 @@
"use client";
import React from "react";
-import "./_index.scss";
-
export function LinearProgress() {
return (
diff --git a/apps/web/src/features/shared/list-style-toggle/index.tsx b/apps/web/src/features/shared/list-style-toggle/index.tsx
index 18d15e0042..32d3b107fa 100644
--- a/apps/web/src/features/shared/list-style-toggle/index.tsx
+++ b/apps/web/src/features/shared/list-style-toggle/index.tsx
@@ -1,7 +1,6 @@
"use client";
import React from "react";
-import "./_index.scss";
import { Dropdown, DropdownItem, DropdownMenu, DropdownToggle } from "@ui/dropdown";
import { gridView, listView, menuDownSvg } from "@ui/svg";
import i18next from "i18next";
diff --git a/apps/web/src/features/shared/login/index.tsx b/apps/web/src/features/shared/login/index.tsx
index 9cceda096f..740771c958 100644
--- a/apps/web/src/features/shared/login/index.tsx
+++ b/apps/web/src/features/shared/login/index.tsx
@@ -2,7 +2,6 @@
import { useGlobalStore } from "@/core/global-store";
import { Modal, ModalBody, ModalHeader } from "@ui/modal";
-import "./_index.scss";
import i18next from "i18next";
import Login from "./login";
diff --git a/apps/web/src/features/shared/message-no-data/index.tsx b/apps/web/src/features/shared/message-no-data/index.tsx
index 50b5bba40a..dc082a9e33 100644
--- a/apps/web/src/features/shared/message-no-data/index.tsx
+++ b/apps/web/src/features/shared/message-no-data/index.tsx
@@ -1,5 +1,4 @@
import React, { ReactNode } from "react";
-import "./_index.scss";
import { Button } from "@ui/button";
import Image from "next/image";
import Link from "next/link";
diff --git a/apps/web/src/features/shared/mute-btn/index.tsx b/apps/web/src/features/shared/mute-btn/index.tsx
index 0f3e909711..39de75bcab 100644
--- a/apps/web/src/features/shared/mute-btn/index.tsx
+++ b/apps/web/src/features/shared/mute-btn/index.tsx
@@ -1,5 +1,4 @@
import React, { useCallback, useMemo, useState } from "react";
-import "./_index.scss";
import { Modal, ModalBody, ModalHeader } from "@ui/modal";
import { FormControl, InputGroup } from "@ui/input";
import { Button } from "@ui/button";
diff --git a/apps/web/src/features/shared/navbar/index.tsx b/apps/web/src/features/shared/navbar/index.tsx
index cd3c973578..10d7233395 100644
--- a/apps/web/src/features/shared/navbar/index.tsx
+++ b/apps/web/src/features/shared/navbar/index.tsx
@@ -4,7 +4,6 @@ import React, { lazy, Suspense, useEffect, useState } from "react";
import usePrevious from "react-use/lib/usePrevious";
import * as ls from "@/utils/local-storage";
import useMount from "react-use/lib/useMount";
-import "./_index.scss";
import { NavbarMobile } from "./navbar-mobile";
import { NavbarDesktop } from "./navbar-desktop";
import { usePathname, useRouter, useSearchParams } from "next/navigation";
diff --git a/apps/web/src/features/shared/navbar/navbar-notifications-button.tsx b/apps/web/src/features/shared/navbar/navbar-notifications-button.tsx
index fe11de0e02..0067603e86 100644
--- a/apps/web/src/features/shared/navbar/navbar-notifications-button.tsx
+++ b/apps/web/src/features/shared/navbar/navbar-notifications-button.tsx
@@ -1,6 +1,5 @@
"use client";
-import "./_navbar-notifications-button.scss";
import { Button } from "@ui/button";
import { Tooltip } from "@ui/tooltip";
import i18next from "i18next";
diff --git a/apps/web/src/features/shared/navbar/sidebar/navbar-side-theme-switcher.tsx b/apps/web/src/features/shared/navbar/sidebar/navbar-side-theme-switcher.tsx
index 86f4de5d29..a0ffc208f3 100644
--- a/apps/web/src/features/shared/navbar/sidebar/navbar-side-theme-switcher.tsx
+++ b/apps/web/src/features/shared/navbar/sidebar/navbar-side-theme-switcher.tsx
@@ -1,6 +1,5 @@
"use client";
-import "./_navbar-side-theme-switcher.scss";
import { classNameObject } from "@ui/util";
import { Theme } from "@/enums";
import { brightnessSvg } from "@ui/svg";
diff --git a/apps/web/src/features/shared/notifications/index.tsx b/apps/web/src/features/shared/notifications/index.tsx
index b8b96347f6..9be9d21aa5 100644
--- a/apps/web/src/features/shared/notifications/index.tsx
+++ b/apps/web/src/features/shared/notifications/index.tsx
@@ -1,7 +1,6 @@
"use client";
import { NotificationsContent } from "@/features/shared/notifications/notifications-content";
-import "./_index.scss";
import { useActiveAccount } from "@/core/hooks/use-active-account";
import { useGlobalStore } from "@/core/global-store";
import { ModalSidebar } from "@ui/modal/modal-sidebar";
diff --git a/apps/web/src/features/shared/or-divider/index.tsx b/apps/web/src/features/shared/or-divider/index.tsx
index cdb757a6a6..a01a11f5b9 100644
--- a/apps/web/src/features/shared/or-divider/index.tsx
+++ b/apps/web/src/features/shared/or-divider/index.tsx
@@ -1,7 +1,6 @@
"use client";
import React from "react";
-import "./_index.scss";
import i18next from "i18next";
export function OrDivider() {
diff --git a/apps/web/src/features/shared/profile-popover/index.tsx b/apps/web/src/features/shared/profile-popover/index.tsx
index 412f78e81b..c8a597cec1 100644
--- a/apps/web/src/features/shared/profile-popover/index.tsx
+++ b/apps/web/src/features/shared/profile-popover/index.tsx
@@ -1,7 +1,6 @@
"use client";
import React, { useCallback, useState } from "react";
-import "./index.scss";
import { Entry } from "@/entities";
import ProfilePopoverCard from "@/features/shared/profile-popover/profile-popover-card";
import { ProfilePopoverAuthor } from "@/features/shared/profile-popover/profile-popover-author";
diff --git a/apps/web/src/features/shared/promote/index.tsx b/apps/web/src/features/shared/promote/index.tsx
index a92ddca962..cda7a8528b 100644
--- a/apps/web/src/features/shared/promote/index.tsx
+++ b/apps/web/src/features/shared/promote/index.tsx
@@ -3,7 +3,6 @@
import { useActiveAccount } from "@/core/hooks/use-active-account";
import React, { useCallback, useEffect, useMemo, useState } from "react";
-import "./_index.scss";
import { Modal, ModalBody, ModalHeader } from "@ui/modal";
import { FormControl } from "@ui/input";
import { Button } from "@ui/button";
diff --git a/apps/web/src/features/shared/schedules/index.tsx b/apps/web/src/features/shared/schedules/index.tsx
index b3a24049eb..26320e7d7e 100644
--- a/apps/web/src/features/shared/schedules/index.tsx
+++ b/apps/web/src/features/shared/schedules/index.tsx
@@ -1,7 +1,6 @@
import React from "react";
import defaults from "@/defaults";
import { setProxyBase } from "@ecency/render-helper";
-import "./_index.scss";
import { Modal, ModalBody, ModalHeader, ModalTitle } from "@ui/modal";
import i18next from "i18next";
import { SchedulesList } from "@/features/shared/schedules/schedules-list";
diff --git a/apps/web/src/features/shared/scroll-to-top/index.tsx b/apps/web/src/features/shared/scroll-to-top/index.tsx
index 65ef1cbb9c..c38ee04589 100644
--- a/apps/web/src/features/shared/scroll-to-top/index.tsx
+++ b/apps/web/src/features/shared/scroll-to-top/index.tsx
@@ -1,7 +1,6 @@
"use client";
import { useEffect, useState } from "react";
-import "./_index.scss";
import { chevronUpSvg } from "@/features/ui/svg";
import i18next from "i18next";
import { Tooltip } from "@ui/tooltip";
diff --git a/apps/web/src/features/shared/search-box/index.tsx b/apps/web/src/features/shared/search-box/index.tsx
index 5f1cc782f4..f83a810f70 100644
--- a/apps/web/src/features/shared/search-box/index.tsx
+++ b/apps/web/src/features/shared/search-box/index.tsx
@@ -1,5 +1,4 @@
import React from "react";
-import "./_index.scss";
import { FormControl, InputGroup } from "@ui/input";
import { Button } from "@ui/button";
import { copyContent } from "@/features/ui/svg";
diff --git a/apps/web/src/features/shared/search-list-item/index.tsx b/apps/web/src/features/shared/search-list-item/index.tsx
index 08e617c7e1..04a85c1a54 100644
--- a/apps/web/src/features/shared/search-list-item/index.tsx
+++ b/apps/web/src/features/shared/search-list-item/index.tsx
@@ -1,6 +1,5 @@
import React, { useMemo } from "react";
import { catchPostImage, postBodySummary, setProxyBase } from "@ecency/render-helper";
-import "./_index.scss";
import defaults from "@/defaults";
import { SearchResult } from "@/entities";
import {
diff --git a/apps/web/src/features/shared/skeleton/index.tsx b/apps/web/src/features/shared/skeleton/index.tsx
index c227f77b1f..9e94f3711b 100644
--- a/apps/web/src/features/shared/skeleton/index.tsx
+++ b/apps/web/src/features/shared/skeleton/index.tsx
@@ -1,6 +1,4 @@
import React from "react";
-import "./index.scss";
-
interface Props {
className?: string;
style?: object;
diff --git a/apps/web/src/features/shared/suggestion-list/index.tsx b/apps/web/src/features/shared/suggestion-list/index.tsx
index 4717297de9..d9aed356f2 100644
--- a/apps/web/src/features/shared/suggestion-list/index.tsx
+++ b/apps/web/src/features/shared/suggestion-list/index.tsx
@@ -1,7 +1,6 @@
"use client";
import React, { CSSProperties, JSX, useEffect, useRef, useState } from "react";
-import "./_index.scss";
import { classNameObject } from "@ui/util";
import useClickAway from "react-use/lib/useClickAway";
import i18next from "i18next";
diff --git a/apps/web/src/features/shared/switch-lang/index.tsx b/apps/web/src/features/shared/switch-lang/index.tsx
index 6baa650226..d872eca3d0 100644
--- a/apps/web/src/features/shared/switch-lang/index.tsx
+++ b/apps/web/src/features/shared/switch-lang/index.tsx
@@ -1,7 +1,6 @@
"use client";
import React, { useState } from "react";
-import "./_index.scss";
import { Dropdown, DropdownItem, DropdownMenu, DropdownToggle } from "@ui/dropdown";
import Link from "next/link";
import i18next from "i18next";
diff --git a/apps/web/src/features/shared/textarea-autocomplete/index.tsx b/apps/web/src/features/shared/textarea-autocomplete/index.tsx
index a173d6edda..97e35f1eac 100644
--- a/apps/web/src/features/shared/textarea-autocomplete/index.tsx
+++ b/apps/web/src/features/shared/textarea-autocomplete/index.tsx
@@ -6,7 +6,6 @@ import React, {
} from "react";
import { useActiveAccount } from "@/core/hooks/use-active-account";
import ReactTextareaAutocomplete from "@webscopeio/react-textarea-autocomplete";
-import "./_index.scss";
import { lookupAccountsQueryOptions, searchPath } from "@ecency/sdk";
import { UserAvatar } from "@/features/shared";
import i18next from "i18next";
diff --git a/apps/web/src/features/shared/transactions/index.tsx b/apps/web/src/features/shared/transactions/index.tsx
index c32aaaa26e..33a8f0b768 100644
--- a/apps/web/src/features/shared/transactions/index.tsx
+++ b/apps/web/src/features/shared/transactions/index.tsx
@@ -1,3 +1 @@
-import "./_index.scss";
-
export * from "./transaction-row";
diff --git a/apps/web/src/features/shared/transfer/index.tsx b/apps/web/src/features/shared/transfer/index.tsx
index 2e2172bb18..2760f87349 100644
--- a/apps/web/src/features/shared/transfer/index.tsx
+++ b/apps/web/src/features/shared/transfer/index.tsx
@@ -1,7 +1,6 @@
"use client";
import React, { useCallback, useEffect, useMemo, useState } from "react";
-import "./_index.scss";
import { Modal, ModalBody, ModalHeader } from "@ui/modal";
import i18next from "i18next";
import { TransferStep1 } from "@/features/shared/transfer/transfer-step-1";
diff --git a/apps/web/src/features/shared/two-user-avatar/index.tsx b/apps/web/src/features/shared/two-user-avatar/index.tsx
index fdc8e0b6f8..ceeebce4d9 100644
--- a/apps/web/src/features/shared/two-user-avatar/index.tsx
+++ b/apps/web/src/features/shared/two-user-avatar/index.tsx
@@ -1,6 +1,4 @@
import defaults from "@/defaults";
-import "./_index.scss";
-
interface Props {
from: string;
to: string;
diff --git a/apps/web/src/features/shared/user-avatar/index.tsx b/apps/web/src/features/shared/user-avatar/index.tsx
index a5f798601e..9fab42f712 100644
--- a/apps/web/src/features/shared/user-avatar/index.tsx
+++ b/apps/web/src/features/shared/user-avatar/index.tsx
@@ -2,7 +2,6 @@
import React, { useMemo } from "react";
import { proxifyImageSrc, setProxyBase } from "@ecency/render-helper";
-import "./_index.scss";
import defaults from "@/defaults";
setProxyBase(defaults.imageServer);
diff --git a/apps/web/src/features/shared/video-upload-threespeak/index.tsx b/apps/web/src/features/shared/video-upload-threespeak/index.tsx
index 51c04c7d55..38457b8e01 100644
--- a/apps/web/src/features/shared/video-upload-threespeak/index.tsx
+++ b/apps/web/src/features/shared/video-upload-threespeak/index.tsx
@@ -9,7 +9,6 @@ import { recordVideoSvg } from "@ui/svg";
import i18next from "i18next";
import React, { ChangeEvent, ReactNode, useCallback, useEffect, useRef, useState } from "react";
import useMountedState from "react-use/lib/useMountedState";
-import "./index.scss";
import { VideoUploadItem } from "./video-upload-item";
import { VideoUploadRecorder } from "./video-upload-recorder";
import { useActiveAccount } from "@/core/hooks/use-active-account";
diff --git a/apps/web/src/features/ui/button-group/index.tsx b/apps/web/src/features/ui/button-group/index.tsx
index e7b43d267a..43e7b51fc2 100644
--- a/apps/web/src/features/ui/button-group/index.tsx
+++ b/apps/web/src/features/ui/button-group/index.tsx
@@ -1,5 +1,4 @@
import React from "react";
-import "./_index.scss";
import { classNameObject } from "@/features/ui/util";
interface Props {
diff --git a/apps/web/src/features/ui/emoji-picker/index.tsx b/apps/web/src/features/ui/emoji-picker/index.tsx
index b30ee7a20a..6996544740 100644
--- a/apps/web/src/features/ui/emoji-picker/index.tsx
+++ b/apps/web/src/features/ui/emoji-picker/index.tsx
@@ -10,7 +10,6 @@ import {
} from "react";
import { createPortal } from "react-dom";
import { flip, offset, shift, size, useFloating } from "@floating-ui/react-dom";
-import "./_index.scss";
import Picker from "@emoji-mart/react";
import emojiData from "@emoji-mart/data";
import { useGlobalStore } from "@/core/global-store";
diff --git a/apps/web/src/features/ui/gif-picker/index.tsx b/apps/web/src/features/ui/gif-picker/index.tsx
index 63bd73d28b..0923e81e6c 100644
--- a/apps/web/src/features/ui/gif-picker/index.tsx
+++ b/apps/web/src/features/ui/gif-picker/index.tsx
@@ -6,7 +6,6 @@ import React, {
useRef,
useState
} from "react";
-import "./_index.scss";
import { SearchBox } from "@/features/shared";
import Image from "next/image";
import { insertOrReplace } from "@/utils/input-util";
diff --git a/apps/web/src/features/ui/input/input-vote.tsx b/apps/web/src/features/ui/input/input-vote.tsx
index 1a7f519931..0a206c4e7c 100644
--- a/apps/web/src/features/ui/input/input-vote.tsx
+++ b/apps/web/src/features/ui/input/input-vote.tsx
@@ -10,7 +10,6 @@ import React, {
useState
} from "react";
import { UilArrowDown, UilArrowUp } from "@tooni/iconscout-unicons-react";
-import "./_input-vote.scss";
import { InputGroup } from "@ui/input/input-group";
import useInterval from "react-use/lib/useInterval";
import { classNameObject } from "@ui/util";
diff --git a/apps/web/src/features/waves/components/wave-actions.tsx b/apps/web/src/features/waves/components/wave-actions.tsx
index 2b2789453d..2cd7894174 100644
--- a/apps/web/src/features/waves/components/wave-actions.tsx
+++ b/apps/web/src/features/waves/components/wave-actions.tsx
@@ -13,7 +13,6 @@ import { Button } from "@ui/button";
import i18next from "i18next";
import React, { ReactNode } from "react";
import { WaveEntry } from "@/entities";
-import "./wave-actions.scss";
import { useActiveAccount } from "@/core/hooks/use-active-account";
import { PostTipsResponse } from "@ecency/sdk";
import { commentSvg } from "@ui/svg";
diff --git a/apps/web/src/features/waves/components/wave-form/index.tsx b/apps/web/src/features/waves/components/wave-form/index.tsx
index 5907701bda..e4d0c1fe81 100644
--- a/apps/web/src/features/waves/components/wave-form/index.tsx
+++ b/apps/web/src/features/waves/components/wave-form/index.tsx
@@ -1,7 +1,6 @@
"use client";
import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
-import "./_index.scss";
import { BeneficiaryRoute, Entry, WaveEntry } from "@/entities";
import { PollsContext, PollsManager, useEntryPollExtractor } from "@/features/polls";
import { useLocalStorage } from "react-use";
diff --git a/apps/web/src/styles/_shared-components.scss b/apps/web/src/styles/_shared-components.scss
new file mode 100644
index 0000000000..98998aa309
--- /dev/null
+++ b/apps/web/src/styles/_shared-components.scss
@@ -0,0 +1,75 @@
+// Aggregate of the SHARED (features/**) component stylesheets, imported once from
+// style.scss. These used to be imported one-per-component from TS/TSX, which made
+// the build emit one render-blocking per component: 52 of them on a post
+// page. Importing them from a single entry collapses that to one stylesheet, keeps
+// the immutable long-cache, and adds nothing to the HTML response. See issue #1632.
+
+// ORDER IS CASCADE-SIGNIFICANT. The list is generated in source-path order (which
+// sorts "_index.scss" partials by their underscore-prefixed filename, so the
+// rendered paths below are not lexicographic). The equivalence of the compiled
+// output was verified against this exact order; do not hand-reorder it.
+
+// Route-scoped app/** stylesheets are deliberately NOT aggregated here: a route
+// sheet carrying a global element selector (html/body/*) would leak site-wide once
+// merged into the shared chunk.
+
+@import "../features/announcement/index";
+@import "../features/post-renderer/components/extensions/hive-operation-extension";
+@import "../features/post-renderer/components/extensions/hive-post-link-extension";
+@import "../features/post-renderer/components/extensions/wave-like-post-extension";
+@import "../features/shared/available-credits/index";
+@import "../features/shared/bookmark-btn/index";
+@import "../features/shared/bookmarks/index";
+@import "../features/shared/boost/index";
+@import "../features/shared/buy-sell-hive/index";
+@import "../features/shared/comment/index";
+@import "../features/shared/discussion/index";
+@import "../features/shared/edit-history/index";
+@import "../features/shared/editor-toolbar/index";
+@import "../features/shared/editor-toolbar/add-image-mobile/index";
+@import "../features/shared/entry-info/index";
+@import "../features/shared/entry-list-content/index";
+@import "../features/shared/entry-list-item/index";
+@import "../features/shared/entry-list-loading-item/index";
+@import "../features/shared/entry-menu/index";
+@import "../features/shared/entry-payout/index";
+@import "../features/shared/entry-reblog-btn/index";
+@import "../features/shared/entry-share/index";
+@import "../features/shared/entry-tip-btn/index";
+@import "../features/shared/entry-vote-btn/index";
+@import "../features/shared/entry-votes/index";
+@import "../features/shared/feedback/index";
+@import "../features/shared/feedback/feedback-modal/index";
+@import "../features/shared/gallery/index";
+@import "../features/shared/key-or-hot/index";
+@import "../features/shared/linear-progress/index";
+@import "../features/shared/list-style-toggle/index";
+@import "../features/shared/login/index";
+@import "../features/shared/message-no-data/index";
+@import "../features/shared/mute-btn/index";
+@import "../features/shared/navbar/index";
+@import "../features/shared/navbar/navbar-notifications-button";
+@import "../features/shared/navbar/sidebar/navbar-side-theme-switcher";
+@import "../features/shared/notifications/index";
+@import "../features/shared/or-divider/index";
+@import "../features/shared/profile-popover/index";
+@import "../features/shared/promote/index";
+@import "../features/shared/schedules/index";
+@import "../features/shared/scroll-to-top/index";
+@import "../features/shared/search-box/index";
+@import "../features/shared/search-list-item/index";
+@import "../features/shared/skeleton/index";
+@import "../features/shared/suggestion-list/index";
+@import "../features/shared/switch-lang/index";
+@import "../features/shared/textarea-autocomplete/index";
+@import "../features/shared/transactions/index";
+@import "../features/shared/transfer/index";
+@import "../features/shared/two-user-avatar/index";
+@import "../features/shared/user-avatar/index";
+@import "../features/shared/video-upload-threespeak/index";
+@import "../features/ui/button-group/index";
+@import "../features/ui/emoji-picker/index";
+@import "../features/ui/gif-picker/index";
+@import "../features/ui/input/input-vote";
+@import "../features/waves/components/wave-actions";
+@import "../features/waves/components/wave-form/index";
diff --git a/apps/web/src/styles/style.scss b/apps/web/src/styles/style.scss
index c174d2105e..e2901cedeb 100644
--- a/apps/web/src/styles/style.scss
+++ b/apps/web/src/styles/style.scss
@@ -17,6 +17,9 @@
@tailwind utilities;
+// Component stylesheets, collapsed into this entry (issue #1632).
+@import "./shared-components";
+
@layer utilities {
.no-scrollbar::-webkit-scrollbar {
display: none;