This CSS code sets up styles for a smooth scrolling library called Lenis. It ensures the page height adjusts automatically and controls overflow behavior when scrolling is stopped. It also defines custom font faces for the “Guardian Headline Full” font family, including various weights and styles (like light, regular, medium, and semibold, each with normal and italic versions), loading them from specific web addresses in different file formats.@font-face {
font-family: Guardian Headline Full;
src: url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-SemiboldItalic.woff2) format(“woff2”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-SemiboldItalic.woff) format(“woff”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-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/noalts-not-hinted/GHGuardianHeadline-Bold.woff2) format(“woff2”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Bold.woff) format(“woff”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Bold.ttf) format(“truetype”);
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: Guardian Headline Full;
src: url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BoldItalic.woff2) format(“woff2”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BoldItalic.woff) format(“woff”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BoldItalic.ttf) format(“truetype”);
font-weight: 700;
font-style: italic;
}
@font-face {
font-family: Guardian Headline Full;
src: url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Black.woff2) format(“woff2”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Black.woff) format(“woff”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Black.ttf) format(“truetype”);
font-weight: 900;
font-style: normal;
}
@font-face {
font-family: Guardian Headline Full;
src: url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BlackItalic.woff2) format(“woff2”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BlackItalic.woff) format(“woff”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BlackItalic.ttf) format(“truetype”);
font-weight: 900;
font-style: italic;
}
@font-face {
font-family: Guardian Titlepiece;
src: url(https://assets.guim.co.uk/static/frontend/fonts/guardian-titlepiece/noalts-not-hinted/GTGuardianTitlepiece-Bold.woff2) format(“woff2”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-titlepiece/noalts-not-hinted/GTGuardianTitlepiece-Bold.woff) format(“woff”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-titlepiece/noalts-not-hinted/GTGuardianTitlepiece-Bold.ttf) format(“truetype”);
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: Guardian Headline Full;
src: url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Light.woff2) format(“woff2”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Light.woff) format(“woff”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-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/noalts-not-hinted/GHGuardianHeadline-LightItalic.woff2) format(“woff2”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-LightItalic.woff) format(“woff”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-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/noalts-not-hinted/GHGuardianHeadline-Regular.woff2) format(“woff2”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Regular.woff) format(“woff”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Regular.ttf) format(“truetype”);
font-weight: 400;
font-style: normal;
}The Guardian Headline Full font family includes several styles, each available in multiple formats. The regular style has a font-weight of 400 and a normal font-style, with files in WOFF, WOFF2, and TrueType formats. The italic version also has a weight of 400 but with an italic style. The medium weight (500) comes in both normal and italic styles. Similarly, the semibold (600) and bold (700) weights are available in normal and italic variations. The black weight is provided in WOFF2 format.@font-face {
font-family: Guardian Headline Full;
src: url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Black.woff2) format(“woff2”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Black.woff) format(“woff”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Black.ttf) format(“truetype”);
font-weight: 900;
font-style: normal;
}
@font-face {
font-family: Guardian Headline Full;
src: url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BlackItalic.woff2) format(“woff2”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BlackItalic.woff) format(“woff”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BlackItalic.ttf) format(“truetype”);
font-weight: 900;
font-style: italic;
}
@font-face {
font-family: Guardian Titlepiece;
src: url(https://assets.guim.co.uk/static/frontend/fonts/guardian-titlepiece/noalts-not-hinted/GTGuardianTitlepiece-Bold.woff2) format(“woff2”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-titlepiece/noalts-not-hinted/GTGuardianTitlepiece-Bold.woff) format(“woff”),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-titlepiece/noalts-not-hinted/GTGuardianTitlepiece-Bold.ttf) format(“truetype”);
font-weight: 700;
font-style: normal;
}
#article-body>div .content–interactive-grid,
.content–interactive>div .content–interactive-grid,
#comment-body .content–interactive-grid,
[data-gu-name=body] .content–interactive-grid,
#feature-body .content–interactive-grid {
grid-column-gap: 0px;
grid-template-columns: 100%;
grid-template-areas: “media” “title” “headline” “standfirst” “lines” “meta” “body”;
}
@media (min-width: 30em) {
#article-body>div .content–interactive-grid figure.element–immersive figcaption,
.content–interactive>div .content–interactive-grid figure.element–immersive figcaption,
#comment-body .content–interactive-grid figure.element–immersive figcaption,
[data-gu-name=body] .content–interactive-grid figure.element–immersive figcaption,
#feature-body .content–interactive-grid figure.element–immersive figcaption {
padding: 0 20px;
max-width: 620px;
}
}
@media (min-width: 46.25em) {
#article-body>div .content–interactive-grid,
.content–interactive>div .content–interactive-grid,
#comment-body .content–interactive-grid,
[data-gu-name=body] .content–interactive-grid,
#feature-body .content–interactive-grid {
grid-template-columns: 100%;
grid-column-gap: 10px;
grid-template-areas: “title” “headline” “standfirst” “media” “lines” “meta” “body”;
}
#article-body>div .content–interactive-grid #maincontent,
.content–interactive>div .content–interactive-grid #maincontent,
#comment-body .content–interactive-grid #maincontent,
[data-gu-name=body] .content–interactive-grid #maincontent,
#feature-body .content–interactive-grid #maincontent {
padding-right: 80px;
}
}
@media (min-width: 61.25em) {
#article-body>div .content–interactive-grid,
.content–interactive>div .content–interactive-grid,
#comment-body .content–interactive-grid,
[data-gu-name=body] .content–interactive-grid,
#feature-body .content–interactive-grid {
grid-template-columns: 620px 300px;
grid-template-areas: “title right-column” “headline right-column” “standfirst right-column” “media right-column” “lines right-column” “meta right-column” “body right-column” “. right-column”;
}
#article-body>div .content–interactive-grid #maincontent,
.content–interactive>div .content–interactive-grid #maincontent,
#comment-body .content–interactive-grid #maincontent,
[data-gu-name=body] .content–interactive-grid #maincontent,
#feature-body .content–interactive-grid #maincontent {
padding-right: unset;
}
}
@media (min-width: 71.25em) {
#article-body>div .content–interactive-grid,
.content–interactive>div .content–interactive-grid,
#comment-body .content–interactive-grid,
[data-gu-name=body] .content–interactive-grid,
#feature-body .content–interactive-grid {
grid-template-columns: 140px 1px 620px 300px;
grid-template-areas: “title border headline right-column” “. border standfirst right-column” “. border media right-column” “. border body right-column” “. border . right-column”;
}
#article-body>div .content–interactive-grid .content__standfirst,
.content–interactive>div .content–interactive-grid .content__standfirst,
#comment-body .content–interactive-grid .content__standfirst,
[data-gu-name=body] .content–interactive-grid .content__standfirst,
#feature-body .content–interactive-grid .content__standfirst {
/ Rule continues here /
}
}The CSS code sets specific styles for various elements. For interactive grid content, it removes bottom padding from the standfirst section and adjusts caption padding for immersive figures. It also positions lines and metadata within a grid layout, setting their height and margins.
On larger screens, the grid uses defined column widths. For mobile devices, it modifies typography in article headers, making section names capitalized and adjusting author name styles. It also ensures images display correctly and manages spacing around embedded elements.
A scroll tooltip is styled with a gradient background and positioned at the bottom of the viewport, while sticky captions are given a fixed height and absolute positioning.The sticky captions bar is positioned at the bottom left of the screen with a dark background. It uses a flexible layout to space out its contents and includes padding. On larger screens, it adds a left border and adjusts its left margin.
Inside, a caption wrapper contains the captions. Each caption uses a flex display with small gaps between items. Icons within the captions have fixed dimensions and a specific fill color. Caption text uses a particular font, is truncated with an ellipsis when needed, and matches the article’s text color.
A toggle button for the captions is transparent and borderless, positioned at the bottom of the bar. Its icon rotates and scales smoothly on hover. When expanded, the captions bar adjusts its height, displays captions normally without truncation, and changes the toggle icon’s rotation.
For iOS and Android devices, caption paragraph margins are removed, and specific span elements are shown or hidden. When expanded on these devices, the first caption paragraph floats left, and the second is displayed as a block. On iOS, the sticky bar’s bottom position is also adjusted.
CSS custom properties (CSS variables) define a dark color scheme for various article elements like the background, text, links, and accents. These variables are set for the root and article elements, with some adjustments for hover states.
A media query applies a dark color scheme preference, setting specific colors for elements like blockquotes and backgrounds unless a light scheme is explicitly chosen.
The article header uses a grid layout to arrange areas like media, title, and body. A horizontal class adds top margin and bottom padding. The main body content has negative side margins on smaller screens, which are removed on larger ones. Specific elements within the body, such as paragraphs, lists, blockquotes, and headings, are targeted for styling.For elements within the article body, such as paragraphs, lists, blockquotes, headings, video containers, YouTube components, and pullquotes, add a padding of 0 10px.
On screens wider than 30em, increase this padding to 0 20px for the same elements.
On screens wider than 61.25em, remove the padding entirely for these elements.
For ad slot containers within the body, add a margin of 0 20px on screens wider than 46.25em. Remove this margin on screens wider than 61.25em.
Set the article background color to #121212. On screens narrower than 61.25em, prevent horizontal overflow on the article.
Remove padding from atomic elements and hide elements with the border role within the article.
Position elements like the standfirst, paragraphs, blockquotes, lists, inline figures, interactive figures, headings, horizontal rules, video containers, ad slots, YouTube components, and pullquotes relatively within the article.
On screens wider than 71.25em, apply a `:before` pseudo-element to these same positioned elements.The CSS code sets styles for various elements within an article. It adds a vertical line before certain elements like ad slots, YouTube blocks, pull quotes, and paragraphs, using a 1px wide, #606060 colored line positioned to the left. Horizontal rules (`hr`) are made visible and given a background color in interactive content columns.
For larger screens (over 71.25em wide), adjustments are made to the positioning and height of these lines. The main media area, including elements with `data-gu-name=media`, is styled to span specific grid areas, with margins and gradients applied responsively. On wider screens, the gradient overlay is hidden and captions within media are not displayed.
Headlines are adjusted with negative margins on smaller screens and given specific widths and positioning on larger screens, ensuring proper layout across different device sizes.The headline section within an article has no padding. The main headline uses a specific font family, is 38px in size with 115% line height, displays as a flex column, and is colored white. On larger screens (over 61.25em), the font size increases to 50px and the flex display is removed. On even larger screens (over 71.25em), a top margin of 158px is added. The spans inside the headline are set to display as block elements with a maximum content width, but this block display is removed on larger screens (over 61.25em).
The standfirst section (which includes the article summary and byline) has a maximum width of 460px. Paragraphs within it are set to 90% width. On screens smaller than 71.25em, this section uses a flexbox layout in a reversed column order, taking up full height and justifying content with space between. The byline and author metadata are hidden within this section.
A top border and 4px of top padding are added to the article header or title area inside the standfirst. This area, along with any highlighted kicker text, also has 2px of bottom padding.The CSS code sets padding to zero for specific elements within article headers and standfirst sections. It also defines styles for links within these sections, including font size, family, color, and spacing. Additionally, it hides any span elements that directly follow these links. For larger screens, the code adjusts margins and ensures consistent padding for nested elements.This CSS code sets styles for article labels and standfirst sections. It removes padding from certain label containers and defines link styles for labels within article headers, titles, and kicker highlights. These links use a specific font, color, and have small padding. Any span elements following these links are hidden. For medium screens and above, the standfirst section gets bottom padding, and on larger screens, it has a maximum width and paragraph styling.The CSS code sets styles for article elements, including standfirst sections and metadata. It defines text colors, font sizes, line heights, and margins, with specific adjustments for larger screens. Elements like author bylines and social media links have customized padding and borders. Some sections are hidden on certain devices, while others have opacity effects that fade in over time.Elements with the classes `ty.fade-in`, `.article #article-body>div .reduce-opacity.fade-in`, `.article #feature-body>div .reduce-opacity.fade-in`, and `.article .content–interactive>div .reduce-opacity.fade-in` have full opacity.
Blockquotes within `#article-body>div`, `#feature-body>div`, or `.content–interactive>div` that have the class `.reduce-opacity` are set to 50% opacity.
Blockquotes within those same containers have a width of 90%, no margin, and 14px of bottom padding. Their `:before` pseudo-elements have no content.
Paragraphs and emphasized text within those blockquotes use a normal font style, specific font families, a line height of 1.15, a font size of 24px, and a medium font weight. On screens wider than 61.25em, this font size increases to 28px.
The paragraph text within these blockquotes uses a custom color variable (`–block-quote-fill`), defaulting to `#a1845c`. The emphasized text is white.
Interactive inline figures have a background color set by a custom variable (`–article-background`), defaulting to `#121212`.
Captions for inline, showcase, and immersive figures are displayed as blocks with specific margins, padding, and a light gray color (`#dcdcdc`). On larger screens (71.25em and above) for users who have not indicated a preference for reduced motion, captions within interactive main columns for showcase and immersive figures are positioned absolutely.
Immersive figures have their captions hidden by default (invisible, with no width, padding, or margin). However, if the user prefers reduced motion, these captions become visible.This appears to be CSS code for styling article elements, particularly figures and captions, with responsive design considerations for different screen sizes and motion preferences. The code includes media queries that adjust padding, widths, and layout based on viewport dimensions and whether the user prefers reduced motion. It also contains specific styling for inline and immersive figure elements, as well as adjustments for iOS and Android devices..feature__body,
body.android .article__header,
body.android .article__body,
body.android .feature__header,
body.android .feature__body {
background-color: var(–article-background, #121212);
position: relative;
}
body.ios .article__header figure.element–immersive,
body.ios .article__body figure.element–immersive,
body.ios .feature__header figure.element–immersive,
body.ios .feature__body figure.element–immersive,
body.android .article__header figure.element–immersive,
body.android .article__body figure.element–immersive,
body.android .feature__header figure.element–immersive,
body.android .feature__body figure.element–immersive {
margin: 0 -12px !important;
}
body.ios .article__header figure.element–immersive img,
body.ios .article__body figure.element–immersive img,
body.ios .feature__header figure.element–immersive img,
body.ios .feature__body figure.element–immersive img,
body.android .article__header figure.element–immersive img,
body.android .article__body figure.element–immersive img,
body.android .feature__header figure.element–immersive img,
body.android .feature__body figure.element–immersive img {
width: auto !important;
}
body.ios #article-header h1#headline,
body.ios #feature-header h1#headline,
body.android #article-header h1#headline,
body.android #feature-header h1#headline {
font-family: Guardian Headline Full, Guardian Egyptian Web, Georgia, serif;
font-size: 50px;
line-height: 115%;
display: flex;
flex-direction: column;
color: #fff;
padding: 0 12px;
z-index: 1;
}
body.ios #article-header h1#headline span,
body.ios #feature-header h1#headline span,
body.android #article-header h1#headline span,
body.android #feature-header h1#headline span {
display: block;
width: -moz-max-content;
width: max-content;
z-index: 1;
}
body.ios #article-header h1#headline span:nth-child(3),
body.ios #feature-header h1#headline span:nth-child(3),
body.android #article-header h1#headline span:nth-child(3),
body.android #feature-header h1#headline span:nth-child(3) {
translate: none;
rotate: none;
scale: none;
transform: translate(0);
}
body.ios #article-header h1#headline span:nth-child(1),
body.ios #article-header h1#headline span:nth-child(4),
body.ios #feature-header h1#headline span:nth-child(1),
body.ios #feature-header h1#headline span:nth-child(4),
body.android #article-header h1#headline span:nth-child(1),
body.android #article-header h1#headline span:nth-child(4),
body.android #feature-header h1#headline span:nth-child(1),
body.android #feature-header h1#headline span:nth-child(4) {
margin-left: auto;
}
body.ios #article-header .standfirst,
body.ios #feature-header .standfirst,
body.android #article-header .standfirst,
body.android #feature-header .standfirst {
background-color: transparent !important;
}
body.ios #article-header #meta,
body.ios #feature-header #meta,
body.android #article-header #meta,
body.android #feature-header #meta {
border-top: 1px solid #606060;
margin-top: 20px;
}
body.ios #article-header .article-kicker,
body.ios #feature-header .article-kicker,
body.android #article-header .article-kicker,
body.android #feature-header .article-kicker {
display: none;
}
body.ios #article-header .article-kicker__highlight,
body.ios #feature-header .article-kicker__highlight,
body.android #article-header .article-kicker__highlight,
body.android #feature-header .article-kicker__highlight {
font-weight: 700;
font-size: 14px;
padding-left: 12px;
}
body.ios #article-header .article-kicker__highlight > a,
body.ios #feature-header .article-kicker__highlight > a,
body.android #article-header .article-kicker__highlight > a,
body.android #feature-header .article-kicker__highlight > a {
font-size: 14px;
background-image: none !important;
}
body.ios #article-header #main-media:after,
body.ios #feature-header #main-media:after,
body.android #article-header #main-media:after,
body.android #feature-header #main-media:after {
left: 0;
}
body.ios #article-header .keyline-4,
body.ios #feature-header .keyline-4,
body.android #article-header .keyline-4,
body.android #feature-header .keyline-4 {
padding-top: 2px !important;
}
@media (min-width: 46.25em) {
body.ios #article-header,
body.ios #feature-header,
body.android #article-header,
body.android #feature-header {
grid-template-columns: 100%;
grid-column-gap: 0;
}
}The CSS defines styles for article and feature content on iOS and Android devices. Links within paragraphs are styled with a light gray color and bottom border. Blockquotes have their default quote marks hidden and replaced with a custom SVG icon. Image elements and their containers are set to have transparent backgrounds, with specific adjustments for captions, including a fixed width and responsive padding for users who prefer reduced motion.For iOS and Android devices, the caption text within article and feature body images is styled with a light gray color (#dcdcdc), relative positioning, and specific padding. Image credits are hidden in these sections.
Horizontal elements within the article and feature bodies have their margins adjusted. On screens smaller than 46.24em, these horizontal elements expand to the full viewport width. For every second section within a horizontal element’s inner container, the figure caption receives a top margin.
Interactive figure elements have a transparent background. For standard (non-immersive) image figures, the caption width is reset, margins are adjusted, and the caption text gets less top padding. A rotated decorative element is added before this caption text.
In dark mode, various header, body, and meta elements are styled for iOS and Android.How do you move a sedated rhino? Can you give a dormouse medication? What do you do for a lion with an unusually small ear canal? And how does the world’s longest venomous snake react to treatment?
The answer to that last question was “not easily,” as Guardian photographer David Levene found out over a year spent documenting complex veterinary procedures on some of the planet’s most endangered animals.
When Levene photographed a king cobra just after it received an anesthetic, the snake—affectionately named King Arthur—gave him its own version of a hairdryer blast. “I was the first person he saw after he’d been jabbed in the tail, and he reared up, opened his mouth, and started spitting at me. I was behind glass, but I told him, ‘It wasn’t me!'” Levene recalls.
Large, dangerous, small, or incredibly rare—the exotic and native animals cared for by the Zoological Society of London (ZSL) at its London and Whipsnade zoos present unique challenges for the charity’s veterinary team.
“On the second day of the project, I found myself face-to-face with a lion—it was definitely a baptism by fire,” says Levene.
The Asiatic lion, Bhanu, had chronic recurring ear infections that led to an unusually narrow ear canal. He needed a general anesthetic for a full examination. While anesthesia is always a last resort, Bhanu handled it well. While he was under, the vets performed as many checks as possible, including inspecting his teeth—which are vital for a carnivore’s health and well-being.
The vets treating animals at Whipsnade and London are a specialized team. Only a few British zoos employ their own in-house veterinarians. ZSL, which celebrates its 200th anniversary this spring, has five vets, six nurses, a pathologist, a pathology technician, a molecular diagnostician, and a microbiologist.
Over its two centuries, ZSL veterinarians have played pioneering roles in animal health and welfare.The earliest written records of veterinary care at the zoo come from the journals of its first “medical attendant,” Charles Spooner. He treated a young lion cub named Nelson, who was suffering from mange, teething problems, and a potentially fatal ulcer on his lower jaw. Spooner lanced the ulcer and applied a daily zinc sulfate solution, and the cub recovered.
In 1923, herpetologist Joan Beauchamp Procter became the first female curator of reptiles and amphibians. She revolutionized their care with an innovative reptile house. Later, in 1951, Oliver Graham-Jones was appointed as Britain’s first dedicated zoo veterinarian. He invented the handheld dart gun, allowing for the safe remote administration of anesthetics.
Photographer Levene’s year at the zoos began when he visited London to photograph an art exhibition based on animal droppings. Near the artist’s studio was the zoo’s veterinary hospital. “Instantly I thought, ‘Wow, I need to see what’s inside,'” says Levene, who had wanted to be a vet as a child. After months of negotiations, he was granted unprecedented access in 2025.
It takes over a dozen vets, nurses, and keepers to move a sedated rhino into position for surgery, as anesthetized animals don’t always collapse in a convenient spot. Security was also on high alert when Kiburi, the 177kg, 21-year-old patriarch of London Zoo’s western lowland gorilla troop, was sedated for a CT scan and full health check.
While all operations require precision, the most delicate procedures are especially challenging. For instance, Levene observed as nine dormice—part of a captive breeding program for UK conservation—were weighed and anesthetized using tiny face masks so their health and growth could be meticulously monitored.
Although Levene was drawn to the drama of treating large, charismatic animals, his favorite photo captures an intricate procedure on a smaller scale: four medical staff tending to a mountain chicken frog. This critically endangered species, of which only 21 were found in the wild in 2023, is part of a recovery program. ZSL is studying its wild challenges (primarily a deadly fungal disease) while breeding it in captivity. This particular frog was undergoing gallbladder surgery for stones. “I love the intent on their faces,” says Levene. “It shows the level of care given to creatures large and small. They are all equal in the vets’ eyes.”
Throughout his year behind the scenes, Levene was impressed by “the passion and professionalism in animal care. I was also struck by the steely focus that came over people. The vets, nurses, and keepers were lighthearted and joked a lot, but as soon as we were in a surgical setting, they became laser-focused. They were so concerned with the animal’s welfare that it was almost uncomfortable for an observer, because you didn’t want to get in the way.”Levene had to balance his need for close access with the urgency of emergency procedures and the safety requirements of working with dangerous wild animals. “I was lucky that they trusted me to allow me to be that close,” he says, recalling the moment he photographed the vets gathered around Bhanu the lion’s mouth, with one vet using a phone—covered in big cat stickers, of course—to better see its gums.
While the vets maintain a professional detachment when treating animal patients, the keepers develop a more intimate relationship. “The keepers live with the animals every day and get to know them really well,” says Levene. “They are still very professional, but a procedure is much more emotional for them. When a dangerous animal is under anaesthetic, they take the opportunity to be all over them—to cuddle these animals and smell them.”
After taking 50,000 photos of various procedures over the year, Levene felt a sense of wonder at being so close to these incredible animals and witnessing the dedication of the professionals who care for them. The texture of a lion’s tongue, the weight of its paw—these are unforgettable encounters. At one point, Levene was persuaded to put down his camera and gently hold a sedated lion’s paw. How was it? “It was biiiiig,” he says. “It was a big unit of a paw. A good two hands’ worth.”
Inside the veterinary hospital at London Zoo, each day begins with a meeting, shared by video link with the team at Whipsnade, to review the schedule of treatments and procedures for the day ahead.
At 8 a.m. sharp, the entire Wildlife Health Services team gathers in the coffee room to go over the day’s tasks, which typically include inpatient procedures for more serious health concerns, as well as inspections and medication for animals with minor ailments. Treatments for more serious conditions, or those involving dangerous animals, require a general anaesthetic. These can sometimes be handled in the treatment room with a vet and a nurse. More complex procedures might require multiple in-house vets, external specialist teams, three or four nurses, and a supporting cast of zookeepers and other staff, often taking place within the animal enclosures rather than the vet hospital.
Anaesthesia is routinely used for welfare and safety reasons, and to reduce stress on the animals. For animals trained to offer their tail to the nurse, anaesthetising can be a straightforward process with a simple injection through a protected opening in the enclosure. Very large, dangerous, or stubborn patients might require a different approach, such as a dart fired from an air rifle.
After a procedure where the animal is sedated, a “reversal” drug is sometimes used to gently bring them back to consciousness.Gaysha, a zebra at London Zoo, has given birth to two litters since arriving. To protect the genetic diversity of the breeding program, she is now being implanted with a contraceptive. In another part of the zoo, a zebra named Spot has his heart rate monitored by vet nurse George Bardsley.
Harriet Woodhall is the new veterinary resident at ZSL, embarking on a three-year training program designed to launch the careers of the few who choose zoological care as their veterinary specialty. While many vets dream of becoming a zoo vet, only a handful achieve it.
“I’ve had to upheave my life, and my partner’s life!” says Woodhall. “If you’re not willing to make the sacrifices in pay, time off, and life outside of work, then I can understand why people give it up.”
Like many before her, Woodhall gained her initial experience working almost exclusively with domestic cats and dogs in small-animal practice—where about 80% of UK vets work—before moving on to exotic animals like reptiles and amphibians. This foundational work is essential, building the surgical and clinical skills needed for the vast array of species and physiologies found in zoos.
As one ZSL veterinarian explained, “It’s very rare that someone will just graduate and go straight into a zoo. You need to be spaying pets, doing routine surgeries, caesareans, intestinal surgery, so you’ve got good foundational knowledge and skills.”
Woodhall knew from a young age that she wanted to work in zoos. “Whipsnade wasn’t our closest zoo, but it was the one that I would go to. I remember going a lot as a kid and seeing the changes over the years. I even remember the days when elephants were walking around the zoo and they had sea lions and all sorts. Going there inspired me to go into this field.”
In another area of ZSL’s work, Simon Spiro, the UK’s only full-time zoo pathologist—and possibly the only one in Europe—runs a vital pathology department. He is responsible for determining the cause of death for every animal that dies at London and Whipsnade zoos, both as a legal requirement and for transparency.
“It’s part of how we’re regulated and monitored, so people can be confident that animals aren’t dying for horrible reasons that no one would ever find out about,” says Spiro. His analyses also provide crucial feedback to the veterinary team, helping them verify diagnoses and improve care. For instance, while vets may presume an animal has cancer, it is only through pathology that the diagnosis is confirmed.You can’t be certain about the cause of death until you have the postmortem results. This allows us, in a way, to check our own work. It shows us what we got right and what we got wrong.
The work Spiro and his team do in the pathology and molecular diagnostics labs also supports many research programs. It helps track the spread of diseases that jump from animals to humans, advances our understanding of animal welfare, and informs government policy.
“You can’t perform all the investigations you might want on a living animal. These are rare creatures. We don’t know much about them, and we want to learn more about their anatomy and physiology.
“ZSL is a conservation organization, and conservation is fundamentally about preventing animals from dying. If you don’t understand why they’re dying, you can’t do that.”
Spiro (centre) and his colleague Matt Perkins conduct a postmortem on a porpoise found stranded in Cornwall. They are both part of ZSL’s Cetacean Strandings Investigation Programme.
‘The zoo was never originally intended to be a place of entertainment’: The importance of science and conservation
London Zoo isn’t just a zoo. It plays a major role in a global network of animal science and conservation. The Zoological Society of London (ZSL), which runs London and Whipsnade zoos, was founded 200 years ago by Sir Thomas Stamford Raffles “for the advancement of zoology and animal physiology.” That core mission remains true today.
“The zoo was started as a scientific organization to study animals,” says ZSL’s head vet, Amanda Guthrie. “It wasn’t originally intended to be open to the public. It wasn’t for several years until people realized they probably needed money to operate the zoo! Bringing in visitors would allow that. But the zoo was never intended to be a place of entertainment. It was primarily for the scientific study of animals, and it stayed that way.”
A mountain chicken frog undergoes an operation to remove its gallbladder. The procedure on the frog—which can grow up to 1kg—is a success. ‘I’ve done surgery on smaller animals,’ says head vet Amanda Guthrie (second left). ‘There’s nothing better than a giant frog.’ ZSL has been at the forefront of protecting and reintroducing this critically endangered species.
A scimitar-horned oryx is brought into a specially designed enclosure for basic health checks by the wildlife health team. Once declared extinct, the scimitar-horned oryx has now been reclassified as endangered.
ZSL contributes to scientific understanding and animal conservation in countless ways, including outreach, education, research, protection, preservation, and even reintroducing endangered species. It works with many partner organizations, both domestic and international, to advance knowledge about animal health and care. It runs a wildlife disease risk analysis initiative with Natural England and contributes data to the global Zoological Information Management System database, which tracks the health and welfare of thousands of species worldwide.
“We follow animals in the zoo from birth until death, we keep detailed records, and we do a full postmortem investigation when they die,” says Guthrie. “We understand every single aspect of their life. We get to learn new things every day, so the fulfilling and rewarding part of this job is contributing to the science and knowledge. In 30 years, someone can refer back to what we’ve discovered or described, and it will benefit those animals in the future.”
An anaesthetised hazel dormouse is given a health check. Dormouse numbers have fallen by 70% in Britain since 2000.This one will be released into a new woodland home.
Frequently Asked Questions
Of course Here is a list of FAQs about the book From caring for napping lions to treating spitting snakes a year with the vets at London Zoo
General Beginner Questions
Q What is this book about
A Its a nonfiction book that follows the veterinary team at ZSL London Zoo for a full year detailing their daily challenges from routine checkups to dramatic emergency surgeries on a huge variety of animals
Q Is it like a documentary or a TV show
A Yes its similar in spirit to shows like The Zoo or Supervet but in book form It offers a deeper more personal look behind the scenes with stories and details that TV cant always capture
Q Do I need to be a vet or animal expert to enjoy it
A Not at all The book is written for the general public The authors explain medical terms and animal behaviors in an engaging accessible way Its perfect for anyone curious about wildlife zoos or veterinary medicine
Q Are the stories sad Do animals die
A While the book is full of heartwarming and successful stories it also portrays the realistic challenges of zoo veterinary medicine There are emotional moments including illness and loss which are handled with great care and respect
Q What kind of animals are featured
A A massive range From big cats like lions and tigers to primates birds reptiles insects and even tiny frogs The diversity is a key part of the books appeal
Advanced Detailed Questions
Q What are some of the biggest medical challenges unique to zoo veterinary work
A The book highlights challenges like chemical restraint dealing with species where very little medical data exists and the difficulty of diagnosing an animal that cant tell you where it hurts
Q Does the book address the ethics of zoos and animal captivity
A Yes it touches on this important topic The vets perspective is presented through their dedication to providing exceptional welfare conservation breeding programs and the why behind their work to protect species
Q What was one of the most surprising or unusual cases mentioned
A The title hints at one treating a spitting snake