This CSS code defines a custom font family called “Guardian Headline Full” with multiple styles and weights. It includes light, regular, medium, and semibold versions, each available in both normal and italic styles. The font files are hosted online and provided in three formats: WOFF2, WOFF, and TrueType, ensuring compatibility across different browsers.@font-face {
font-family: Guardian Headline Full;
src: url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Bold.woff2) format(“woff2”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Bold.woff) format(“woff”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Bold.ttf) format(“truetype”);
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: Guardian Headline Full;
src: url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BoldItalic.woff2) format(“woff2”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BoldItalic.woff) format(“woff”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BoldItalic.ttf) format(“truetype”);
font-weight: 700;
font-style: italic;
}
@font-face {
font-family: Guardian Headline Full;
src: url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Black.woff2) format(“woff2”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Black.woff) format(“woff”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Black.ttf) format(“truetype”);
font-weight: 900;
font-style: normal;
}
@font-face {
font-family: Guardian Headline Full;
src: url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BlackItalic.woff2) format(“woff2”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BlackItalic.woff) format(“woff”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BlackItalic.ttf) format(“truetype”);
font-weight: 900;
font-style: italic;
}
@font-face {
font-family: Guardian Titlepiece;
src: url(https://assets.guim.co.uk/static/frontend/fonts/guardian-titlepiece/noalts-not-hinted/GTGuardianTitlepiece-Bold.woff2) format(“woff2”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-titlepiece/noalts-not-hinted/GTGuardianTitlepiece-Bold.woff) format(“woff”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-titlepiece/noalts-not-hinted/GTGuardianTitlepiece-Bold.ttf) format(“truetype”);
font-weight: 700;
font-style: normal;
}
@media (min-width: 71.25em) {
.content__main-column–interactive {
margin-left: 160px;
}
}
@media (min-width: 81.25em) {
.content__main-column–interactive {
margin-left: 240px;
}
}
.content__main-column–interactive .element-atom {
max-width: 620px;
}
@media (max-width: 46.24em) {
.content__main-column–interactive .element-atom {
max-width: 100%;
}
}
.content__main-column–interactive .element-showcase {
margin-left: 0;
}
@media (min-width: 46.25em) {
.content__main-column–interactive .element-showcase {
max-width: 620px;
}
}
@media (min-width: 71.25em) {
.content__main-column–interactive .element-showcase {
max-width: 860px;
}
}
.content__main-column–interactive .element-immersive {
max-width: 1100px;
}
@media (max-width: 46.24em) {
.content__main-column–interactive .element-immersive {
width: calc(100vw – var(–scrollbar-width, 0px));
position: relative;
left: 50%;
right: 50%;
margin-left: calc(-50vw + var(–half-scrollbar-width, 0px)) !important;
margin-right: calc(-50vw + var(–half-scrollbar-width, 0px)) !important;
}
}
@media (min-width: 46.25em) {
.content__main-column–interactive .element-immersive {
transform: translate(-20px);
width: calc(100% + 60px);
}
}
@media (max-width: 71.24em) {
.content__main-column–interactive .element-immersive {
margin-left: 0;
margin-right: 0;
}
}
@media (min-width: 71.25em) {
.content__main-column–interactive .element-immersive {
transform: translate(0);
width: auto;
}
}
@media (min-width: 81.25em) {
.content__main-column–interactive .element-immersive {
max-width: 1260px;
}
}
.content__main-column–interactive p,
.content__main-column–interactive ul {
max-width: 620px;
}
.content__main-column–interactive:before {
position: absolute;
top: 0;
height: calc(100% + 15px);
min-height: 100px;
content: “”;
}
@media (min-width: 71.25em) {
}.content__main-column–interactive:before {
border-left: 1px solid #dcdcdc;
z-index: -1;
left: -10px;
}
@media (min-width: 81.25em) {
.content__main-column–interactive:before {
border-left: 1px solid #dcdcdc;
left: -11px;
}
}
.content__main-column–interactive .element-atom {
margin-top: 0;
margin-bottom: 0;
padding-bottom: 12px;
padding-top: 12px;
}
.content__main-column–interactive p + .element-atom {
padding-top: 0;
padding-bottom: 0;
margin-top: 12px;
margin-bottom: 12px;
}
.content__main-column–interactive .element-inline {
max-width: 620px;
}
@media (min-width: 61.25em) {
figure[data-spacefinder-role=”inline”].element {
max-width: 620px;
}
}
:root {
–dateline: #606060;
–headerBorder: #dcdcdc;
–captionText: #999;
–captionBackground: hsla(0, 0%, 7%, 0.72);
–feature: #c70000;
–new-pillar-colour: var(–primary-pillar, var(–feature));
}
:root:root {
–subheading-text: var(–secondary-pillar);
–pullquote-text: var(–secondary-pillar);
–pullquote-icon: var(–secondary-pillar);
–block-quote-text: var(–article-text);
}
:root:root blockquote {
–block-quote-fill: var(–secondary-pillar);
}
@media (prefers-color-scheme: dark) {
:root:root:not([data-color-scheme=”light”]) {
–subheading-text: var(–darkmode-pillar);
–pullquote-text: var(–darkmode-pillar);
–pullquote-icon: var(–darkmode-pillar);
}
:root:root:not([data-color-scheme=”light”]) blockquote {
–block-quote-fill: var(–darkmode-pillar);
}
}
.content__main-column–interactive .element.element-atom,
.element.element-atom {
padding: 0;
}
#article-body > div .element-atom:first-of-type + p:first-of-type,
#article-body > div .element-atom:first-of-type + .sign-in-gate + p:first-of-type,
#article-body > div .element-atom:first-of-type + #sign-in-gate + p:first-of-type,
#article-body > div hr:not(.last-horizontal-rule) + p,
.content–interactive > div .element-atom:first-of-type + p:first-of-type,
.content–interactive > div .element-atom:first-of-type + .sign-in-gate + p:first-of-type,
.content–interactive > div .element-atom:first-of-type + #sign-in-gate + p:first-of-type,
.content–interactive > div hr:not(.last-horizontal-rule) + p,
#comment-body .element-atom:first-of-type + p:first-of-type,
#comment-body .element-atom:first-of-type + .sign-in-gate + p:first-of-type,
#comment-body .element-atom:first-of-type + #sign-in-gate + p:first-of-type,
#comment-body hr:not(.last-horizontal-rule) + p,
[data-gu-name=”body”] .element-atom:first-of-type + p:first-of-type,
[data-gu-name=”body”] .element-atom:first-of-type + .sign-in-gate + p:first-of-type,
[data-gu-name=”body”] .element-atom:first-of-type + #sign-in-gate + p:first-of-type,
[data-gu-name=”body”] hr:not(.last-horizontal-rule) + p,
#feature-body .element-atom:first-of-type + p:first-of-type,
#feature-body .element-atom:first-of-type + .sign-in-gate + p:first-of-type,
#feature-body .element-atom:first-of-type + #sign-in-gate + p:first-of-type,
#feature-body hr:not(.last-horizontal-rule) + p {
padding-top: 14px;
}
#article-body > div .element-atom:first-of-type + p:first-of-type:first-letter,
#article-body > div .element-atom:first-of-type + .sign-in-gate + p:first-of-type:first-letter,
#article-body > div .element-atom:first-of-type + #sign-in-gate + p:first-of-type:first-letter,
#article-body > div hr:not(.last-horizontal-rule) + p:first-letter,
.content–interactive > div .element-atom:first-of-type + p:first-of-type:first-letter,
.content–interactive > div .element-atom:first-of-type + .sign-in-gate + p:first-of-type:first-letter,
.content–interactive > div .element-atom:first-of-type + #sign-in-gate + p:first-of-type:first-letter,
.content–interactive > div hr:not(.last-horizontal-rule) + p:first-letter,
#comment-body .element-atom:first-of-type + p:first-of-type:first-letter,
#comment-body .element-atom:first-of-type + .sign-in-gate + p:first-of-type:first-letter,
#comment-body .element-atom:first-of-type + #sign-in-gate + p:first-of-type:first-letter,
#comment-body hr:not(.last-horizontal-rule) + p:first-letter,
[data-gu-name=”body”] .element-atom:first-of-type + p:first-of-type:first-letter,
[data-gu-name=”body”] .element-atom:first-of-type + .sign-in-gate + p:first-of-type:first-letter,
[data-gu-name=”body”] .element-atom:first-of-type + #sign-in-gate + p:first-of-type:first-letter,
[data-gu-name=”body”] hr:not(.last-horizontal-rule) + p:first-letter,
#feature-body .element-atom:first-of-type + p:first-of-type:first-letter,The first letter of the first paragraph in the article body uses a specific headline font, set in bold, uppercase, with a large size and drop cap styling. It is colored using a custom property.
Paragraphs that come immediately after a horizontal rule have no top padding. Pullquotes within the article body have a maximum width of 620 pixels.
Captions for showcase elements are positioned statically, taking the full width up to 620px. Immersive elements span the full viewport width, adjusting for scrollbars. On larger screens, they are constrained to a maximum width, while on smaller screens, they extend to the edges with adjusted margins. Captions for immersive elements have responsive horizontal padding.
On wider screens, the article header uses a CSS Grid layout. The headline has a top border, and the meta information is positioned relatively. Links within the standfirst are underlined with a custom color that changes on hover, and the first paragraph has a top border.The provided text appears to be CSS code for styling a webpage layout, specifically for a component or wrapper named “furniture-wrapper.” It defines styles for different screen sizes, including adjustments for grid layouts, borders, fonts, and the visibility of elements. The code sets rules for headlines, meta information, standfirst text, and media elements, controlling their appearance across various devices.[data-gu-name=media] div div {
width: 100%;
margin-inline: 0;
}
@media (min-width: 61.25em) {
.furniture-wrapper #main-media,
.furniture-wrapper [data-gu-name=media] {
margin-bottom: 0;
}
}
@media (max-width: 46.24em) {
.furniture-wrapper #main-media,
.furniture-wrapper [data-gu-name=media] {
width: calc(100vw – var(–scrollbar-width, 0px));
margin-left: -10px;
}
}
@media (max-width: 46.24em) and (min-width: 30em) {
.furniture-wrapper #main-media,
.furniture-wrapper [data-gu-name=media] {
margin-left: -20px;
}
}
.furniture-wrapper figcaption {
position: absolute;
bottom: 0;
padding: 4px 10px 12px;
background-color: var(–captionBackground);
color: var(–captionText);
max-width: unset;
width: 100%;
margin-bottom: 0;
min-height: 46px;
}
.furniture-wrapper figcaption span {
color: var(–headerBorder);
}
.furniture-wrapper figcaption span svg {
fill: var(–headerBorder);
}
.furniture-wrapper figcaption span:nth-of-type(1) {
display: none;
}
.furniture-wrapper figcaption span:nth-of-type(2) {
display: block;
max-width: 90%;
}
@media (min-width: 30em) {
.furniture-wrapper figcaption {
padding: 4px 20px 12px;
}
}
.furniture-wrapper figcaption.hidden {
opacity: 0;
}
.furniture-wrapper #caption-button {
display: block;
position: absolute;
bottom: 10px;
right: 8px;
z-index: 30;
background-color: var(–captionBackground);
border: none;
border-radius: 50%;
padding: 6px 5px 5px;
}
.furniture-wrapper #caption-button svg {
transform: scale(.85);
}
@media (min-width: 30em) {
.furniture-wrapper #caption-button {
right: 10px;
}
}
@media (min-width: 71.25em) {
.content__main-column–interactive:before {
top: -12px !important;
height: calc(100% + 24px) !important;
}
}
.content__main-column–interactive h2 {
max-width: 620px;
}
:root:has(.ios, .android) {
–darkBackground: #1a1a1a;
–feature: #c70000;
–darkmodeFeature: #ff5943;
–new-pillar-colour: var(–primary-pillar, var(–feature));
}
@media (prefers-color-scheme: dark) {
:root:has(.ios, .android) {
–new-pillar-colour: var(–darkmode-pillar, var(–darkmodeFeature));
}
}
body.ios #feature-article-container .element-atom:first-of-type+p:first-of-type:first-letter,
body.ios #feature-article-container .element-atom:first-of-type+.sign-in-gate+p:first-of-type:first-letter,
body.ios #feature-article-container .element-atom:first-of-type+#sign-in-gate+p:first-of-type:first-letter,
body.ios #standard-article-container .element-atom:first-of-type+p:first-of-type:first-letter,
body.ios #standard-article-container .element-atom:first-of-type+.sign-in-gate+p:first-of-type:first-letter,
body.ios #standard-article-container .element-atom:first-of-type+#sign-in-gate+p:first-of-type:first-letter,
body.ios #comment-article-container .element-atom:first-of-type+p:first-of-type:first-letter,
body.ios #comment-article-container .element-atom:first-of-type+.sign-in-gate+p:first-of-type:first-letter,
body.ios #comment-article-container .element-atom:first-of-type+#sign-in-gate+p:first-of-type:first-letter,
body.android #feature-article-container .element-atom:first-of-type+p:first-of-type:first-letter,
body.android #feature-article-container .element-atom:first-of-type+.sign-in-gate+p:first-of-type:first-letter,
body.android #feature-article-container .element-atom:first-of-type+#sign-in-gate+p:first-of-type:first-letter,
body.android #standard-article-container .element-atom:first-of-type+p:first-of-type:first-letter,
body.android #standard-article-container .element-atom:first-of-type+.sign-in-gate+p:first-of-type:first-letter,
body.android #standard-article-container .element-atom:first-of-type+#sign-in-gate+p:first-of-type:first-letter,
body.android #comment-article-container .element-atom:first-of-type+p:first-of-type:first-letter,
body.android #comment-article-container .element-atom:first-of-type+.sign-in-gate+p:first-of-type:first-letter,
body.android #comment-article-container .element-atom:first-of-type+#sign-in-gate+p:first-of-type:first-letter {
color: var(–secondary-pillar, #000);
}
body.ios #feature-article-container .article__header,
body.ios #standard-article-container .article__header,
body.ios #comment-article-container .article__header,
body.android #feature-article-container .article__header,
body.android #standard-article-container .article__header,
body.android #comment-article-container .article__header {
/ CSS properties would continue here /
}The article header height is set to zero. For both iOS and Android devices, the furniture wrapper within feature, standard, and comment article containers has a top padding of 4 pixels and horizontal padding of 10 pixels.
Within these wrappers, content labels use a bold, capitalized font from the Guardian Headline family or similar serif fonts, colored with a custom variable.
The main headline (h1) is styled with a 32-pixel bold font, 12 pixels of bottom padding, and a dark gray color.
Image figures are positioned relatively, with a top margin of 14 pixels, a left offset of -10 pixels, and a width that adjusts to the viewport minus the scrollbar. Their inner elements, images, and links have a transparent background and a similarly calculated responsive width.
The standfirst section in these wrappers also follows the same padding rules.The CSS code sets styles for article standfirst sections on iOS and Android devices. It adjusts padding, margins, and fonts for paragraphs within the standfirst. Links inside the standfirst are styled with a specific color, underlined with an offset, and change color on hover. Meta information like bylines has its margins removed and author names are formatted consistently.For iOS and Android devices, the author byline text in feature, standard, and comment articles should use the new pillar color. The meta section should have no padding, and any SVG icons within it should use the same color for their stroke.
For showcase elements, the caption button should be displayed as a flex container, centered with 5px padding. It should be 28px by 28px and positioned 14px from the right.
The article body should have 12px of horizontal padding. Any standard image elements (excluding thumbnails and immersive images) should have no margin. Their width should be the full viewport width minus 24px and the scrollbar width, with an automatic height.For images in article bodies that are not thumbnails or immersive, the caption has no padding on Android devices.
On both iOS and Android, immersive images in feature, standard, and comment articles are set to the full viewport width, minus the scrollbar.
For quoted text blocks in articles, a colored marker appears before the quote, using the site’s pillar color.
Links within the article text are styled with the primary pillar color, an underline, and a specific offset. The underline color changes on hover.
In dark mode, the article header area has a dark background. The article labels use the pillar color, and the headline text color is adjusted for better contrast.The text appears to be a fragment of CSS code, not standard English prose. It defines style rules for different article containers on iOS and Android platforms, setting colors for elements like paragraphs, links, author bylines, icons, and captions using custom color variables.
Since the instruction is to rewrite in fluent, natural English while keeping the meaning intact, and this is code, a direct translation isn’t possible. However, I can describe its purpose in plain English:
This CSS code applies specific styling to article pages on both iOS and Android devices. It sets the text color for introductory paragraphs, author names, and links within article headers to match the site’s design system. It also styles icons and image captions, and ensures blockquotes and the main article body content use the appropriate color themes. The rules are targeted to different types of articles (feature, standard, and comment pieces) across both operating systems.This CSS code sets a dark background for various article containers on iOS and Android devices. It also styles the first letter of paragraphs that follow specific elements within those containers.This appears to be a CSS selector targeting the first letter of paragraphs in specific article containers on iOS and Android devices. It applies to various article types (feature, standard, comment) and accounts for different page structures, including sign-in gates and interactive content.For Android devices, the first letter of paragraphs within specific article containers and sections will be styled with a custom color variable. On both iOS and Android, comment article containers have adjusted padding for standfirst elements. Headings (h2) are set to 24px. Caption button padding differs slightly between iOS and Android.
In dark mode, various text and icon colors are adjusted to a lighter palette. Labels, headlines, and standfirst text across article containers use a medium font weight.
The overall page background and related elements use a custom opinion section color, which switches to a dark gray in dark mode. An element with the name “lines” is hidden, and the furniture wrapper is set to a relative position.For screens wider than 81.25em, the furniture wrapper uses a grid layout with specific row sizes for the title, headline, standfirst, meta, and portrait sections.
When the furniture wrapper has a thumbnail, its position is set to relative. On screens wider than 61.25em, it adjusts the grid row sizes, making the standfirst and meta sections auto-sized. This adjustment is refined further on screens wider than 71.25em and again on screens wider than 81.25em.
Headlines and links within the furniture wrapper have a font weight of 200, no maximum width, and a font size of 32px. On screens wider than 71.25em, the font size increases to 50px. On hover, the text underline is 2px thick with a 6px offset.
Byline text, excluding specific components, uses a font size of 32px and a weight of 100, increasing to 50px on wider screens. Certain inner divs have no bottom padding.
The standfirst section is positioned relatively. Its paragraphs, links, and list items use a font weight of 100. On screens wider than 61.25em, it has no top padding, which changes to 2px on screens wider than 71.25em.
The portrait main media headline wrapper is set to full height, relative positioning, and hidden overflow. It includes a bottom gradient effect created with a pseudo-element. On screens narrower than 61.25em, this effect has a small bottom margin.
Thumbnail figures within this wrapper span the full width, have no side margins, and an 18px bottom margin. Their inner divs have an unset height.For elements with a thumbnail picture, the furniture wrapper’s portrait main media headline wrapper figure with the thumbnail class has its inner link set to display as flex. The image within this figure has a width of 120 pixels and is aligned to the right. On larger screens (71.25em and above), this image width increases to 140 pixels. The figure’s caption is hidden.
When no thumbnail is present, the headline wrapper receives additional bottom padding.
In the interactive main content column, the first letter of the first paragraph is styled with a lighter font weight. Level-two headings are colored with a specific shade, set to a 28-pixel font size with a light weight and normal line height, and include a bottom margin. On larger screens, the font size for these headings increases to 32 pixels.
For iOS and Android devices, the body background is set to white. On these platforms, within specific article containers, labels and main headlines have a medium font weight. When the user prefers a light color scheme, the background color adjusts to a light opinion section shade.
Additionally, for iOS and Android, custom CSS properties are defined for opinion section colors, and the background color adapts based on the preferred color scheme. In dark mode, specific opinion section colors are adjusted, and for opinion articles on iOS, the article body and tags background is reset.
On iOS and Android, labels within article containers are hidden, and main headlines are styled with a light font weight and a 28-pixel font size. Finally, a pseudo-element is added after the portrait main media headline wrapper in these containers.For iOS and Android devices, the background color after the portrait main media headline wrapper in the comment article container’s furniture wrapper is set to the opinion background variable.
In feature, standard, and comment article containers, thumbnail figures within the furniture wrapper have a bottom padding of 22px. The images inside these thumbnails are set to a width of 120px with a right margin of 10px, and their captions are hidden.
For image figures within the furniture wrapper in these same containers, the left margin is set to -10px.
The standfirst section in these containers has its top margin removed and a top padding of 8px added, while its before pseudo-element is hidden. Within the standfirst inner section, paragraphs, links, and list items are styled consistently.For Android devices, links, list items, and paragraphs within the standfirst section of feature, standard, and comment articles will have a font weight of 100, a size of 17px, and a line height of 115%.
On both iOS and Android, the meta and keyline elements in the furniture wrapper for feature, standard, and comment articles will be positioned 4 pixels higher.
Rich link elements within the furniture wrapper of feature, standard, and comment articles are hidden on both iOS and Android devices.
The comment header’s cutout container is hidden on both iOS and Android for feature, standard, and comment articles.
For iOS and Android, the first letter of the first paragraph following an atom element in the article body has a font weight of 300. Similarly, in comment bodies or elements with the data-gu-name “body,” the first letter of the first paragraph after an atom element, sign-in gate, or element with the ID “sign-in-gate” also has a font weight of 300 and no top padding.
Headings (h2) on iOS and Android are styled with a color of #8d2700, a font size of 28px, normal style, a weight of 300, normal line height, and margins of 28px on top, 0 on the sides, and 8px on the bottom.
On Android, the cutout container is hidden.
In dark mode, the portrait main media headline wrapper on iOS and Android has a background image of a repeating linear gradient from top to bottom, using the color #606060.There is politics before the internet and politics after the internet. Liberals are floundering, the right is flourishing, and the left is in a dire state. This is despite the fact that the key political problems of the last decade—rising inequality and a cost of living crisis—are problems leftists claim they can solve. The trouble is that reactionaries and right-wingers steal their thunder online, quickly spreading messaging that blames scapegoats for structural problems. One reason for this is that platforms originally built to connect us with friends and followers now funnel us content designed to provoke emotional engagement.
Back when Twitter was still the “town square” and Facebook a humble “social network,” progressives had an advantage. From the Arab Spring to Occupy Wall Street, voices excluded from mainstream media and politics could leverage online social networks and turn them into real-life ones. At their most potent, these became street-level protests that toppled regimes and held capitalism to account. It seemed as though the scattered masses would become a networked collective empowered to rise up against the powerful.
But the model of friending and following put a cap on engagement. It’s hard to remember now, but there was a time when you could reach the end of your Facebook and Instagram feeds—our friends only had so many lunches to post. Platforms needed to find ways to keep us logged in. Instagram introduced “suggested posts” from accounts users didn’t follow. TikTok took this logic further: just sign up and start swiping, no need to friend or follow anyone. Creators with small social networks could go viral just by posting engaging content, and everyone could lose themselves in an infinite stream of short-form videos. Copycats such as Instagram Reels and YouTube Shorts crowded into this new market. Over on X, Elon Musk reinstated far-right accounts and turned the “for you” feed into a home for racism and hate speech.
In short, platforms that had once offered a space for debate and deliberation shifted toward emotion and immersion. Reactionaries and right-wingers have adapted their stories about who is to blame for the daily indignities of late capitalist life accordingly. Emotionally charged stories of elite villains and dangerous minorities resonate in algorithmically tailored spaces designed for doomscrolling through the permacrisis.
Meanwhile, liberals were still focusing on old media platforms such as newspapers and broadcast debates, as well as follower-focused platforms such as Bluesky. The left remains committed to residual media forms, launching new print and online journals. It also does a delicate dance between appearing on traditional media outlets and critiquing them—but whether it likes it or not, it has a symbiotic relationship with the liberal media.
Their critiques are often excellent and politically consequential. Novara Media’s Ash Sarkar is the rare left-wing wit on televised panels, and Jacobin helped lay the groundwork for Zohran Mamdani’s campaign by offering a space to hash out democratic socialist ideas in a country where socialism is still a dirty word. But even Chapo Trap House, a key podcast from the US’s “dirtbag left” (a loose group of anti-capitalist and deliberately irreverent content creators), spends many a podcast roasting the New York Times. This may be cathartic, but it’s hardly a match for what we are seeing coming from the right.
The right has established its own parallel media universe. It eschews mos…While the reactionary right is often associated with xenophobia, racism, and misogyny, its online subculture offers more than just that. It provides a sense of community, along with lifestyle advice on diets, natural medicine, and exercise, all delivered through modern formats like memes and live streams. This ecosystem thrives by weaving compelling narratives, often centered on the idea that shadowy elites—referred to as the Cathedral, the matrix, or cultural Marxists—control the media and manipulate everyday life.
In contrast, the left struggles with unity in the digital space. Instead of building a cohesive alternative media network that amplifies shared messages, left-wing digital media often feels scattered, dominated by individual Substacks and hot-take artists migrating between platforms. This fragmentation is worsened by the attention economy, which fuels the left’s historical tendency toward infighting—a dynamic driven not only by ideological purity but also by the practical pressures of making a living.
Consider Natalie Wynn, known as ContraPoints, whose high-production YouTube essays blend cinematic style, theory, and sharp political analysis. Despite her auteur status, she is frequently elevated only to be torn down by factions within the left, with disagreements often spiraling into public “drama.”
Furthermore, while the center-right is often open to engaging with ideas from the farther right, liberals and the left frequently resist productive debate. For instance, rather than finding common ground in their shared belief in state economic intervention, much energy is spent on tearing down differences—such as between traditional socialism and the emerging “abundance” agenda in Democratic circles. The right would likely seize such an opening to build momentum; the left often gets bogged down in criticism.
Nevertheless, there are signs of vitality on the online left. Irish comedian Frankie McNamara has turned social media interviews into a deadpan commentary on modern archetypes, from “hot new dads” to “wellness warriors.” Meanwhile, channels like The Elephant Graveyard produce documentaries—in the style of Adam Curtis, but with humor—that effectively use disdain rather than moral panic to critique figures like Joe Rogan.
There are even examples of online activism translating into real-world politics. Palestinian-American influencer Kat Abughazaleh, for instance, has carried her advocacy from TikTok into a surprising congressional campaign, focusing on issues from MAGA to Gaza. Win or lose, her run demonstrates that the true power of online politics lies in shaping how people see the world and what they believe is possible. While the online right has focused on this battle for years, many on the left are now beginning to move past internal conflicts and join the fight.
Frequently Asked Questions
Of course Here is a list of FAQs about the topic How the left can reclaim the internet and make a comeback inspired by discussions like those from Robert Topinka and similar thinkers
Beginner Definition Questions
1 What does reclaiming the internet even mean
It means building online spaces tools and communities that are not dominated by corporate algorithms farright propaganda or surveillance capitalism Its about creating a digital public square that fosters solidarity factual discourse and progressive organizing
2 Who is Robert Topinka and why is he talking about this
Robert Topinka is a senior lecturer in media and politics He analyzes how digital platforms have been effectively used by rightwing populists and argues that the left needs a new strategic approach to online communication and communitybuilding to counter this
3 Isnt the left already all over the internet
While individuals and groups are present the argument is that the organized left has often been outmaneuvered The right has built cohesive alternative media ecosystems and mastered platform algorithms for spreading messages whereas the lefts presence is often more fragmented and reactive
Core Concepts Strategies
4 Whats the main problem the left faces online
A key problem is platform capture Major social media sites algorithms often reward outrage conflict and simplistic messages which benefits rightwing content The left can get stuck in either preaching to the choir or in endless unproductive debates
5 What are some practical strategies for reclaiming digital space
Build Alternative Infrastructure Support and use cooperative platforms opensource software and communityrun servers
Create Compelling Narratives Move beyond factchecking to tell positive emotionally resonant stories about justice and collective good
Organize Digitally Use online tools for realworld mobilizationstrikes mutual aid local meetingsnot just for debate
Practice Digital Mutual Aid Use tech skills to help vulnerable communities with privacy security and communication
6 Can you give an example of the left successfully using the internet
Movements like the 2020 George Floyd protests used encrypted apps for safe organizing social media to document police brutality globally and crowdfunding for bail funds This showed the power of blending online coordination with offline action
Challenges Criticisms