Nudists, peace activists, and budget travelers: the people keeping the Esperanto dream alive.

Nudists, peace activists, and budget travelers: the people keeping the Esperanto dream alive.

@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;
}
}
“`eft:-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;
}
}

[data-gu-name=media]:has(figure.loop) figure.loop figcaption:not(.hidden) {
z-index: 6;
}

[data-gu-name=media]:has(figure.loop) figure.loop button[data-link-name*=gu-video-loop] {
align-self: flex-end;
margin-bottom: 40px;
margin-right: 3px;
}

[data-gu-name=media]:has(figure.loop) figure.loop .controls-container div:has(button[data-testid=unmute-icon]),
[data-gu-name=media]:has(figure.loop) figure.loop .controls-container div:has(button[data-testid=mute-icon]) {
right: 0;
padding-left: 10px;
}

[data-gu-name=media]:has(figure.loop) #caption-button {
z-index: 100;
}

@media (min-width: 61.25em) {
[data-gu-name=media]:has(figure.loop) #caption-button {
bottom: 20px;
}
}

@media (min-width: 46.25em) {
[data-gu-name=media]:has(figure.cinemagraph) .cinemagraph > div {
max-height: unset;
}
}

[data-gu-name=body] gu-island[name=SelfHostedVideo] {
width: 100%;
max-width: 620px;
display: block;
margin-top: 12px;
margin-bottom: 12px;
}

[data-gu-name=body] gu-island[name=SelfHostedVideo] figure.loop,
[data-gu-name=body] gu-island[name=SelfHostedVideo] figure.loop video {
width: 100%;
height: auto;
max-width: 620px;
margin: 0 auto;
}

[data-gu-name=body] gu-island[name=SelfHostedVideo]:has(figure.loop.element-video-immersive) {
max-width: unset;
margin: 12px 0;
}

[data-gu-name=body] gu-island[name=SelfHostedVideo]:has(figure.loop.element-video-immersive) figure.loop,
[data-gu-name=body] gu-island[name=SelfHostedVideo]:has(figure.loop.element-video-immersive) figure.loop video {
max-width: unset;
margin: 0;
}

@media (min-width: 71.25em) {
[data-gu-name=body] gu-island[name=SelfHostedVideo]:has(figure.loop.element-video-immersive) {
width: 1140px;
margin-left: -180px;
}
[data-gu-name=body] gu-island[name=SelfHostedVideo]:has(figure.loop.element-video-immersive) figure figcaption {
margin-left: 20px;
}
}

@media (min-width: 81.25em) {
[data-gu-name=body] gu-island[name=SelfHostedVideo]:has(figure.loop.element-video-immersive) {
width: 1300px;
margin-left: -260px;
}
}

:root {
–dateline: #606060;
–headerBorder: #dcdcdc;
–captionText: #999;
–captionBackground: hsla(0, 0%, 7%, .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;
}

.content__main-column–interactive .element-atom:first-of-type + p:first-of-type,
.content__main-column–interactive .element-atom:first-of-type + .sign-in-gate + p:first-of-type,
.content__main-column–interactive .element-atom:first-of-type + #sign-in-gate + p:first-of-type,
.content__main-column–interactive .element-atom:first-of-type + .element-atom + p:first-of-type,
.content__main-column–interactive hr:not(.last-horizontal-rule) + p,
.content__main-column–interactive hr:not(.last-horizontal-rule) + .ad-slot-container + p,
#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 .element-atom:first-of-type + .element-atom + p:first-of-type,
#article-body > div hr:not(.last-horizontal-rule) + p,
#article-body > div hr:not(.last-horizontal-rule) + .ad-slot-container + p,
.content–interactive > div .element-atom:first-of-type + p:first-of-type,
.content–interactive > divHere’s the rewritten text in fluent, natural English:

Add 14 pixels of padding to the top of the first paragraph that comes right after certain elements. This applies when the paragraph follows:

– The first `.element-atom` in a section
– A `.sign-in-gate` that comes after the first `.element-atom`
– A `#sign-in-gate` that comes after the first `.element-atom`
– Another `.element-atom` that comes after the first one
– A horizontal rule (unless it’s the last one)
– An `.ad-slot-container` that comes after a horizontal rule (unless it’s the last one)

These rules apply in the following areas:
– Interactive content sections
– Comment sections
– Sections with `data-gu-name=”body”`
– Feature body sections
– Article body sections

Also, style the first letter of the first paragraph that follows these same elements. This applies in:
– Interactive main columns
– Article body sections
– Interactive content sections
– Comment sections
– Sections with `data-gu-name=”body”`Here is the rewritten text in fluent, natural English:

The first letter of the first paragraph after a horizontal rule, or after an ad slot container following a horizontal rule, uses the Guardian Headline font family, is bold, 111px in size, with a line height of 92px. It floats left, is uppercase, has a right margin of 8px, and uses the drop cap color.

In certain sections, paragraphs that come right after a horizontal rule have no top padding.

Pull quotes in these sections have a maximum width of 620px.

For showcase images in the main content, feature, standard, and comment article containers, the caption is positioned statically and takes the full width, up to 620px. On wider screens (over 71.25em), the caption is positioned absolutely with a max width of 140px. On even wider screens (over 81.25em), the max width increases to 220px.

Immersive elements take up the full viewport width minus the scrollbar. On smaller screens (under 71.24em), they have a max width of 978px, and their captions have 10px of padding on each side. On screens between 30em and 71.24em, the caption padding increases to 20px. On medium screens (46.25em to 61.24em), immersive elements have a max width of 738px. On small screens (under 46.24em), they have a negative left margin of 10px and no right margin. On screens between 30em and 46.24em, the left margin is -20px, and caption padding is 20px.

On screens wider than 71.25em, showcase images in the body have a left margin of -160px. On screens wider than 81.25em, that margin increases to -240px.

The furniture wrapper is positioned relatively. On screens wider than 61.25em, it adjusts accordingly.The `.furniture-wrapper` uses a CSS grid layout with 20px gaps between columns and no gaps between rows. The grid is divided into two main sections: the first five columns are for the title, headline, meta, and standfirst, and the next five columns are for the portrait. The rows are set up so that the title and portrait start together, followed by the headline, then the standfirst, and finally the meta.

Inside the wrapper, the first child of the headline section has a top border that is 1px solid, using a custom border color. The meta section is positioned relatively, with a small top padding and no right margin.

