@font-face {
font-family: ‘Guardian Headline Full’;
src: url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Light.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Light.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Light.ttf’) format(‘truetype’);
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: ‘Guardian Headline Full’;
src: url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-LightItalic.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-LightItalic.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-LightItalic.ttf’) format(‘truetype’);
font-weight: 300;
font-style: italic;
}
@font-face {
font-family: ‘Guardian Headline Full’;
src: url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Regular.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Regular.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Regular.ttf’) format(‘truetype’);
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: ‘Guardian Headline Full’;
src: url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-RegularItalic.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-RegularItalic.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-RegularItalic.ttf’) format(‘truetype’);
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: ‘Guardian Headline Full’;
src: url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Medium.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Medium.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Medium.ttf’) format(‘truetype’);
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: ‘Guardian Headline Full’;
src: url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-MediumItalic.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-MediumItalic.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-MediumItalic.ttf’) format(‘truetype’);
font-weight: 500;
font-style: italic;
}
@font-face {
font-family: ‘Guardian Headline Full’;
src: url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Semibold.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Semibold.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Semibold.ttf’) format(‘truetype’);
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: ‘Guardian Headline Full’;
src: url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-SemiboldItalic.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-SemiboldItalic.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-SemiboldItalic.ttf’) format(‘truetype’);
font-weight: 600;
font-style: italic;
}Here’s the rewritten text in fluent, natural English:
“`css
@font-face {
font-family: ‘Guardian Headline Full’;
src: url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Bold.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Bold.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-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/full-not-hinted/GHGuardianHeadline-BoldItalic.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-BoldItalic.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-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/full-not-hinted/GHGuardianHeadline-Black.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Black.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-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/full-not-hinted/GHGuardianHeadline-BlackItalic.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-BlackItalic.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-BlackItalic.ttf’) format(‘truetype’);
font-weight: 900;
font-style: italic;
}
@font-face {
font-family: ‘Guardian Titlepiece’;
src: url(‘https://interactive.guim.co.uk/fonts/garnett/GTGuardianTitlepiece-Bold.woff2’) format(‘woff2’),
url(‘https://interactive.guim.co.uk/fonts/garnett/GTGuardianTitlepiece-Bold.woff’) format(‘woff’),
url(‘https://interactive.guim.co.uk/fonts/garnett/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: -10px;
}
}
“`Here is the rewritten text in fluent, natural English:
The left margin is set to -11px. Inside the main interactive column, elements with the class “element-atom” have no top or bottom margin, but do have 12px of padding on both top and bottom. If a paragraph is followed by an element-atom, that element has no padding and 12px of margin on top and bottom. Inline elements are limited to a maximum width of 620px.
On screens wider than 61.25em, figures with the role “inline” are also capped at 620px wide. For media sections that contain a loop figure, the caption is placed above other elements using a z-index of 6. The loop button, which controls video looping, is 32px wide, aligned to the bottom right, and has a bottom margin of 40px with a right margin of 3px. The caption button has a z-index of 100.
On screens wider than 46.25em, if a media section contains a cinemagraph, its container’s maximum height is removed. In the body section, self-hosted video islands are full width, up to 620px, and displayed as block elements with 12px of margin on top and bottom. The video and its loop figure are also full width, auto height, centered, and capped at 620px.
If a self-hosted video island contains an immersive loop figure, the island’s maximum width is removed and its margins are set to 12px vertically. The figure and video inside it also have no maximum width and no margin. On screens wider than 71.25em, such an immersive video island is 1140px wide with a left margin of -180px, and its caption has a left margin of 20px. On screens wider than 81.25em, the island is 1300px wide with a left margin of -260px.
Custom properties are defined for colors: dateline is a medium gray, headerBorder is light gray, captionText is a lighter gray, captionBackground is a semi-transparent dark color, and feature is a red. The new pillar color defaults to the primary pillar or the feature color. Subheading, pullquote, and block quote text colors are set to the secondary pillar, and block quotes use the secondary pillar for their fill color.
In dark mode (when the user’s system preference is dark and the page doesn’t force light mode), subheading, pullquote, and block quote colors switch to the dark mode pillar. Block quote fill also changes to the dark mode pillar.
Elements with the class “element-atom” inside the interactive main column or anywhere else have no padding. In various content areas, if an element-atom, sign-in gate, or horizontal rule is immediately followed by a paragraph, that paragraph gets 14px of top padding.Here is the rewritten text in fluent, natural English:
The first letter of the first paragraph after certain elementsâsuch as the first atom, a sign-in gate, or a horizontal ruleâuses a large, bold, uppercase style. It is set in the Guardian Headline font family, with a font size of 111 pixels and a line height of 92 pixels. This letter floats to the left, has a right margin of 8 pixels, and is vertically aligned to the top of the text. Its color matches the drop-cap or pillar color.
Paragraphs that come right after a horizontal rule have no top padding.
Pull quotes within the main content areas are limited to a maximum width of 620 pixels.
For images with the “showcase” style, their captions are positioned statically and take up the full width, up to 620 pixels. On screens wider than 71.25 em, these captions are positioned absolutely and have a maximum width of 140 pixels. On screens wider than 81.25 em, the maximum width increases to 220 pixels.
Elements with the “immersive” style span the full width of the viewport, minus the scrollbar width. On smaller screens (up to 71.24 em), their maximum width is 978 pixels, and their captions have horizontal padding of 10 pixels (or 20 pixels on screens at least 30 em wide). On medium screens (between 46.25 em and 61.24 em), the maximum width is 738 pixels. On very small screens (up to 46.24 em), these elements have a left margin of -10 pixels, no right margin, and are aligned to the left edge.For screens at least 30em wide:
– For `.element.element–immersive.element-immersive`, set the left margin to -20px.
– For its `figcaption`, add 20px of padding on the left and right.
For screens at least 71.25em wide:
– Inside `[data-gu-name=body]`, for `figure.element.element–showcase.element-showcase` and `.content__main-column–interactive figure.element.element–showcase.element-showcase`, set the left margin to -160px.
For screens at least 81.25em wide:
– Inside `[data-gu-name=body]`, for the same elements, set the left margin to -240px.
The `.furniture-wrapper` class is positioned relatively.
For screens at least 61.25em wide:
– Use a CSS grid with 20px column gaps and no row gaps. The grid has 10 columns: the first 5 are for title, headline, meta, and standfirst; the last 5 are for portrait.
– The grid rows are: title and portrait start together at 0.25fr, headline at 1fr, standfirst at 0.75fr, and meta at auto. Portrait spans the full height.
– Inside `#headline`, `[data-gu-name=headline]`, or `.headline`, the first child `div` gets a 1px top border using `var(–headerBorder)`.
– For `#meta` or `[data-gu-name=meta]`, set relative positioning, 2px top padding, and no right margin.
– For standfirst elements (`.standfirst .content__standfirst`, `#standfirst .content__standfirst`, `[data-gu-name=standfirst] .content__standfirst`), set bottom margin to 4px.
– For list items in standfirst, set font size to 20px.
– For links in standfirst (including list item links), remove bottom border and background image, add underline with 6px offset, and use `var(–headerBorder, #dcdcdc)` for the underline color. On hover, change the underline color to `var(–new-pillar-colour)`.
– For the first paragraph in standfirst, add a 1px top border using `var(–headerBorder)` and no bottom padding.
For screens at least 71.25em (and also at least 61.25em):
– Remove the top border from the first paragraph in standfirst.
For screens at least 61.25em:
– For figures, set margins to 0 on top, right, and bottom, and -10px on the left.
– For figures with `[data-spacefinder-role=inline]` and class `.element`, set max width to 630px.
For screens at least 71.25em:
– The grid now has 14 columns: the first 2 for title, headline, and meta start; then meta ends and standfirst starts with 5 columns; then title, headline, and standfirst end; and the last 7 columns for portrait.
– The grid rows are: title and portrait start at 80px, headline at auto, and standfirst and meta start at auto. Portrait spans the full height.
– For `#meta` or `[data-gu-name=meta]`, add a pseudo-element `:before` with a 540px wide, 1px high line at the top, using `var(–headerBorder)`.
– For standfirst paragraphs, remove the top border.
– For standfirst, add a pseudo-element `:before` with a 1px wide, full-height line on the left, using `var(–headerBorder)`, positioned at the top and 0.5px from the left.
For screens at least 81.25em:
– The grid template columns are defined (but the specific values are not provided in the text).The layout uses a grid with columns defined as: repeat(3, 1fr) for meta, repeat(5, 1fr) for the standfirst, and repeat(8, 1fr) for the portrait. The rows are set as: title and portrait start at 0.25fr, headline at 1fr, and standfirst with meta at 0.75fr.
In the furniture wrapper, the meta section and its data attribute have a width of 620px. The standfirst and its data attribute are positioned slightly to the left by -0.5px.
For the article header, the labels inside the title and its data attribute have a top padding of 2px.
The headline h1 (and its data attribute) has a font weight of 600, a max width of 620px, and a font size of 32px. On screens wider than 71.25em, the max width becomes 540px and the font size increases to 50px.
On screens wider than 46.25em, the keyline-4 and lines data attribute have no right margin. On screens wider than 61.25em, they are hidden. The SVG inside them uses a stroke color set by the header border variable.
On screens wider than 46.25em, the meta section and its data attribute have no right margin. The social and comment elements inside meta use the header border color for their borders. The meta containerâs inner island elements are hidden.
The standfirst (and its data attributes) has a left margin of -10px, left padding of 10px, and is positioned relatively. On screens wider than 46.25em, it gets a top padding of 2px. The paragraph inside has a font weight of 400, font size of 20px, and bottom padding of 14px.
The main media and its data attribute are positioned relatively, with no top margin, a bottom margin of 2px, and occupy the portrait grid area. The inner divs have full width and no margin on the sides. On screens wider than 61.25em, the bottom margin is removed. On screens narrower than 46.24em, the width is set to the full viewport width minus the scrollbar, with a left margin of -10px. On screens between 30em and 46.24em, the left margin becomes -20px.
The figcaption is positioned at the bottom, with padding of 4px on top and sides and 12px on the bottom. It uses a caption background color and text color, has no max width, full width, no bottom margin, and a minimum height of 46px. The span inside uses the header border color, and the SVG fill matches. The first span is hidden, while the second is displayed with a max width of 90%. On screens wider than 30em, the figcaption padding becomes 4px on top and 20px on the sides with 12px on the bottom. When hidden, its opacity is 0.
The caption button is displayed as a block, positioned absolutely at the bottom with 10px from the bottom and 8px from the right, with a z-index of 30. It uses the caption background color, has no border, is rounded, and has padding of 6px on top, 5px on the sides, and 5px on the bottom. The SVG inside is scaled to 85%. On screens wider than 30em, the right offset becomes 10px.
On screens wider than 71.25em, the main content area adjusts accordingly.The `.content__main-column–interactive` element has a top offset of -12px and a height of 100% plus 24px. The `h2` inside it has a max width of 620px. The `:root` sets custom properties: `–new-pillar-colour` uses the dark mode pillar or feature color, `–headerBorderColor` is #606060, and `–darkModeFeature` is #ff5943. Navigation and aside sections that follow certain elements are hidden. The `.furniture-wrapper` has a dark background, with margins and padding adjusted for different screen sizes. On larger screens (81.25em and above), it adds decorative pseudo-elements with a border and background color. Text colors for article headers, titles, and spans inside `.furniture-wrapper` use the new pillar color. On screens 61.25em and wider, a top border appears on certain headline elements. The `h1` inside headlines is bold and colored #dcdcdc. Figures in headlines have no top margin and a small bottom margin. On screens 71.25em and wider, a background color is applied to the meta section. Details, summaries, and their spans in the meta section are colored #dcdcdc. Social media links and buttons in the meta section have a border color matching `–headerBorderColor` and use the new pillar color for text and SVG fills. On hover, they invert colors. Other meta divs are #dcdcdc, and links use the new pillar color with an underline on hover. Standfirst links are underlined with a specific offset and color, without a bottom border or background image.Here is the rewritten text in fluent, natural English:
When you hover over a link inside the standfirst sectionâwhether it’s in a paragraph, a list item, or the standfirst itselfâthe bottom border disappears and the underline color changes to match the pillar color (or the dark mode feature color if that’s not set).
The text in standfirst paragraphs is light gray (#dcdcdc).
On screens wider than 61.25em (about 980px), the first paragraph in the standfirst gets a top border in the header border color. But on screens wider than 71.25em (about 1140px), that top border is removed.
List items inside the standfirst also use the same light gray color (#dcdcdc).
On screens wider than 71.25em, a line appears above the standfirst, using the header border color.
For screens wider than 46.25em (about 740px), the furniture wrapper gets left and right background panels. These panels extend from the main content area to the edge of the screen, using the dark background color and bordered by the header border color. The width of these panels changes depending on the screen size:
– At 46.25em and above, the panels fill the space around a 738px-wide content area.
– At 61.25em and above, they fill the space around a 978px-wide content area.
– At 71.25em and above, they fill the space around a 1138px-wide content area.
– At 81.25em and above, they fill the space around a 1298px-wide content area.
The decorative lines (like keyline-4 or lines) inside the furniture wrapper use the header border color for their stroke.
Social media icons, their link spans, and comment sections inside the meta area also use the header border color.
In the article body, h2 headings have a font weight of 200 (light). But if an h2 contains strong text, the whole heading becomes bold (font weight 700).
For elements with the print layout set to hide, unordered lists have no background image.
Finally, a custom font called “Guardian Headline Full” is loaded in light weight (300) from the Guardian’s asset server. It’s available in woff2, woff, and truetype formats.Here is the rewritten text in fluent, natural English:
@font-face {
font-family: ‘Guardian Headline Full’;
src: url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-LightItalic.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-LightItalic.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-LightItalic.ttf’) format(‘truetype’);
font-weight: 300;
font-style: italic;
}
@font-face {
font-family: ‘Guardian Headline Full’;
src: url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Regular.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Regular.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Regular.ttf’) format(‘truetype’);
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: ‘Guardian Headline Full’;
src: url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-RegularItalic.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-RegularItalic.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-RegularItalic.ttf’) format(‘truetype’);
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: ‘Guardian Headline Full’;
src: url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Medium.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Medium.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Medium.ttf’) format(‘truetype’);
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: ‘Guardian Headline Full’;
src: url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-MediumItalic.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-MediumItalic.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-MediumItalic.ttf’) format(‘truetype’);
font-weight: 500;
font-style: italic;
}
@font-face {
font-family: ‘Guardian Headline Full’;
src: url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Semibold.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Semibold.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Semibold.ttf’) format(‘truetype’);
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: ‘Guardian Headline Full’;
src: url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-SemiboldItalic.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-SemiboldItalic.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-SemiboldItalic.ttf’) format(‘truetype’);
font-weight: 600;
font-style: italic;
}
@font-face {
font-family: ‘Guardian Headline Full’;
src: url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Bold.woff2’) format(‘woff2’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Bold.woff’) format(‘woff’),
url(‘https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/full-not-hinted/GHGuardianHeadline-Bold.ttf’) format(‘truetype’);
font-weight: 700;
font-style: normal;
}Here is the rewritten text in fluent, natural English:
The font files are loaded from the Guardian’s servers. For example, the bold italic version of the Guardian Headline font is available in WOFF2, WOFF, and TTF formats. The same applies to the black and black italic versions. The Guardian Titlepiece font is also loaded in bold style from a different source.
On iOS and Android devices, certain color variables are set, including a dark background, a feature color, and a dark mode feature color. These colors can change depending on the user’s system preference for dark mode.
In article containers on iOS and Android, the first letter of the first paragraph after certain elements (like an atom or a sign-in gate) is styled with a specific color. This color is based on a secondary pillar variable, which defaults to black.The article header sections for containers like `.article__header`, `#feature-article-container`, `#standard-article-container`, and `#comment-article-container` on both Android and iOS have a height of zero.
On iOS and Android, the furniture wrapper inside these containers has padding of 4px on top and 10px on the sides. The labels inside the furniture wrapper use bold text, the font family “Guardian Headline,” “Guardian Egyptian Web,” “Guardian Headline Full,” Georgia, or serif, and are colored using the new pillar color variable, with the text capitalized.
The headline (h1) inside the furniture wrapper is 32px, bold, has 12px of padding at the bottom, and is colored #121212.
Images inside the furniture wrapper (figure.element-image) are positioned relatively, with a 14px top margin and a left margin of -10px. Their width is set to the full viewport width minus the scrollbar width, and the height is automatic. The inner elements of the image (figure__inner, img, and a) have a transparent background, the same width as the viewport minus the scrollbar, and their height is set to auto.
The standfirst section inside the furniture wrapper is also included.For the `.standfirst` inside `.furniture-wrapper` in `#standard-article-container`, `#comment-article-container`, and on Android devices, add 4px of padding on top and 24px on the bottom, with a right margin of -10px.
On iOS and Android, inside `#feature-article-container`, `#standard-article-container`, and `#comment-article-container`, the paragraph text within `.standfirst__inner` should use the font family: Guardian Headline, Guardian Egyptian Web, Guardian Headline Full, Georgia, serif.
Also on iOS and Android, for links inside `.standfirst__inner` (including those in list items) within the same containers, set the text color to the new pillar color (using `!important`), remove any background image, add an underline with a 6px offset, use `#dcdcdc` as the underline color (or the `–headerBorder` variable), and remove the bottom border. When hovering over these links, change the underline color to the new pillar color.
On iOS and Android, for the `.meta` section inside `.furniture-wrapper` in `#feature-article-container`, `#standard-article-container`, and `#comment-article-container`, set the margin to 0. For the byline, byline author, author links, and meta byline spans within `.meta`, apply the same styling.The following CSS rules apply to the `.wrapper .meta .byline` element and various selectors for iOS and Android article containers. The text color is set to `var(–new-pillar-colour)`.
For iOS and Android, the `.meta__misc` class inside the furniture wrapper has no padding. The SVG icons inside `.meta__misc` use `stroke: var(–new-pillar-colour)`.
On both iOS and Android, the caption button inside `.element–showcase` is displayed as a flex container with 5px padding, centered content, and a width and height of 28px, positioned 14px from the right.
The `.article__body` on iOS and Android has 12px padding on the left and right.
For images inside `.article__body` that are not thumbnails or immersive, the margin is set to 0, and the width is calculated as `100vw – 24px – var(–scrollbar-width, 0px)`, with automatic height.Here’s the rewritten version in fluent, natural English:
For iOS and Android devices, in feature, standard, and comment article containers, image captions that aren’t thumbnails or immersive elements should have no padding.
On iOS and Android, immersive images in these article containers should take up the full width of the viewport, minus the scrollbar width.
For quoted blockquotes in the prose sections of these article containers on both iOS and Android, the quotation mark before the text should use the new pillar color.
Links in the prose sections of these article containers on iOS and Android should be styled with the primary pillar color, no background image, an underline, a 6px offset for the underline, and the header border color for the underline. When you hover over these links, the underline color should change to the new pillar color.
In dark mode (when the user’s system prefers a dark color scheme), the furniture wrapper in these article containers on iOS and Android should have a dark background (#1a1a1a). The content labels inside the furniture wrapper should use the new pillar color. And the main headline (h1) in the furniture wrapper should also use the new pillar color..furniture-wrapper h1.headline {
background-color: unset;
color: var(–headerBorder) !important;
}
body.ios #feature-article-container .furniture-wrapper .standfirst p,
body.ios #standard-article-container .furniture-wrapper .standfirst p,
body.ios #comment-article-container .furniture-wrapper .standfirst p,
body.android #feature-article-container .furniture-wrapper .standfirst p,
body.android #standard-article-container .furniture-wrapper .standfirst p,
body.android #comment-article-container .furniture-wrapper .standfirst p {
color: var(–headerBorder);
}
body.ios #feature-article-container .furniture-wrapper .standfirst a,
body.ios #standard-article-container .furniture-wrapper .standfirst a,
body.ios #comment-article-container .furniture-wrapper .standfirst a,
body.android #feature-article-container .furniture-wrapper .standfirst a,
body.android #standard-article-container .furniture-wrapper .standfirst a,
body.android #comment-article-container .furniture-wrapper .standfirst a,
body.ios #feature-article-container .furniture-wrapper .meta .byline__author,
body.ios #feature-article-container .furniture-wrapper .meta span.byline__author a,
body.ios #standard-article-container .furniture-wrapper .meta .byline__author,
body.ios #standard-article-container .furniture-wrapper .meta span.byline__author a,
body.ios #comment-article-container .furniture-wrapper .meta .byline__author,
body.ios #comment-article-container .furniture-wrapper .meta span.byline__author a,
body.android #feature-article-container .furniture-wrapper .meta .byline__author,
body.android #feature-article-container .furniture-wrapper .meta span.byline__author a,
body.android #standard-article-container .furniture-wrapper .meta .byline__author,
body.android #standard-article-container .furniture-wrapper .meta span.byline__author a,
body.android #comment-article-container .furniture-wrapper .meta .byline__author,
body.android #comment-article-container .furniture-wrapper .meta span.byline__author a {
color: var(–new-pillar-colour);
}
body.ios #feature-article-container .furniture-wrapper .meta__misc svg,
body.ios #standard-article-container .furniture-wrapper .meta__misc svg,
body.ios #comment-article-container .furniture-wrapper .meta__misc svg,
body.android #feature-article-container .furniture-wrapper .meta__misc svg,
body.android #standard-article-container .furniture-wrapper .meta__misc svg,
body.android #comment-article-container .furniture-wrapper .meta__misc svg {
stroke: var(–new-pillar-colour);
}
body.ios #feature-article-container .furniture-wrapper figure.element-image.element–showcase figcaption,
body.ios #standard-article-container .furniture-wrapper figure.element-image.element–showcase figcaption,
body.ios #comment-article-container .furniture-wrapper figure.element-image.element–showcase figcaption,
body.android #feature-article-container .furniture-wrapper figure.element-image.element–showcase figcaption,
body.android #standard-article-container .furniture-wrapper figure.element-image.element–showcase figcaption,
body.android #comment-article-container .furniture-wrapper figure.element-image.element–showcase figcaption {
color: var(–dateline);
}
body.ios #feature-article-container .article__body .prose blockquote.quoted,
body.ios #standard-article-container .article__body .prose blockquote.quoted,
body.ios #comment-article-container .article__body .prose blockquote.quoted,
body.android #feature-article-container .article__body .prose blockquote.quoted,
body.android #standard-article-container .article__body .prose blockquote.quoted,
body.android #comment-article-container .article__body .prose blockquote.quoted {
color: var(–new-pillar-colour);
}
body.ios #feature-article-container #article-body > div,
body.ios #feature-article-container .content–interactive > div,
body.ios #feature-article-container #feature-body,
body.ios #feature-article-container [data-gu-name=”body”],
body.ios #feature-article-container #comment-body,
body.ios #standard-article-container #article-body > div,
body.ios #standard-article-container .content–interactive > div,
body.ios #standard-article-container #feature-body,
body.ios #standard-articlHere’s the rewritten version in fluent, natural English:
For iOS and Android devices, the background color of article and comment sections is set to a dark theme using a custom CSS variable. This applies to various containers like the main body, comment body, feature body, and interactive content areas.
Additionally, on iOS, the first letter of any paragraph that follows an element atom (or a sign-in gate) in these same sections is styled in a specific way. This styling applies across feature articles, standard articles, and comment articles.This appears to be a long list of CSS selectors, not a text to be rewritten. Could you please provide the actual text you’d like me to rewrite in fluent, natural English?Here’s the rewritten version in fluent, natural English:
On Android devices, the first letter of certain paragraphs inside comment sections should use the new pillar color (white by default). This applies to paragraphs that come right after an element atom, whether or not there’s a sign-in gate in between.
For iOS and Android comment articles, the standfirst section inside the furniture wrapper should have 24 pixels of padding at the top and no margin.
In prose sections, h2 headings should be 24 pixels in size.
On iOS, caption buttons in feature, standard, and comment articles should have 6 pixels of top padding and 5 pixels on the sides. On Android, those buttons should have 4 pixels of padding on all sides.
When the device is in dark mode (and no light color scheme is set), the following styles apply: follow text and standfirst text should be a light gray (#dcdcdc). The follow icon fill, standfirst link text, and standfirst link borders should all use the dark mode pillar color. The byline should also use the dark mode pillar color.
The dark background color is set to #1a1a1a.
On both iOS and Android, the article header in feature, standard, and comment articles should be completely transparent (opacity set to 0).
Also on both platforms, the furniture wrapper in these article types should have no margin. The content labels inside the furniture wrapper should use the new pillar color (or the dark mode feature color if that’s set). And the h1 headline inside the furniture wrapper should also follow the same color rules.Here’s the rewritten CSS in fluent, natural English:
On Android devices, the headline inside the furniture wrapper for standard and comment article containers should be colored #dcdcdc.
On both iOS and Android, links inside the article header or title sections of feature, standard, and comment article containers should use the color defined by the CSS variable `–new-pillar-colour`, with a fallback to `–darkModeFeature`.
For the meta section (identified by `#meta` or `[data-gu-name=”meta”]`) in feature, standard, and comment article containers on both iOS and Android, the background should be a repeating linear gradient using the `–headerBorderColor` variable. The gradient should show the border color for 1 pixel, then be transparent for 2 pixels, creating a dotted line effect.
The byline text inside the meta section on both platforms should be colored #dcdcdc.
Links inside the meta section on both iOS and Android should also use the color defined by `–new-pillar-colour`, with a fallback to `–darkModeFeature`.For iOS and Android, in the feature, standard, and comment article containers, the SVG icons inside the meta section’s misc area use a stroke color that comes from the new pillar color variable (or the dark mode feature color as a fallback).
Also on iOS and Android, the alert labels in the same meta sections are forced to be a light gray color (#dcdcdc).
And for those platforms, any span with a data-icon attribute inside the meta section uses the same pillar color variable for its text color, including the content that appears before the span (via the `:before` pseudo-element).Here’s the rewritten version in fluent, natural English:
For elements with `[data-icon]` inside `#meta` or `[data-gu-name=”meta”]`, the icon color uses the pillar color variable (falling back to the dark mode feature color). This applies on Android devices.
When the screen is at least 71.25em wide, on both iOS and Android, the `#meta` and `.meta.keyline-4` sections inside article containers (feature, standard, and comment) are displayed as block elements with a top border. The border color uses the pillar color variable, with a fallback to the header border color. In these sections, `.meta__misc` has no default margin but gets a left margin of 20px.
For the article body on both iOS and Android, paragraphs and unordered lists are limited to a maximum width of 620px.
Inside the article body’s prose, quoted blockquotes have a `:before` element colored with the secondary pillar variable.
Links within the prose are styled with the primary pillar color, have no background image, are underlined with a 6px offset, and use a light gray (`#dcdcdc`) underline color. On hover, the link styling remains consistent across all article types.The president’s dressmaker works from home, on a narrow street in a working-class neighborhood at the southern edge of Mexico City. Thereâs no signâjust the house number written in chalk on a rusted metal door. In the bright, pink-walled room at the back of her modest home, Olivia Trujillo sits at her sewing machine, putting together the presidentâs signature suits and dresses. Trujillo sews everything here, with only her family, three dogs, and a green parrot for company. Once finished, an assistant picks up the items by motorcycle and takes them straight to the National Palace, where the president lives. Claudia Sheinbaumâs clothingâmade from simple fabrics produced in Mexico and decorated with Indigenous patternsâis one of the many ways her administration communicates its slogan: âFor the good of all, first the poor.â
The dressmaker has just one issue with the president. People who wear custom-made clothes usually sit for the tailor twice: first to get measured, then again for final adjustments. âNot once has she come for a fitting, never!â says Trujillo, a precise and well-dressed woman in her 60s. She knows the president is busy. âStill,â she adds, âany normal woman gets a fitting for important clothes, like her wedding dress.â
Trujillo designed and sewed both the presidentâs wedding dress for her recent remarriage to an old college sweetheart (they reconnected on Facebookâno fitting) and the bell-sleeved dress she wore for her 2024 inauguration.The president of Mexico won by a landslide, but the victory didnât quite feel right. For the inauguration, she wore a pearl-colored dress with tiny embroidered flowers on the skirt, while the top was kept simple to let the presidential sash stand out. Trujillo made two identical versions, âjust in case someone threw tomatoes or something. There are bad people out there!â
Sheinbaum first heard about Trujillo through word of mouth when she was still mayor of Mexico City over a decade ago. Back then, she at least agreed to have her measurements taken in person. On their first meeting, Trujillo was charmed by the politicianâs friendly manner, her slim figure, and âher good postureââa leftover from her childhood ballet training. Trujillo tells me that âof courseâ she voted for Sheinbaum in 2024. Most people in her social class appreciated that Sheinbaumâs party, Morena, focused on welfare spending and offered more generous pensions. Earlier this year, Sheinbaum announced universal healthcare for all 133 million citizens, providing free care regardless of job or insurance status. Because Morena is so widely supported among Mexicoâs poorer and Indigenous citizens, opponents sometimes call it âMorenaco,â a term loaded with class and racial contempt. âNacoâ is a derogatory slang for someone who is low-class or tacky.
While Mexicoâs elite have traditionally favored expensive foreign designers, Sheinbaumâwho comes from a middle-class backgroundâprefers to include Mexican handicrafts more commonly worn by the working class. When Sheinbaum was named on the New York Times â67 Most Stylish People of 2025â list, alongside Bad Bunny and Jennifer Lawrence, she thanked Indigenous artisans, calling them âthe pride of the nation.â In her simple, elegant designs, with her signature slicked-back ponytail, she looks delicate, even out of place, next to the generals who play a key role in her government.
Having noticed the presidentâs small size, Trujillo says she now does fittings on her own granddaughter, MarĂa Cristina, who is 11. Trujillo showed me a photo of the preteenâserious expression, arms stretched outâwearing one of the presidentâs jackets. âEverything fits. Only the sleeves are a little long on her.â As she saw me out of her house, Trujillo pointed out the blue sweater with lace worn by her oldest dog. âAlso an Olivia Trujillo original design!â she said, laughing loudly.
President Claudia Sheinbaum is one of the most popular democratically elected leaders in the world. Her approval rating hovers around 70% or higher, and she stands out against the wave of conservative and far-right leaders elected across the Americas in recent years. For many leftists around the world, she is an inspiration. Zohran Mamdani has shown his admiration for Sheinbaum many times, saying she âhas shown what can be won when youâre willing to fight.â She has been praised for managing the countryâs most difficult and important relationshipâthe one with its northern neighbor. Skillfully running down the clock during tariff negotiations with Donald Trump last year was a clear example of her signature attitude, which she calls cabeza frĂaâkeeping a cool head under pressure. It also helps that she is a climate scientist with a PhD in energy engineering.
Sheinbaum is still an academic at heart. Someone who works with her told me to look up the YouTube video of a presentation she gave in June 2025, trying to convince the US that fentanyl trafficking from Mexico was decreasing. âThatâs what itâs like to be in meetings with her,â he said. The presentation was full of charts, detailed sources, and small specifics. Everyone agrees that Sheinbaum is a detail-obsessed micromanager. She goes to bed early and is up at 4 a.m., texting everyone from her senior advisers to low-level staff.People working in obscure government offices.
Sheinbaum was both a predictable presidentâsince she was the chosen successor of the previous president, AndrĂ©s Manuel LĂłpez Obradorâand a surprising one. As many have pointed out, she is a female leader in a very macho country. Marta Lamas, the countryâs most prominent feminist of her generation, explained this to me as men setting aside their machismo to âvote with their wallets.â (Of course, her election hasnât suddenly changed gender relations across the country. Last year, a video of the president being groped on the street by a man who seemed drunk caused international outrage.)
View image in fullscreen
Lamas has known Sheinbaum for years and calls herself a âfan,â but she stressed that the president âcame from the left, not from the feminist movement.â Instead of focusing specifically on policies for women, Sheinbaum tends to think in terms of broad social programsâlike universal healthcare, in-home care for the elderly, and early childhood education centers. Still, she is aware of the symbolic victory her election represents. In 2023, when an interviewer asked Sheinbaum why she wanted to be president, her first answer was, âBeing the first woman president would be historic in our country.â Her second answer: âTo continue the policies of AndrĂ©s Manuel LĂłpez Obrador.â
On a personal level, Sheinbaum could hardly be more different from her predecessor. Where Amlo, as heâs known, was flashy, she is reserved. Where he was impulsive, she is cautious. Where he was a politician through and through, she is a former professor. Amlo came from the state of Tabasco, highlighting the central role of poor and Indigenous peopleâwhat some call âdeep Mexicoââin opposition to the westernized elite. Sheinbaum comes from a family that, while far from wealthy, was part of the capitalâs cultural elite.
In the 2024 election, Sheinbaum beat her opponent by 32 percentage points. âA lot of columnists say it, that I donât have a personality,â she told the press after the election, laughing wryly. âThat President AndrĂ©s Manuel LĂłpez Obrador tells me what to do, that when I become president, heâs going to call me on the phone every day.â She went on to joke about him writing her undergraduate physics thesis, or telling her what to do during her doctorate, or when she was mayor of Mexico City. Indeed, when she was first elected, there was plenty of openly sexist commentary that Amlo would be pulling the strings. Some opposition members called Sheinbaum âpresirvienta,â a mix of the words for âpresidentâ and âmaid.â
According to those inside Morena, Amlo hasnât been picking up the phone to bother his protĂ©gĂ©, though a common debate among Mexicoâs pundits is whether the continued dominance of his loyalists means Sheinbaum has little power. When we spoke earlier this year, writer Juan Villoro urged me to check out a video from Sheinbaumâs inauguration, where a group of Morena heavyweights rush away from the new president to pose for a photo with Amloâs son, âAndyâ LĂłpez BeltrĂĄn, the partyâs operations manager. But in late May, LĂłpez BeltrĂĄn resigned, leaving Sheinbaum in a stronger position. One Mexican historian described this change to me as part of âthe process of cutting the umbilical cord.â
Within the ruling party, there is clearly a split between technocrats (Sheinbaumâs people) and the true believers, who call themselves âlos purosâ (Amloâs people). But itâs also true that Sheinbaum has internalized Amloâs politics so deeply that his input isnât needed. Usually, an authorized biography has just one person on the cover, but Sheinbaumâs has two: she is pictured waving, with Amlo beside her, holding her other hand up.In the air. “Each of us has their own personal style, but we’ve been fighting for the same cause for the last 23 years,” Sheinbaum reflected. “As I often say, ‘What do you want me to do, say “The rich come first”?'”
One of the clearest differences between the president and her predecessor is the path each took to reach the same goal. AMLO rose to prominence through party politics, first with the Institutional Revolutionary Party, which ran the country as a one-party system from the Mexican Revolution until the first truly open elections in 2000. In other words, he came up through the state. Sheinbaum, on the other hand, came up as an activist against the state, and even as president, she still highlights this part of her story. For some on the left, this has made some of her positionsâon issues like the militarization of Mexican society and the crisis of forced disappearancesâall the more surprising, even shocking.
The granddaughter of Bulgarian and Lithuanian Jews who fled Europe for Latin America, Sheinbaum was raised without religious practice but with a strong sense of political duty. Her father, Carlos, hid his copies of Karl Marx in secret spots around the house in case intelligence agents searched it. “In my home, politics was discussed at breakfast, lunch, and dinner,” she told her authorized biographer, Arturo Cano. Mexican politics at the time was a dull procession of state bureaucrats, nicknamed “dinosaurs,” from the one-party government.
Sheinbaum often describes herself as a “child of ’68″âa reference to the student movements that defined that year not just in the US and Europe, but in Mexico too. Although Mexico never fell into a military dictatorship like many of its southern neighbors, the state used some of the same tactics during the Cold War, such as forcibly disappearing those it saw as political subversives. In the most infamous episode of this period, the 1968 Tlatelolco massacre, military snipers fired on a student protest in the capital. As many as 300 people died in Tlatelolco Square, and over a thousand were taken to jail as political prisoners. (Sheinbaum’s mother took six-year-old Claudia to visit one such prisoner, a family friend, in the notorious Lecumberri prison, nicknamed “the black palace” for its rats and torture sessions. She has called this family friend, student organizer RaĂșl Ălvarez GarĂn, her “political mentor.”)
The fate of those disappeared by the state was at the heart of Sheinbaum’s early activism. In a documentary made by Morena supporters, Sheinbaum recalled that the first night she spent away from home at age 15 was to join “a group of mothers looking for their children who had been disappeared for political reasons by the state.” They were led by Rosario Ibarra de Piedra, whose son belonged to a communist group and had been taken to an unknown location. Ibarra de Piedra went on to found the first national association of mothers of the disappeared in 1977. A year later, the teenage Sheinbaum was forcibly evicted by Mexican police from an encampment set up in support of the mothers.
While studying physics at the country’s leading university, the National Autonomous University of Mexico (UNAM), Sheinbaum continued her activism, protesting against privatization and austerity. The student movement was dominated by men, but Sheinbaum became a quietly persuasive member. In a TV interview from that time, Sheinbaumâalmost unrecognizable with her short curly hairâdefended free public education. This is a stance she has kept to this day, often declaring that “education is a right, not a commodity.”
It was through student politics that Sheinbaum met her first husband, Carlos Ămaz. In 1988, when she was 26, she…Sheinbaum gave birth to their daughter, Mariana. The family, including her older stepson, Rodrigo, went with her to the University of California, Berkeley, where she earned her doctorate. (She has three butterflies tattooed on her shoulder, representing herself and the two children.)
Sheinbaum could have stayed in the US to teach, but she chose to return home and join the faculty at the public university where she had studied. Academics there don’t make much money, and in the documentary, she describes this time as a struggle: taking on extra work to get by, living in their modest house on the outskirts of the capital, “and above all, the anxiety of trying to pick up the kids from school on time. This constant worry. There was traffic. I was often late.” She gives a smile that looks more like a grimace. “Well, that’s how women’s lives go.”
Sheinbaum first met AMLO in 1999, during strategy meetings held at her house with her then-husband Carlos Ămaz, who was involved in leftist politics and supported AMLO’s run for mayor of Mexico City. After his election in 2000, AMLO called Sheinbaum to a meeting at Sanborns â the classic Mexican spot for power breakfasts â and asked if she could clean up the city’s notorious pollution if he made her secretary of the environment in his cabinet. She said yes, and she largely succeeded. (As president, Sheinbaum has disappointed environmentalists by pursuing “energy sovereignty” mainly through the state-owned oil company, Pemex, rather than renewables.)
When AMLO announced his first presidential bid in 2005, he made Sheinbaum his spokesperson. After he lost the 2006 election by half a percentage point, Sheinbaum was put in charge of an investigation to prove that he had actually won. She proved to be a loyal aide, leading a team of mathematicians to create a series of formulas that convinced few except AMLO’s most devoted supporters. These true believers blocked traffic on one of Mexico City’s main roads, La Reforma, for 48 days to demand a recount. The demand went nowhere, and when his rival Felipe CalderĂłn was sworn in, AMLO’s supporters held a parallel inauguration for him: a public stage, a presidential sash, and a crowd of 100,000 people. Sheinbaum appeared on stage, and the sash was placed on AMLO by Rosario Ibarra de Piedra, the activist who founded the association of mothers of the disappeared in 1977.
Eventually, AMLO gave up the pretense of being president and went home. But through his campaigning, he had built a strong base, especially in the poor, rural south of the country, among its mostly Indigenous population, which later grew into a devoted following. Sheinbaum was by his side as he went door-to-door across the country in 2011 to spread the word about his new political party, the National Regeneration Movement, or Morena for short. In 2015, Sheinbaum ran for and won her first political office as mayor of Tlalpan, the southernmost borough of Mexico City, where her dressmaker lives.
Seven years later, the party fully triumphed. In 2018, Sheinbaum was elected mayor of Mexico City, and AMLO was elected president of the republic. In Mexico, presidents can only serve one six-year term, so despite the deep devotion AMLO inspired, a few years later, he had to throw his support behind a successor. In 2022, graffiti of Sheinbaum’s silhouette, ponytail and all, along with the hashtag #EsClaudia, or simply “it’s Claudia,” began appearing all over the country. The slogan captured the sense that victory for his chosen replacement was inevitable.
The two biggest challenges Sheinbaum faces as president are closely linked: the first is tackling what is often â but somewhat misleadingly â called the war on drugs. The second is managing Mexico’s relationship with its overbearing neighbor to the north.In the north. “She got Trump,” as Marta Lamas put it. Sheinbaum was stuck with Trump.
In January, Trump told Fox News that US forces would soon enter Mexico: “We’re going to start hitting land now when it comes to the cartels. The cartels are running Mexico. It’s very, very sad to watch and see what’s happened to that country.” (Since then, Trump has been distracted by Greenland, then Cuba, then Iran.)
The next month, in what some saw as an attempt to calm Trump or get ahead of US action, Sheinbaum ordered a raid to capture the country’s most-wanted cartel leader, Nemesio Oseguera Cervantes, known as “El Mencho.” He was killed in the operation, and his group, the Jalisco New Generation Cartel, fought back hardâsetting trucks on fire and setting up blockades in 20 of Mexico’s 31 states. In the gun battles that followed, more than 70 people died, including about 25 members of Mexico’s National Guard.
After El Mencho’s death, rumors on Mexican social media played on fears about the US role in the operation. One baseless piece of “news” going around was that a US agent had personally strangled El Mencho to death. The truth seems to be that Mexicans carried out the operation, but with help from US intelligence. Still, the false rumors captured a key uncertainty in the war on drugs: is the US fighting it? Or is Mexico?
This is an extremely sensitive question in a country where the word “sovereignty”âsoberanĂaâcarries almost unimaginable weight. After losing more than half its territory to the US in the 19th century, Mexico has been invaded by its northern neighbor many times, most recently in 1914. The Trump administration has labeled several Mexican cartels as “foreign terrorist organizations,” which opens the door to possible US military strikes. Yet Sheinbaum has repeatedly said Mexico won’t allow unilateral actions on its soil. “What is never negotiable is the sovereignty of our country,” she has stated.
But two months after El Mencho’s killing, the question of sovereignty came up again when two CIA officers were found dead in a car crash after a raid on a drug lab in Chihuahua. Sheinbaum claimed they were “not authorized” to operate in Mexico. Either she was backing away from an operation she had approved, or she didn’t know US forces were active on Mexican territory. Neither option looks good. “Let’s hope this is an exceptional case,” Sheinbaum said, “and that a situation like this never happens again.”
Then in May, CNN reported that the CIA was behind a car explosion that killed a mid-level member of the Sinaloa cartel just outside Mexico City. If true, this went far beyond the usual coordination between Mexican forces and US agencies. The CNN report, based on multiple sources, sparked a huge uproar in Mexico. A CIA spokesperson called it “false and salacious,” and Sheinbaum called it “a lie.” According to CNN, the CIA planned the mission because of “concerns that the cartels have effectively infiltrated some elements of the Mexican government.” This has been a problem across political parties, especially at the local and state level, and Morena is no exception. In late April, the US Department of Justice accused the Morena governor of Sinaloa, RubĂ©n Rocha Moya, of actively conspiring with the Sinaloa cartel. Sheinbaum said she would need “irrefutable evidence” to take action. “My position on these events is as follows: truth, justice, and the defense of sovereignty,” she said. Meanwhile, Rocha Moya, after denying the accusations, has gone into hiding.
These are just the latest events in a long-running conflict that is often misunderstood, especially from outside the country. The drug war began in 2006, when President Felipe CalderĂłn sent the army into direct confrontation with the cartels. The US waThey were happy to fuel the conflict because of what they saw as the success of Plan Colombia in Washington. That was a multibillion-dollar program launched by the Clinton administration to fight drug production and trafficking in Colombia. Then, under George W. Bushâs administration, the U.S. tried the same approach again, sending money and equipment to the Mexican army and training them to go after drug cartels. Whatever the merits of Plan Colombiaâwhich many Colombians strongly disputeâPlan Mexico turned out to be a disaster. By the end of CalderĂłnâs six-year term, an estimated 60,000 people had been killed. Fourteen years later, hundreds of thousands are dead, and thereâs no end in sight.
This violence is often seen as a conflict between cartels, with civilians caught in the middle. But the reality is much more complicated. Drug traffickers are certainly killing people, but so are their supposed enemiesâthe Mexican police and military. Who exactly is being killed and why is often unclear. One reason for this uncertainty is that many politicians are on the payroll of drug cartels, and the cartels are deeply embedded in Mexicoâs security forces. When a local police officer kills a young man, is he acting as a police officer fighting the cartels? Or is he acting as someone paid by the cartels? Itâs usually impossible to know.
Another layer of complexity is that the drug war provides cover for violence that has nothing to do with drugs. Inconvenient peopleâpolitical rivals, activists, Indigenous groups who resist mining on their landâcan all be killed safely, as long as itâs part of the âdrug war.â Drug traffickers regularly kill and make young men and women disappear, often after sexual assaults. According to reports from groups like Human Rights Watch and Amnesty International, members of Mexicoâs security forces do the same. For all perpetrators, impunity is the norm. In this sense, the âdrug warâ resembles the âcold warâ in Latin America, which involved U.S.-approved mass killings of communists and leftists, but also served as an excuse for settling scores and bitter local conflicts. Author Cristina Rivera Garza, in her book Grieving, calls the âmisnamed war on drugsâ actually âthe war against the Mexican people.â
Sheinbaum is a statistics person, and the statistics around this epidemic of violence are very, very bad. Between 2018 and 2020, on average, one person in Mexico was killed every 15 minutes. Things have improved slightly, but the homicide levelsâand the fact that more than 1 million people are internally displacedâare more typical of a country actively at war than one that isnât.
Alongside the horrifying death toll, thereâs the crisis of forced disappearances. Mexico is a large country, with states that vary widely in violence levels. But in some regions, and for many grief-stricken citizens searching for family members who have disappeared, it feels like one massive clandestine grave. Credible reports put the number of missing people at around 130,000.
Youâd think a leftist political project would tackle this head-on. In his 2018 presidential campaign, AMLO promised to strengthen the stateâs search for the disappeared. In particular, he highlighted the plight of the families of the missing students from Ayotzinapa. That name is recognized in Mexico and beyond as a symbol. The facts of that case are unique, but the disappearances themselves are not.
As far as we know, hereâs what happened: on September 26, 2014, uniformed local police officers, along with other attackers, ambushed six buses in the city of Iguala. Five of the buses had been taken over by students from a rural teacherâs school in Ayotzinapa, as part of a yearly tradition where activist students redirect the buses to Mexico City to commemorate the anniversary of the 1968 Tlatelolco massacre.The Telolco Massacre. There’s no agreement on why the buses were attacked, or whether the other attackers were federal police, soldiers, cartel members, or some mix of these groups. A leading theory is that state forces may have been trying to protect heroin stashed on one of the buses. (The heroin was supposedly meant to be sold up north in Chicago.) The remains of three students have been found, but the other 43 are still missing.
The Mexican army’s role in these events is disputed. But according to a group of independent experts brought together by the Inter-American Commission on Human Rights, the army knew what was happening in real time as the disappearances unfolded. (The army was reportedly tracking the students’ movements, and military intelligence intercepted communications between the cartel and local police during the attack.) Investigators and human rights groups say that, at the very least, the army stood by and left the students to their fate. Some make a more serious claim, though without evidence yet: that the army directly handed the students over to cartel members.
It’s impossible to know the truth because the Secretariat of National Defence (Sedena) â which denies knowing about or taking part in the events â has repeatedly refused to hand over 800 files they hold that were requested by the internationally appointed truth commission. After making promises to the Ayotzinapa families, AMLO is widely seen as having betrayed them by shielding the army from having to release information in the case. Similarly, under Sheinbaum, there has been little progress for the families.
Why would AMLO do this, and why would Sheinbaum follow his lead? One simple explanation is that their success depends on keeping the army on their side. Given the pride in national sovereignty and the extreme internal insecurity Mexico faces, the army is essential for any president. Under AMLO and Sheinbaum, it has become even more central to how the state operates.
As president, AMLO took a new approach to reduce drug-related violence. He cut back military operations against the cartels and expanded social programs aimed at steering young people away from crime. At the same time, to many people’s surprise, he increased the military’s role in civilian life. AMLO deployed them for everything from routine street policing and manning highway checkpoints to building roads and a new airport. Sheinbaum doubled down on this approach by integrating the National Guard â a security force created in 2019 â directly into Sedena in 2025. Among their many tasks, National Guard members now arrest foreign migrants trying to cross through Mexico into the US. (A significant but unknown number of the disappeared are migrants, often from Central America.)
View image in fullscreen: Claudia Sheinbaum and Andrés Manuel López Obrador in Mexico City in 2019. Photograph: Ronaldo Schemidt/AFP/Getty Images
Morena’s militarization of the country has been heavily criticized by international organizations. The UN Human Rights office in Mexico opposed integrating the National Guard into the military, citing concerns about increased surveillance powers and lack of oversight. Marcela Turati, a prominent Mexican journalist, argues that the army’s wider presence has actually increased violence. Her team of investigative journalists, Quinto Elemento Lab, has extensively documented cases where state forces, not just common criminals, have carried out disappearances. Turati’s team has also shed light on a more common occurrence: cases where security forces, knowing about mass graves, have chosen not to investigate or have even moved human remains to avoid bad publicity for a particular town or region.
On a sunny day in late February, I met MarĂa Luisa Aguilar RodrĂguez, director of Centro Prodh, a human rights organization that works with families of the disappeared, in her office in downtown Mexico City. It sits above a tortilla shop and smelled of t…As we roasted corn and talked, Aguilar told me that the Ayotzinapa families still meet regularly with Sheinbaum, who “always highlights her background” as an activist. While conversations with AMLO often led to “a lot of tension” because he was so determined to “defend the military no matter what,” early talks with Sheinbaum were more hopeful. In a typical move, she talked about reviving investigations with new technology and fresh scientific evidence.
In 2025, the Mexican government launched a Unified Identity Platform to help identify missing people. But for the families caught up in this tragedy, little has actually changed. (Many have criticized the platform for creating a large biometric database without tackling the root problems.) Aguilar noted that the investigations have been dragged out once again. “Political timelines once again took priority over the victims’ timelines,” meaning the urgency families feel to find their loved ones was ignored.
Morena’s lack of progress on disappearances hasn’t hurt its popularity. For many voters, instead of focusing on a problem that seems impossible to solve, it makes more sense to pay attention to the truck painted in Morena’s colors that rolls into your remote town to install solar panels for free. Or to take advantage of the 1,900 pesos ($109) every two monthsâmoney that used to go only to top students but that Morena has now extended to every public school student to help with school supplies. All political parties have failed to tackle drug violence. Only one party pays for your child’s new school uniform.
The president hasn’t given a single sit-down interview since taking office. Instead, journalists are politely invited to the mañanera, a daily press briefing started by AMLO and continued by Sheinbaum, which is broadcast on TV and online and widely watched across the country. The mañanera is more subdued with Sheinbaum than it was with AMLO, who used the platform to call his critics “cretins and massive crooks” and to harass journalists. Sheinbaum shows her displeasure in more subtle ways.
When Sheinbaum is in Mexico City, the mañanera is held at the National Palace, a huge complex originally built with stones from the palace of Aztec Emperor Moctezuma II. A stapled printout lists the rules for journalists: questions must wait until the president finishes her daily presentation, usually a PowerPoint (the professor-like attention to detail is hard to shake). Journalists are allowed one initial question and two follow-ups. On the day I attended in March, a Mexican colleague who broke the rules was hissed at by some of the roughly 150 journalists in the room.
At 7:30 a.m. sharp, with little fuss, the president appeared from behind a stage, dressed in a sober black suit with a blue front panel. (Not Trujillo’s design, the dressmaker later texted me. “Mine look better.”) “At the end of the conference, there will be a surprise,” Sheinbaum said during her opening remarks, pointing to the TV cameras and smiling. “Stay tuned because you’ll all like it!”
Sheinbaum is small, but she projects a quiet authority in person. The topic that day was public health, and Sheinbaum, one cabinet member, and five other high-ranking officials gave longâand honestly, extremely boringâpresentations, going into minute detail about successful organ transplants across the country.
After the presentation, the president turned to the audience. Whether out of curiosity about a new face or because her press secretary had told her there was a foreign journalist working on a long profile, Sheinbaum called on me. La compañera que viene de fuera, she said, a friendly, left-leaning way of addressing “the comrade from abroad.”
I asked about the disappeared, about what plans the government had to support their families, and about a new government report on the subject.It was about to be published soon. I also mentioned how personally important this issue has been to her, going back to the 1970s.
Sheinbaum looked a bit annoyed. “Let’s take things one step at a time,” she said. “The disappearances in the 1970s and 1980s were very different from what we’re seeing now. Back then, they were political disappearances carried out by the Mexican state against social activists.” She gave the example of Rosario Ibarra de Piedra. Today, she explained, “we’re dealing with missing persons linked to criminal groupsâmostly organized crime. There are also some cases that could be crimes of passion, but those are fewer. The main problem is organized crime.”
Hearing Sheinbaum say this was shocking. The “crimes of passion” explanation for disappearances goes back to Argentina’s dirty war in the 1970s and 1980s, when military officials notoriously told mothers searching for their children that maybe they hadn’t been disappeared at all. Maybe they had just gotten tired of their families and run off to have an affair, or even become sex workers. (To be fair, Sheinbaum did acknowledge that today’s disappearances are still “a painful situation in our country.”)
I was allowed to ask a follow-up question. I said that according to family members, the link between past and present disappearances is impunity and the involvement of security forces. Given that, what are the chances of the state investigating itself?
Sheinbaum looked even more displeased. “Every possibility,” she replied, though she insisted that state involvement in disappearances was “minimal.” She admitted there were some cases of low-level wrongdoing but stressed again that it was nothing like the past, when there was “an order from the federal level to make the opposition disappear.”
The president’s tone was calm, and her eye contact, even from several feet away on the stage, was intense. She often responds to questions with a short “we’ll look into that” and moves on. This time, she gave longer answers, speaking slowly and pausing for effect.
For my last question, I asked about the much-criticized militarization. “What conditions would be needed to have less involvement of the army in the country’s daily life?”
“It’s legal. That’s the first point,” she answered immediately. This is true, but the logic is circular: it’s legal because Morena passed laws making it legal for the military to be involved in more areas. More importantly, Sheinbaum gave a strong defense of Morena’s policies, based on her belief that “the Mexican army is special, it’s unique in the world. The Mexican army doesn’t come from the elites,” she said. To explain, she gave a short history lesson, noting that the modern army was created in 1913 to oppose a coup, backed by the US ambassador, against the first leader of the Mexican revolution. “So the Mexican army is essentially from the people,” she said, taking a small jab at American imperialism along the way. (She has been consistent with this nationalist message over the years.)
Sheinbaum concluded: “This idea of militarization that people talk about isn’t true. It simply isn’t. It would mean the military makes decisions instead of civiliansâand that’s not the case. Thanks to the vote of the Mexican people, I am the commander-in-chief, and I’m the one who makes the decisions.”
The clip of this exchange spread on Mexican social media. Some people praised Sheinbaum’s knowledge of history, while others criticized her answers as not enough. (Some were unhappy with the questions themselves. “PeoPeople who are fake leftists, like this reporter, really annoy me,” one person said. “They pretend to be liberals, but in reality, they’re helping the fascists.” Another suggested that the Guardian had been infiltrated by the CIA.
The press conference that day ended with a small surprise: the FIFA World Cup trophy appeared 100 days before the tournament started. Bebeto, a former Brazilian national team star, took the gold trophy out of its glass case and handed it to Sheinbaum. “Hold it up! Hold it up!” some reporters shouted, and Sheinbaum lifted it awkwardly for the cameras.
On the 26th of every month, families of the disappeared hold a protest along La Reforma, the capital’s main avenue. These are the heirs of the very protests Sheinbaum attended as a teenager. In February, I joined the marchers at the Angel of Independence, a victory column at one end of the avenue that has been the starting point for parades and protests since it was built in 1910. This is where AMLO and his supporters, including Sheinbaum, first blocked traffic in 2006 to demand a recount.
At first, I thought I’d found the wrong march. I was told it would be small, but this one was well-attended, noisy, and shut down one whole side of the avenue. Organizers on pickup trucks held megaphones and led chants for hundreds of people, who unfurled banners with the faces of their missing loved ones.
La Reforma cuts through a busy business district. Some people on the sidewalks stopped to watch, while others hurried by, buried in their phones. Traffic was open on the other side of the avenue, and a religious procession passed by, with trucks decorated in fluttering paper flowers and images of the Virgin of Guadalupe. Drivers honked their horns in support of the protesters.
“Ayotzi is alive, and the struggle continues,” shouted a man with a megaphone, leading a group of current students from the rural school in Ayotzinapa. The students responded with a deafening cry, somewhere between a growl and a howlâa sound both sad and unsettling. They wore matching school jerseys, track pants, and huaraches, leather sandals so common in the countryside that they’ve become a symbol of Mexico’s poor.
The death truck: how a solution to Mexico’s morgue crisis created a new horror
Read more
“Different governments just talk and talk!” The students yelled back in agreement. “Now Claudia Sheinbaum covers up the past!” The protesters demanded information, justice, and to finally know what happened to the disappeared. “We call on Claudia as a mother!”
People who know her told me that Claudia hasn’t changed much despite her rise to power. In a video two years ago, her husband, JesĂșs MarĂa Tarriba, noted that he met her in university and “she is the same to this day.” In her interview for the documentary created by Morena supporters, Sheinbaum reflected on her own story: “One does not come to power for power’s sake. This is not a personal matter,” she said. “One has to know how to continue being una persona sencilla,” meaning, in Spanish, a simple, humble, or even poor personâabove all, a normal person. “Governing is making decisions,” she added. “You must make the decision and then endure the pressures that may come from it.”
Listen to our podcasts here and sign up to the long read weekly email here.
Frequently Asked Questions
Here is a list of FAQs about how Mexicos president Andrés Manuel López Obrador became the most popular leftwing leader in the world
BeginnerLevel Questions
1 Who is Mexicos president and why is he considered a leftwing leader
Answer Andrés Manuel López Obrador is the president of Mexico He is considered leftwing because his policies focus on helping the poor reducing inequality and increasing government control over energy and resources rather than favoring big business
2 How popular is AMLO compared to other world leaders
Answer For most of his term AMLO has had approval ratings between 55 and 65 This is very high compared to leaders in the US Europe or even other Latin American countries making him one of the most popular leftwing leaders globally
3 What is his main secret to staying so popular
Answer His main secret is his direct connection with poor and workingclass Mexicans He holds daily morning press conferences to talk directly to the people and he has increased social programs like pensions for the elderly and scholarships for students
4 Does his popularity mean everyone in Mexico loves him
Answer No He is very polarizing His supporters love him for fighting corruption and helping the poor but his critics say his policies hurt the economy the environment and democratic institutions Still his base is large and loyal
5 What is a mañanera
Answer Its a daily earlymorning press conference that AMLO holds He uses it to announce policies answer reporter questions and attack his critics Its his main tool for communicating directly with the public bypassing traditional media
IntermediateLevel Questions
6 How did his anticorruption message boost his popularity
Answer AMLO won by promising to end the mafia of powerthe corrupt elite He has made fighting corruption his top priority While critics say he hasnt jailed many corrupt officials his supporters trust that he is personally honest and that he has stopped the previous system of stealing public money
7 What are the specific social programs that made him so popular