The standfirst section keeps its content’s bottom margin at 4px. List items inside the standfirst have a font size of 20px. Links within the standfirst have no bottom border or background image, but are underlined with a 6px offset. The underline color matches the header border (usually a light gray), and the thickness is 1px. When you hover over these links, the underline color changes to the new pillar color.

The first paragraph in the standfirst has a top border matching the header border and no bottom padding. On screens wider than 61.25em (980px) and also wider than 71.25em (1140px), this top border is removed.

For screens wider than 61.25em, images inside the wrapper have no top or bottom margin and a left margin of -10px. Inline images with a specific role can be up to 630px wide.

On screens wider than 71.25em, the grid layout changes. The first two columns are for the title, headline, and meta, followed by five columns for the standfirst, and then seven columns for the portrait. The rows are set to 80px for the title, auto for the headline, and auto for the standfirst and meta. The meta section gets a 540px-wide top border line. The standfirst paragraphs lose their top border, and a vertical line (1px wide) appears on the left side of the standfirst.

For screens wider than 81.25em (1300px), the grid uses three columns for the title, headline, and meta, five for the standfirst, and eight for the portrait. The rows return to fractional units: 0.25fr for the title, 1fr for the headline, and 0.75fr for the standfirst and meta. The meta’s top border line widens to 620px, and the vertical line in the standfirst shifts slightly to the left.

Finally, the article header’s labels inside the title section are styled accordingly.The CSS rules inside `.content__labels > div` add 2px of padding at the top.
In `.furniture-wrapper`, the `h1` elements inside `#headline`, `[data-gu-name=”headline”]`, and `.headline` have a font weight of 600, a max width of 620px, and a font size of 32px.
On screens wider than 71.25em, those `h1` elements get a max width of 540px and a font size of 50px.
On screens wider than 46.25em, `.keyline-4` and `[data-gu-name=”lines”]` inside `.furniture-wrapper` have no right margin.
On screens wider than 61.25em, those same elements are hidden.
The `svg` inside `.keyline-4` and `[data-gu-name=”lines”]` uses `stroke: var(–headerBorder)`.
On screens wider than 46.25em, `#meta` and `[data-gu-name=”meta”]` inside `.furniture-wrapper` have no right margin.
Inside `#meta` and `[data-gu-name=”meta”]`, the social sharing section, the spans inside list item links, and the comment section all use `border-color: var(–headerBorder)`.
Also inside `#meta` and `[data-gu-name=”meta”]`, any `gu-island` element that is a direct child of a `div` inside `.content__meta-container_dcr` is hidden.
The `.standfirst`, `#standfirst`, and `[data-gu-name=”standfirst”]` elements have a left margin of -10px, left padding of 10px, and are positioned relatively.
On screens wider than 46.25em, they get 2px of top padding.
Paragraphs inside these elements have a font weight of 400, font size of 20px, and 14px of bottom padding.
`#main-media` and `[data-gu-name=”media”]` are positioned relatively, have no top margin, 2px bottom margin, and are placed in the grid area called “portrait”.
Any `div` inside these elements that contains another `div` takes full width and has no horizontal margin.
On screens wider than 61.25em, `#main-media` and `[data-gu-name=”media”]` have no bottom margin.
On screens narrower than 46.24em, they take up the full viewport width (minus the scrollbar) and have a left margin of -10px.
If the screen is between 30em and 46.24em, the left margin becomes -20px.
The `figcaption` inside `.furniture-wrapper` is positioned at the bottom, with 4px top padding, 10px left/right padding, and 12px bottom padding. It uses `var(–captionBackground)` as its background and `var(–captionText)` for text color. It has no max width, no bottom margin, and a minimum height of 46px.
The `span` inside `figcaption` uses `color: var(–headerBorder)`, and any `svg` inside that span uses `fill: var(–headerBorder)`.
The first `span` inside `figcaption` is hidden, while the second is shown inline with a max width of 90%.
On screens wider than 30em, the `figcaption` gets 4px top padding, 20px left/right padding, and 12px bottom padding.
If the `figcaption` has the class `hidden`, its opacity is set to 0.
The `#caption-button` is displayed as a block, positioned absolutely 10px from the bottom and 8px from the right, with a z-index of 30. It uses `var(–captionBackground)` as its background, has no border, is fully rounded, and has 6px top padding, 5px left/right padding, and 5px bottom padding.
The `svg` inside `#caption-button` is scaled down to 85%.
On screens wider than 30em, the button is 10px from the right.
On screens wider than 71.25em, the `::before` pseudo-element of `.content__main-column–interactive` is positioned 12px higher and is 24px taller than the element itself.
The `h2` inside `.content__main-column–interactive` has a max width of 620px.
The `:root` sets `–new-pillar-colour` to `var(–darkmode-pillar, var(–darkModeFeature))` and forces it with `!important`. It also sets `–headerBorderColor` to `#606060` and `–darkModeFeature` to `#ff5943`.
Any `nav` followed by a `section` is hidden, any `nav` followed by an `aside` is hidden, and any `aside` followed by a `section` is hidden.
The `.furniture-wrapper` has a background color of `var(–darkBackground)`, with 0 top/bottom margin, -10px left/right margin, and 0 top padding, 10px left/right padding, and 4px bottom padding.
On screens wider than 30em, the left/right margin becomes -20px, and the left/right padding becomes 20px, with 8px bottom padding.
On screens wider than 61.25em, the bottom padding is removed (set to 0), and on screens wider than 81.25em, a `::before` pseudo-element is added with empty content and a width calculated as half of the viewport width minus 1298px.Here’s the rewritten text in fluent, natural English:

The element has a height of 100% and is positioned absolutely. It is placed to the left using `calc((100vw – 1298px) / -2)`. Its background color uses the `–darkBackground` variable, and it has a right border that is 1 pixel solid, using the `–headerBorderColor` variable.

After the `.furniture-wrapper` element, a pseudo-element is added with content. It has a width calculated as `calc((100vw – 1298px) / 2)` and a height of 100%. It is positioned absolutely to the right using `calc((100vw – 1298px) / -2)`, and its background color is also `–darkBackground`.

Inside `.furniture-wrapper`, the article header, and any elements with `[data-gu-name=”title”]` (both links and spans), use the color defined by `–new-pillar-colour` or fall back to `–darkModeFeature`.

On screens wider than 61.25em (about 980px), the first child of the headline section (whether it’s inside `#headline`, `[data-gu-name=”headline”]`, or `.headline`) gets a top border that is 1 pixel solid, using `–headerBorderColor`.

The main headline (`h1`) inside these headline sections is bold and colored `#dcdcdc`.

Figures inside the headline sections have no top margin and a bottom margin of 2 pixels.

On screens wider than 71.25em (about 1140px), the `#meta` section and `[data-gu-name=”meta”]` have a `:before` pseudo-element with a background color of `–headerBorderColor`.

Inside the meta section, details, summary, and summary spans are all colored `#dcdcdc`.

Social media links and buttons inside `.meta__social` (within `#meta` or `[data-gu-name=”meta”]`) have a border color of `–headerBorderColor` and a text color of `–new-pillar-colour` (or `–darkModeFeature`). Their SVG icons use the same fill color. When hovered over, these links and buttons change to have a background of `–new-pillar-colour` (or `–darkModeFeature`) and text color of `–darkBackground`. Their SVG icons also change fill to `–darkBackground`.

Other `div` elements inside the meta section are colored `#dcdcdc`.

Links inside the meta section use the color `–new-pillar-colour` (or `–darkModeFeature`). When hovered, they keep that color and their underline uses the same color.

Links inside the standfirst section (whether in `.standfirst`, `#standfirst`, or `[data-gu-name=”standfirst”]`) have no bottom border, use the color `–new-pillar-colour` (or `–darkModeFeature`), have no background image, and are underlined with an offset of 6 pixels. The underline color is `–headerBorder` (or `#dcdcdc`), and the thickness is 1 pixel. When hovered, these links keep no bottom border, and the underline color changes to `–new-pillar-colour` (or `–darkModeFeature`).

Paragraphs inside the standfirst sections are colored `#dcdcdc`.

On screens wider than 61.25em, the first paragraph inside the standfirst sections has a bottom border.Here is the rewritten text in fluent, natural English:

On wider screens (71.25em and above), the first paragraph inside the standfirst section no longer has a top border. List items in the standfirst are styled in a light gray color (#dcdcdc). At 71.25em and above, a line appears above the standfirst using the header border color.

For screens 46.25em and wider, the furniture wrapper adds decorative background panels on both sides. These panels use the dark background color and are separated from the main content by a border line. The width of these panels changes depending on the screen size:

– At 46.25em, the panels fill the space around a 738px-wide content area.
– At 61.25em, they adjust to fit around a 978px-wide area.
– At 71.25em, they fit around 1138px.
– At 81.25em, they fit around 1298px.

The keyline and line icons in the furniture wrapper use the header border color for their stroke. Social media icons, their link spans, and comment sections in the meta area also use this same border color.

In article body sections, h2 headings have a light font weight (200), unless they contain bold text (strong), in which case they become bold (700).

For print layouts, unordered lists have no background image.

Custom fonts are loaded for the Guardian Headline Full family, including light and light italic styles at 300 weight, from the Guardian’s asset server.Here is 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-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;
}

@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-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;
}

: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 {
height: 0;
}

body.ios #feature-article-container .furniture-wrapper,
body.ios #standard-article-container .furniture-wrapper,
body.ios #comment-article-container .furniture-wrapper,
body.android #feature-article-container .furniture-wrapper,
body.android #standard-article-container .furniture-wrapper,
body.android #comment-article-container .furniture-wrapper {
padding: 4px 10px 0;
}

body.ios #feature-article-container .furniture-wrapper .content__labels,
body.ios #stanFor `dard-article-container`, `#comment-article-container`, and `#feature-article-container` on iOS and Android, the `.furniture-wrapper .content__labels` should have a font weight of 700, use the font family `Guardian Headline, Guardian Egyptian Web, Guardian Headline Full, Georgia, serif`, be colored with the new pillar color, and use capitalized text.

On iOS and Android, for `#feature-article-container`, `#standard-article-container`, and `#comment-article-container`, the `.furniture-wrapper h1.headline` should have a font size of 32px, a font weight of 700, 12px of padding at the bottom, and a color of `#121212` (important).

On iOS and Android, for `#feature-article-container`, `#standard-article-container`, and `#comment-article-container`, the `.furniture-wrapper figure.element-image` should be positioned relatively, have a top margin of 14px, a left margin of -10px, and a width of `calc(100vw – var(–scrollbar-width, 0px))` with automatic height.

On iOS and Android, for `#feature-article-container`, `#standard-article-container`, and `#comment-article-container`, the `.furniture-wrapper figure.element-image .figure__inner`, `img`, and `a` should have a transparent background, a width of `calc(100vw – var(–scrollbar-width, 0px))`, and automatic height (important).

On iOS and Android, for `#feature-article-container`, `#standard-article-container`, and `#comment-article-container`, the `.furniture-wrapper .standfirst` should have 4px of top padding, 24px of bottom padding, and a right margin of -10px.

On iOS and Android, for `#feature-article-container`, `#standard-article-container`, and `#comment-article-container`, the `.furniture-wrapper .standfirst__inner p` should…Here is the rewritten text in fluent, natural English:

The text inside the standfirst section of the article container uses the font family: Guardian Headline, Guardian Egyptian Web, Guardian Headline Full, Georgia, serif.

On iOS and Android devices, links inside the standfirst section of feature, standard, and comment articles are styled with the pillar color, no background image, an underline with a 6px offset, and a border-bottom color based on the header border (defaulting to #dcdcdc). When you hover over these links, the underline color changes to the pillar color.

The meta section in these article containers has no margin. The byline, author name, and any byline links or spans inside the meta section are also styled consistently across iOS and Android devices.For Android devices, the byline and author text inside the furniture wrapper of standard and comment article containers should use the new pillar colour. For iOS and Android devices, the meta misc section in feature, standard, and comment article containers should have no padding. The SVG icons in those sections should use the new pillar colour as their stroke.

On both iOS and Android, the caption button inside the showcase element of feature, standard, and comment article containers should be displayed as a flex container, with 5px padding, centered content, and dimensions of 28×28 pixels, positioned 14px from the right.

For all device types, the article body in feature, standard, and comment article containers should have 12px padding on the left and right. Images inside the article body that are not thumbnails or immersive should have no margin, a width calculated as the viewport width minus 24px and the scrollbar width, and an automatic height. Their captions should follow the same styling.For elements that are not immersive, the figcaption should have no padding. On iOS and Android, for feature, standard, and comment articles, immersive images should take up the full viewport width minus the scrollbar width. In the prose sections of these articles, quoted blockquotes should use the new pillar colour for the quotation mark. Links in the prose should be styled with the primary pillar colour, no background image, an underline with a 6px offset, and the underline colour set to the header border. When hovering over these links, the underline colour should change to the new pillar colour.

In dark mode, the furniture wrapper background should be #1a1a1a. The content labels inside the wrapper should use the new pillar colour. The headline (h1) should have no background and its colour should be set to the header border. The standfirst paragraph text should also use the header border colour.Here is the rewritten text in fluent, natural English:

For iOS and Android devices, links in the standfirst of article wrappers, as well as author bylines in the meta section of feature, standard, and comment articles, should use the new pillar colour. Similarly, SVG icons in the meta section of these articles should have a stroke in the new pillar colour.

On both platforms, captions for showcase image elements in feature, standard, and comment articles should use the dateline colour. Blockquotes within the article body of these article types should also use the new pillar colour.

Finally, for iOS and Android, the main content areas of feature, standard, and comment articles—including the article body, interactive content, feature body, comment body, and any element with the data attribute `data-gu-name=”body”`—should follow the same styling rules.For Android devices, in the standard article container, comment article container, and related sections, the background color is set to a dark background using the `–darkBackground` variable.

For iOS devices, in feature and standard article containers, the first letter of paragraphs that follow an element atom (or a sign-in gate) is styled in a specific way. This applies to various sections like the article body, interactive content, feature body, and comment body.Here’s the rewritten version in fluent, natural English:

On iOS, for feature articles, the first letter of a paragraph that comes right after an element atom (or after a sign-in gate that follows an element atom) should be styled in a specific way. This applies to paragraphs inside the feature body, the comment body, and the general body section.

The same styling also applies on Android for feature articles, standard articles, and comment articles. In each case, it targets the first letter of a paragraph that directly follows an element atom, whether or not there is a sign-in gate in between. This includes paragraphs inside the article body, the interactive content area, the feature body, the general body section, and the comment body.Here’s the rewritten version in fluent, natural English:

For Android devices, when viewing comment articles, the first letter of a paragraph that comes right after certain elements (like an atom or a sign-in gate) should use the new pillar color, which defaults to white.

On both iOS and Android, for comment articles, the standfirst section inside the furniture wrapper should have 24 pixels of padding at the top and no margin above it.

In prose sections, heading level 2 (h2) should be 24 pixels in font size.

For iOS devices, the caption button in feature, standard, and comment article containers should have 6 pixels of padding on top and 5 pixels on the sides. For Android, it should be 4 pixels on top and 4 pixels on the sides.

When the user’s system is set to dark mode (and the page doesn’t have a light color scheme), the following colors should apply:
– Follow text: #dcdcdc
– Follow icon fill: the dark mode pillar color
– Standfirst text: #dcdcdc
– Standfirst link text: the dark mode pillar color
– Standfirst link border: the dark mode pillar color
– Byline: the dark mode pillar color

The dark background color is set to #1a1a1a.

For both iOS and Android, in feature, standard, and comment article containers, the article header should be completely transparent (opacity set to 0).

For both iOS and Android, the furniture wrapper in feature, standard, and comment article containers should have no margin.

For both iOS and Android, the content labels inside the furniture wrapper should use the new pillar color (or the dark mode feature color as a fallback).

For both iOS and Android, the main headline (h1 with class “headline”) inside the furniture wrapper should be #dcdcdc.

For both iOS and Android, any links inside the article header or title section of the furniture wrapper should follow the same styling rules.Here’s the rewritten version in fluent, natural English:

For article titles inside furniture wrappers, the link color is set to the pillar color (or dark mode feature color) on both Android and iOS.

On iOS and Android, the meta section in furniture wrappers uses a repeating linear gradient background with the header border color. This creates a dotted line effect.

The byline text inside the meta section is colored light gray (#dcdcdc) on both platforms.

Links inside the meta section use the same pillar color (or dark mode feature color) as the titles.

The SVG icons in the meta miscellaneous section also follow the same color styling.On Android, the SVG icons in the meta section of article containers use a stroke color defined by the pillar color variable (or a dark mode fallback). On iOS, the alert labels in the same sections are styled with a light gray color (#dcdcdc). For both iOS and Android, any span elements with a data-icon attribute inside the meta section of feature, standard, and comment article containers use the pillar color variable for their text color and for the color of their ::before pseudo-element. On screens wider than 71.25em, the meta section and elements with the class “meta keyline-4” in iOS article containers are affected by additional styling.For Android and iOS devices, the meta section inside the furniture wrapper of feature, standard, and comment article containers is displayed as a block with a top border. The border is 1 pixel solid, using the new pillar color variable (or the header border color as a fallback).

On both Android and iOS, the `.meta__misc` class inside these meta sections has no default margin, but gets a left margin of 20 pixels.

For the article body on both platforms, paragraphs and unordered lists have a maximum width of 620 pixels.

In the prose section of the article body, quoted blockquotes have a `:before` pseudo-element that uses the secondary pillar color.

Links in the prose section are styled with the primary pillar color, no background image, an underline, an underline offset of 6 pixels, and an underline color of `#dcdcdc`. When hovered, the underline color changes to the secondary pillar color.

In dark mode (prefers-color-scheme: dark), the quoted blockquote `:before` color adjusts accordingly.One day, when I was 16 in the late 2000s, I got an instant message on AOL from my friend Kenyon. He asked if I had heard of Esperanto, the universal language. Kenyon was a few years older than me and kind of a mentor. Like me, he was a musician—he produced my teenage band’s first record—but unlike me, he was full of random facts that made him the confident, nerdy star of any Saturday night gathering of misfits. His pitch was this: Esperanto was created in the late 19th century by a Polish-Jewish eye doctor named LL Zamenhof. He wanted to make a language so easy to learn that people all over the world would adopt it as a shared second language. From that common understanding, world peace would naturally follow. Yes, the language had been around for over 100 years, and no, universal harmony hadn’t happened yet. But the internet had started a new era of global connection, and people could learn through plenty of online classes. Maybe we were on the edge of an Esperanto revival. Kenyon had been practicing for a few years and was practically fluent.

As a typical teenager, I was going through my own social awakening. I had started traveling around the US playing music, relying only on the kindness of friends of friends of friends. I found connection and what felt like endless possibilities in group bike rides and sweaty dance parties in old churches. I was also trying out hitchhiking and hopping freight trains, visiting new places by using the slightly forbidden systems of our industrial society. Goods needed to move, and I could move with them, thanks to the generosity of people who showed me how, just because I wanted to learn. Esperanto felt similar: another odd social group that rejected the big, vague forces trying to divide us. But even then, its goals seemed unnecessary—the internet had already given me new ways to communicate across distances and differences. Even if the language was easy to learn, why bother?

Eventually, the early internet’s shared optimism faded, and I forgot about Esperanto. Then, a few yearsA while back, I got a shortwave radio that could pick up analog broadcasts from around the world. While browsing the schedules of international programs—still run by national governments and big missionary groups to this day—I found out that both state-run China Radio International and, until recently, the Vatican regularly broadcast in Esperanto on shortwave.

Reminded of my brief encounter with the language as a kid, I decided to join the estimated million-plus people who’ve tried it on Duolingo since Esperanto launched on the platform ten years ago. Soon, I was climbing the app’s competitive leaderboard, reading aloud what sounded like a dream-distorted version of Spanish. Encouraged by the company’s iconic green owl, I translated sentence after sentence that seemed straight out of a modern Little Red Songbook (“Who is that worker?”, “Is the thief guilty?”, “Do the police help us?”), lofty one-liners reflecting peace-loving ideals (“There are too many wars in the world”), and sentiments that showed a delusional sense of the language’s reach (“Learn Esperanto to talk to the world”).

For a satirist or a cynic, Esperanto enthusiasts are easy targets. Many of its fans are undeniably quirky: long-haired folks, train buffs, nudists, and Brazilian spiritists (who believe Esperanto is the language of a much more peaceful spirit world, sent to Earth from God through Zamenhof to bring universal harmony). But Esperanto was once a force in global politics. Before facing heavy persecution during World War II, it gained serious ground in international labor, anti-colonial, and anarchist movements. And most of today’s Esperanto speakers are neither naive nor particularly crazy. They include European social democrats and older anarchists, Chinese communists, young pacifists from central Africa, and advocates for Ukrainian independence. There are Esperanto-speaking gay rights activists, Bible translators, lawyers, and Go players. Why, despite all evidence to the contrary, would this mixed group—many of whom know global conflict firsthand—still believe that widespread adoption of a 150-year-old invented language could overcome the world’s divisions, especially as the global order seems to be falling apart?

Besides, even more than in the AOL days, international communication can now be handled by technology, translated instantly through apps, and helped by English becoming a default common language. But for Esperanto speakers, none of this comes close to solving the basic problem of human disconnection. “If our aim is only to buy a hamburger, then those tools are enough,” Petro BalĂĄĆŸ, a well-known Slovakian Esperanto publisher and educator, told me. “But it’s something totally different… to talk about the meaning of life, to travel the world, to have really deep conversations.”

BalĂĄĆŸ’s view of Esperanto as a non-transactional, humanistic alternative to industry-specific language crash courses and tourist phrasebooks appealed to me. I wondered if this optimistic group of devotees might be onto something after all—and what the rest of us could learn from what might otherwise seem like a doomed, bittersweet experiment.

So, last summer, after months of solo, game-like study, I signed up for the 110th annual World Esperanto Congress, a gathering hosted by the Universal Esperanto Association. For eight days, I would join over 1,000 paying attendees from more than 60 countries in the plain classrooms of a university in Brno, Czechia, to speak only Esperanto, think about the state of the language, and pull a series of surprisingly late, rowdy nights. I didn’t expect to become a convert, but I hoped the congress might at least give me a chance to shed some of my cynicism.

“Saluton!” Greetings echoed through the halls of Mendel University in Brno. It was the opening evening ofThe congress had a distinctly back-to-school feel, as reunions between old acquaintances clogged the already crowded hallways. The Movada Foiro, or Movement Fair, is the first major event of every global Esperanto meeting—and, I was told, the heart of the convention, where Esperanto organizations of all kinds gather to promote their favorite causes. Representatives sat two to a folding table, each piled high with literature. At one table, Catholic Esperantists handed out prayer cards. At the next, a pan-European group working to make Esperanto the official language of the EU drew a decent crowd, but far fewer than the International Federation of Esperanto Railwaymen, whose table was so packed I had to stand on tiptoe just to see their display. Esperantist doctors mingled with members of the International League of Blind Esperantists, while the World Association of Esperantist Non-Smokers squeezed in next to the Ukrainian Esperanto Association. The International Esperanto Naturist Organization showered passersby with pamphlets featuring stock photos of fit, naked bodies. One of its representatives tried to sign me up for a swimming trip. “Senpaga!” she said excitedly. Free!

All week, these and other clubs would host talks and activities. Some sessions focused directly on how to promote the language, discussing what Zamenhof called Esperanto’s interna ideo: the idea that a simple, neutral language could foster global peace. Other seminars had no direct link to Esperanto beyond being held in the language—there were talks on the history of space travel and the James Webb telescope, the intersection of behaviorism and brutalist architecture, and China’s spring festival.

View image in fullscreen: LL Zamenhof, the inventor of Esperanto. Photograph: Chroma Collection/Alamy

I had only been studying the language for a few months and felt unsure about my ability to understand some of these lectures. I couldn’t, for example, come up with the word for “brutalism” off the top of my head. But I still managed to grasp about half of what was said to me at the Movada Foiro—and much more after reciting my go-to line: “Mi estas komencanto. Bonvolu paroli malrapide.” I am a beginner. Please speak slowly.

Esperanto is indeed quite simple. Designed with formulaic, surgical clarity, its rules have few exceptions. For any given word, the suffix always indicates the part of speech: -o for nouns, -a for adjectives, -e for adverbs, -i for verbs (plus -as for present tense, -is for past, -os for future), and so on. “Amiko.” Friend. “Amika.” Friendly. The stress always falls on the second-to-last syllable, giving the language a swinging, singsong quality. Words are built like mathematical equations: a root, plus any of a few dozen affixes that can change its meaning. Take the word “malsanulo”. Its root, “sano”, means health. “Mal” indicates the opposite: un-health or sickness. The suffix “ulo” means a person; so “malsanulo” means a sick person or patient. Esperanto supporters like to boast that about 95% of the language can be understood by knowing fewer than 500 common plug-and-play roots and affixes.

Zamenhof never intended his language to evolve completely naturally. Instead, its rules are governed by the Akademio de Esperanto, a body founded at the first World Esperanto Congress (in Boulogne-sur-Mer, France, in 1905) with the mission to “preserve and protect the fundamental principles of the Esperanto language” and “control its development.” That goal makes sense: the survival of a made-up language requires tight control, since dialect differences and slang often give rise to entirely new “natural languages.” Esperantists cannot have “rizz,” and accepting loose, unregulated internet slang like “six seven” would threaten the entire social contract on which the experiment is based.

Esperanto must, however,The academy must keep up with the times. So this panel of 45 linguists, scientists, philosophers, and others makes formal recommendations about how the language can and cannot change. It handles comments and questions from Esperanto speakers all year, but especially during a public forum at the annual congress. (In Brno, attendees asked about gender-neutral pronouns and the lack of technical terms for stringed instruments.) The academy then considers these requests and, very rarely, updates the Esperanto dictionary. (It last released a new “official supplement” in 2023, only the 10th since the language was created.)

This rigid, top-down process can seem out of step with Esperanto’s democratic ideals. In some ways, this level of control isn’t so different from how certain national languages are managed: the AcadĂ©mie Française decides and spreads language standards; Italy’s Accademia della Crusca works to “purify” Italian; and Spain’s Real Academia Española does something similar. But while these other groups aim to strengthen national identity by enforcing language rules, Zamenhof wanted to control language in order to break down those very barriers. This was all part of Esperanto’s interna ideo: neutrality required standardized simplicity.

Zamenhof was born in 1859 in BiaƂystok, now in Poland but then part of the Russian Empire. The city’s population was diverse and divided, with religious and ethnic groups speaking Russian, Polish, Belarusian, German, Yiddish, and Hebrew, often clashing with each other. Zamenhof spoke all these languages and also studied Latin, Italian, Greek, English, Aramaic, and French. When he was 10, he wrote a play called The Tower of Babel, or a BiaƂystok Tragedy in Five Acts, where the biblical tower is reimagined as BiaƂystok’s town hall. Zamenhof believed that the constant conflicts in his hometown and elsewhere were mainly caused by language differences. He decided to create a new language, aiming for what Esperantists call finvenkismo (“fin” meaning final, “venko” meaning victory): Esperanto would become the world’s saving second language, uniting all people and governments.

In 1887, before his 30th birthday, Zamenhof published a plain Russian book simply titled International Language. It laid out a system of root words, modifiers, and grammar, and explained the project’s political goals. Following his own language rules, Zamenhof wrote under the pen name Doktoro Esperanto: one who hopes. Almost immediately, early fans began calling the language Esperanto.

This was hardly the first attempt at a shared, invented language. There was Solresol, an early 19th-century language based on musical notes, and the mostly one-syllable VolapĂŒk, created by a German Catholic priest who thought he was divinely inspired. But while most of these earlier languages quickly faded, the openly internationalist Esperanto took off, especially among a growing group of anarcho-syndicalists, socialists, and “anationalists”—a term popularized by Esperantist labor organizer EugĂšne Lanti to describe those who rejected the idea of nationhood entirely. These early Esperantists shared self-published books on how to speak the language and magazines written in Esperanto that aimed to introduce their political movements to a global audience. The language was sometimes called the “Latin of democracy.”

In the early 20th century, one follower created an international currency with coins showing Zamenhof in profile; at one point, it was accepted by several European banks and had account holders in 43 countries. Esperanto speakers included Leo Tolstoy, Ho Chi Minh, and George Soros’s father, who was born Tivadar Schwartz in 1893 but later changed his family’s last name to an Esperanto word meaning “will soar” to avoid antisemitic persecution.In his native Hungary.

View image in fullscreen
Demonstrators march in support of Esperanto, Strasbourg, France, 2004. Photograph: EJ Baumeister Jr./Alamy

Zamenhof died in 1917, but his growing movement exploded after World War I. In the shadow of the war meant to end all wars, people desperately hoped humanity would never again tolerate such intense violence, and Esperanto grew alongside the pacifist movement. In 1920, the newly formed League of Nations considered introducing Esperanto into schools in member countries. Thirteen nations, including India and Japan, supported the idea. But representatives from Brazil and France disagreed—worried, respectively, that it was a language for “ne’er-do-wells and communists” and that it would corrupt the “French genius.” Not long after, the proposal was dropped entirely.

Esperantists were not discouraged. In the early 1920s, the novelist and Esperanto enthusiast Upton Sinclair predicted that by mid-century, “9,995 people out of every 10,000” would be listening to the radio in Esperanto or a similar universal language. By the late 1920s, there were more than 40 regular Esperanto radio shows, ranging from language lessons to national news, broadcast from well over a dozen countries.

But Esperanto’s political roots eventually caught up with it. In 1937, Joseph Stalin—who had once dabbled in the language himself—turned against Esperanto and sent its speakers to gulags because of its internationalist appeal. During and shortly after the Spanish Civil War, General Francisco Franco’s regime also persecuted Esperantists for the language’s ties to anti-nationalism and anarchism. In Mein Kampf, Adolf Hitler described Esperanto as a Jewish conspiracy. The Nazis went on to ban teaching Esperanto in schools, dissolve all Esperanto organizations, and murder all three of Zamenhof’s children.

Though Esperanto never again became mainstream, the movement refused to die. During the Cold War, it flourished in the Soviet Union among young people in jeans who wanted to connect with speakers on the other side of the Iron Curtain, as well as among those who wanted to resist Western dominance. It also grew in Asian countries like China, which was working on a romanization effort to fight illiteracy and the challenge of typing characters in an increasingly digital world. Esperanto’s Roman letters were easier to read than Chinese characters, and had the added benefit of countering the growing reach of English. (The man behind pinyin, China’s official romanization system, was an Esperanto scholar.)

Then came the internet. Less than a year after Wikipedia launched, it started a network featuring articles written originally in Esperanto. Today, there are nearly 400,000 articles in the language—more than in Danish, Urdu, Uzbek, Greek, Thai, or Bulgarian. There are online Esperanto classes, Esperanto subreddits, and Esperanto YouTubers. In the UK, as Brexit led many Remainers to cling to signs of internationalism, Esperanto classes saw a noticeable increase in registrations. Crowds of new learners traveled to language intensives at a stately Tudor house known as the Esperanto House in the village of Barlaston, near Stoke-on-Trent—the center of England’s post-World War II Esperanto activity. Up the road in nearby Smallthorne, Britain’s first Esperanto pub, the Green Star—founded in the 1960s and named after the once widely recognized symbol that Esperantists around the world wore on their shirt collars—received a fresh wave of media attention.

There’s a pattern here: whenever the global order enters a new state of chaos, the movement sees a resurgence of interest—just enough to keep the cause from dying out. Its historical closeness to success gives the movement a sense of legitimacy. But it can also serve as an excuse—allowing believers to blame its failures on repression or bad luck, a fluke of history, rather than consider the possibility that the language itself might be the problem.The possibility that language alone may not be enough to bring about world peace is worth considering. As appealing as Esperanto’s inner idea might be, I found it hard to believe that simply understanding each other could overcome the worst of human politics.

While walking through Mendel University’s campus buildings on my way to one of many available breakout sessions, I was approached by Seyed “Amir” Javadi, an Iranian hotelier who now lives in Germany. “Come to my hotel!” he shouted in Esperanto, waving brochures at me. “Free for Esperantists! I cook! I teach dance classes!” To prove the last point, he grabbed me by the waist and firmly led me through a basic German waltz, counting – “unu, du, tri” – before breaking into an a cappella version of My Bonnie Lies Over the Ocean with changed lyrics: “Esperanto estas la lingvo por ni, por ni!” Esperanto is the language for us!

Amir’s hotel was in Esperanto City, also known as the village of Herzberg am Harz, in Lower Saxony. After several resident Esperantists pushed for it, the town council decided to officially embrace the language in 2006. Local officials started posting translations on street signs and offering classes in schools. Today, the town doesn’t seem too eager to highlight its connection to the international language (its tourism office tends to focus more on local castles and caves), but Herzberg has become almost legendary among some Esperantists. And it’s not the only place for speakers of the language: 80 miles east of Nantes, in France, the 44-acre estate of Kastelo Greziljono (GrĂ©sillon Castle) hosts regular Esperantist events and has been owned by the nonprofit Kulturdomo de Esperanto (Culture House of Esperanto) since 1951. When I spoke with one of the French leaders of the Esperanto Naturist Organisation, he told me that members would soon gather there for a whole week of “teaching Esperanto in the nude”.

Destinations like Herzberg and Greziljono show one of the main attractions of the modern Esperantist movement: the chance to travel the world cheaply. In the 1970s, the World Esperanto Youth Organisation started putting together a global contact list of Esperantists willing to host other speakers for free stays. Self-published as a booklet called Pasporta Servo, or Passport Service, it worked like an early version of online services like Couchsurfing or Warmshowers, and today it continues online as a full travel network for Esperantists.

Many of the younger millennial and Gen Z kongresanoj (“ano” means a member of a group, and the suffix -j makes any noun plural) I met at the congress were there largely because of the Pasporta Servo. Some were first drawn to the language and its inner idea, only to later realize the travel benefits; others had learned the language specifically to travel around. (On the Pasporta Servo website, the requirement to learn Esperanto isn’t mentioned until the last paragraph of its About Us page, under the heading “This can’t be true. What’s the catch?”.) At one language class in Brno, I asked a young German woman sitting next to me why she was learning Esperanto. Her cousin was fluent, she said, and together they had already traveled across Europe using the Pasporta Servo. They planned to do Asia next.

Some Esperantists have fully embraced the wandering lifestyle. Among them is a 33-year-old Brazilian named Georgos Jurobola, whom I met when I arrived at the congress. “Kiel vi fartas?” (How are you?) he asked me with a high five as I approached the check-in desk. Tall, confident, and a bit messy, he had a relaxed, hippy-like style and a disarming smile that put me at ease as I stumbled through my first Esperanto conversations. In those talks, much more experienced speakers than me expressed surprise that I had come all the way from the US, and then shared fond memories of their own travels through the country.

I came to learn that charming and calming attendees was Jurobola’s official role.In exchange for volunteering as a greeter at these events, he got free lodging and connections to Esperanto speakers abroad. He had been traveling nonstop since 2019. Last year, he traveled through Africa after volunteering at the congress in Tanzania, and after Brno, he planned to hitchhike around Europe, staying with other speakers. “I am completely nomadic,” he told me. “When I arrive in a new place, I write to Esperanto speakers, and immediately I have friends.”

This would have seemed unrealistic to me, except that I also spent a formative part of my youth as a voluntary wanderer. I saw firsthand how willing strangers were to host me, based on nothing more than a shared passion for a type of music or for particularly risky ways of traveling. But while that world could sometimes feel competitive and almost aggressive, Esperanto speakers like Jurobola were committed to a vague vision of peace. “Let’s use Esperanto as a tool for prosperity, for hope,” he told me. “And also to change the idea that some people are better than others. That’s a terrible idea.”

Though they rarely say it outright, enthusiasts like Jurobola are essentially embracing a branch of Esperanto thought called Raƭmismo. This ideology emerged at a 1980 youth congress in the Finnish city of Rauma, where a group of just under 100 signatories approved the Rauma Manifesto. It stated that Esperanto was having an “identity crisis” and that it was time to stop trying to make it an official language anywhere. The signatories even dismissed many of what they saw as the main beliefs of finvenkismo—such as “the English language is our enemy” and “the UN must adopt Esperanto”—as “myths.” Instead, they suggested that the language should be seen as a tool for building community and declared that they “viewed Esperanto as belonging to a self-chosen diaspora linguistic minority”—in other words, as a subculture.

Those who believed in finvenkismo looked down on Raƭmismo. But at last year’s congress, it seemed its followers had won. Among the most crowded sessions I attended were those held by the Philatelic Esperanto League and the International Federation of Esperanto Railwaymen (the latter included a PowerPoint presentation on historic Czech train routes and architectural plans for Brno’s future train station). Other lighthearted events—like a football match between young Esperanto speakers and a local Brno club team, and a trip to a nearby winery—were also lively. And although I didn’t take up the naturist recruiter’s offer for a swimming trip promoted at the Movement Fair, about 20 Esperanto nudists briefly left the congress, squeezed into a tram, and traveled half an hour to a nude beach. The once-militant politics of the anarchists and trade unionists seemed to have largely given way to niche hobbyists and feel-good socializers.

One of the leaders of the Esperanto Naturist Organization was a lively Frenchman named Thierry Spanjaard. Recently retired from cybersecurity, he first learned about Esperanto from his grandfather, a World War I veteran turned pacifist, and started learning it about twenty years ago after taking a class in Marseille. I asked him what, if anything, Esperanto had to do with naturism. “The official definition of ‘naturism’ is respect for yourself, respect for others, and respect for nature, through practicing nudity with other people,” he said, almost pitying me for not knowing. “What is Esperanto? Respect for other people and other cultures through a common, neutral language.”

I wondered what the movement’s earlier members—who self-published, went on strike, and fought Nazis—would have thought of his definition. But when I asked Spanjaard about the criticism,When faced with criticism of the movement, he practically rolled his eyes. He said he wasn’t too worried about finvenkismo. In fact, he didn’t think many people truly believed it would happen, at least not in their lifetimes. He had much more modest and realistic expectations of what the language could offer: “It’s fun. I meet interesting people. It’s a way to travel.” If that’s the goal, he said, “I’m perfectly happy.”

After the third day, I noticed how Esperantists seemed to treat joy as non-negotiable—a necessary balance to the movement’s more political side, which can sometimes come across as self-righteous. Humphrey Tonkin, the former president of the Universal Esperanto Association and something of a celebrity in this world, put it more simply to me: “If you’re part of the English-speaking peace movement, what are you actually doing?” he asked. “You talk about peace. You talk about it very seriously. In fact, you probably talk about it so seriously that you bore people to death.”

I was starting to see the appeal of that view. I could understand that fighting for a cause shouldn’t, as the Russian anarchist Emma Goldman once said, “demand the denial of life and joy.” But even as an outsider, I felt frustrated—almost annoyed—by Esperanto’s apparent abandonment of its once grand and clear political ambitions.

Still, I managed to find traces of the older spirit. Late one morning, a large group of us crowded into a classroom for a presentation on the Esperantist pacifist movement in the war-torn Democratic Republic of the Congo (DRC). A last-minute visa issue had kept the presenter from entering Czechia, so Espoir Ngoma Kasati, a 28-year-old Esperanto activist and teacher from the DRC, stepped in to take his place.

Esperanto has deep roots in Africa. The language first reached the continent in the early 20th century and became popular during the postcolonial era as a politically neutral alternative to the still-dominant languages of European colonizers. An Esperantist from Germany who stopped by the gathering noted that none of the African attendees were “more than 35 years old.” The language seemed to have a special appeal for the first generation of post-independence Africans, who hoped to end linguistic division and conflict across the continent.

In the DRC, local Esperantists had partnered with Catholic missionaries and international aid workers to help support orphaned children. Their use of Esperanto was practical: the DRC is one of the most linguistically diverse countries in the world. International volunteers didn’t share a common language either, and Esperanto was relatively quick and easy to learn.

“Esperanto is good for Africa because it is not a colonial language,” Kasati told me. “Esperanto belongs to everyone. That is the gift Zamenhof gave to all of humanity.” Kasati believed Esperanto was a necessary foundation for the kind of “mutual understanding” that might one day lead to peace.

A few powerful institutions have been playing the long game with the language’s potential for soft power. The Chinese government, which once strongly promoted Esperanto, still shows up at each year’s congress. A cheerful display called Mutual Learning Between Civilizations: Cultural Exchanges Between China and the Czech Republic lined the main hallway of the congress’s central building.

The Catholic Church has also kept an interest in Esperanto. The Vatican approved Esperanto for liturgical use decades ago, and Radio Vaticana still publishes news and papal updates in Esperanto online three times a week. Priests adopted the language early on, hoping it could help them reach potential believers more easily than Latin. The International Union of Catholic Esperantists (Internacia Katolika Unuiĝo Esperantista, or IKUE) was founded in 1910 with support from the Vatican. Among the IKUE’s…One of the earliest members was Titus Brandsma, a Dutch friar who helped write an ecclesiastical Esperanto dictionary. He was part of the resistance during World War II, captured by the Nazis in 1941, and sent to Dachau. There, he was subjected to medical experiments before being killed by lethal injection. Four years ago, the church made him a saint.

The IKUE’s main event at the congress was a mass held on Brandsma’s feast day. It took place in a small but beautiful 18th-century chapel attached to a 13th-century monastery, tucked away in the old, tangled city center. Inside, the arched ceiling was painted with faded heavenly scenes. As a non-practicing Catholic, I shyly took a seat in the back.

From the altar, the priest—introduced by a fellow clergyman as being el Ĉinio, or from China—read the scriptures, blessed the Eucharist, and invited us to interƝanĝi the sign of paco (exchange the sign of peace). I realized that the whole experience—fumbling through hymns in a centuries-old Czech church, at a mass given in Esperanto by a Chinese priest on the feast day of an Esperantist saint who fought the Nazis—would likely be one of the strangest moments of my life. But at the time, what struck me most was how normal it felt. The mass, by design, was familiar to everyone there. Like the language it was spoken in, the ritual was formulaic, even dull. And in that steady, dutiful repetition, I was moved by the patient sincerity of it all—and by a sense that these believers were quietly building, even in small numbers, the kind of unity the language was meant to create. As an impostor—a fake Catholic and a fake Esperantist—I felt a pang of envy.

[View image in fullscreen]

This article first appeared in Harper’s magazine and was supported by the Matthew Power Literary Reporting Award.

The Long Read magazine summer edition
AI in the classroom, vending machines in the canteen, homeless people in the library, no one in the pub. Surprising stories from our strange new world in the new edition of the Long Read magazine.
[Buy your copy here]
[Listen to our podcasts here]
[Sign up to the Long Read weekly email here]

Frequently Asked Questions
Here is a list of FAQs about the unique intersection of nudists peace activists and budget travelers who are keeping the Esperanto dream alive

BeginnerLevel Questions

1 What does Esperanto have to do with nudists and peace activists
Esperanto was created to promote world peace and international understanding Nudists and peace activists often find Esperantos goal of breaking down language barriers a perfect match for their values

2 Are there actually Esperantospeaking nudist beaches or resorts
Yes The most famous is the Renkontio de Esperantistaj Nudistoj often held at naturist camps in Europe There are also informal gatherings at clothingoptional beaches where people agree to speak only Esperanto for the weekend

3 How can I learn Esperanto if Im on a tight budget
Its very easy The Duolingo course is free the Lernu website offers free lessons and you can find free PDFs of textbooks online Many Esperanto speakers also offer free language exchanges via video calls

4 Do you really need to be a nudist to speak Esperanto with peace activists
Absolutely not While some groups mix naturism and Esperanto most Esperanto events are fully clothed The nudist connection is just one niche but its a very welcoming one if youre interested in both

5 Whats a Pasporta Servo and how does it help budget travelers
Its a free directory of Esperanto speakers who offer free accommodation to other Esperantists You sleep on their couch or in a spare room meet locals and practice the language Its perfect for budget travelers and a core part of the Esperanto dream

6 Is Esperanto actually useful for travel or is it just a hobby
Its surprisingly useful With Pasporta Servo you get free places to stay worldwide In over 100 countries you can find local Esperanto clubs to show you around For budget travelers its a free builtin social network

AdvancedLevel Questions