/* Source Serif 4 headings, Geist body and wordmark; monospace for code. */
html[data-typeface="source"]{--body-type:"Geist",Arial,sans-serif;--heading-type:"Source Serif 4",Georgia,serif}
html[data-typeface="source"] body{font-family:var(--body-type);font-kerning:normal;font-optical-sizing:auto;font-variant-ligatures:common-ligatures;font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
html[data-typeface="source"] body :is(h1,h2){font-family:var(--heading-type);font-weight:400;font-optical-sizing:auto;font-kerning:normal;font-variant-ligatures:common-ligatures;font-variant-numeric:lining-nums;font-synthesis:none;letter-spacing:-.025em;word-spacing:-.025em;line-height:1.08}
html[data-typeface="source"] body .en-hero h1{font-size:clamp(30.4px,9.28cqw,78.4px);line-height:1.02;text-wrap:balance}
html[data-typeface="source"] body .en-hero h1 em{font-family:inherit;font-style:italic;font-weight:400}
html[data-typeface="source"] body .section-heading h2{font-size:clamp(36px,4.5vw,64px);line-height:1.07}
html[data-typeface="source"] body .section-heading h2 em{font-family:inherit;font-style:italic}
html[data-typeface="source"] body .site-page-hero h1{font-family:var(--heading-type);font-size:clamp(48px,7.3vw,98px);font-weight:400;line-height:1.04;letter-spacing:-.025em;word-spacing:-.025em}
html[data-typeface="source"] body .en-brand .brand-wordmark{font-family:"Geist",Arial,sans-serif;font-weight:400;letter-spacing:-.03em}
html[data-typeface="source"] body .en-header .en-brand .brand-wordmark{color:var(--ink)}
html[data-typeface="source"] body .en-header .en-brand:is(:hover,:focus-visible) .brand-wordmark{color:var(--purple)}
html[data-typeface="source"] body :is(.label,.audience-index,.designer-footer .footer-top .label){font-family:var(--body-type);letter-spacing:.015em}
html[data-typeface="source"] body :is(.editorial-year>strong,.orbit-year,.poster-art>strong){font-family:var(--heading-type);font-weight:400;letter-spacing:-.03em}
html[data-typeface="source"] body .voice-card blockquote{font-family:var(--body-type)}
html[data-typeface="source"] body :is(.en-header nav,.en-header .nav-register,.en-header .explore-toggle){font-size:15px}
/* Programme entries remain a reading table: title, authors and affiliations are peers. */
html[data-typeface="source"] body .programme-table .presentation-title{font-family:var(--body-type);font-size:inherit;font-weight:400;line-height:inherit;letter-spacing:normal;word-spacing:normal;margin:0}
@media(max-width:479px){
 html[data-typeface="source"] body .en-hero h1{font-size:clamp(26.4px,9.28vw,46.4px);line-height:1.07}
 html[data-typeface="source"] body .section-heading h2{font-size:clamp(32px,9vw,43px)}
 html[data-typeface="source"] body .site-page-hero h1{font-size:clamp(42px,11.6vw,58px)}
}

/* Reading and interface elements use Geist; heading emphasis inherits serif. */
html[data-typeface="source"] body :is(a,p,button,summary,td,th,label,li,dt,dd,blockquote,strong,input,select,textarea,small){font-family:var(--body-type);font-optical-sizing:auto}
html[data-typeface="source"] body :is(code,kbd,samp,pre){font-family:"IBM Plex Mono",monospace;letter-spacing:normal;word-spacing:normal}
html[data-typeface="source"] body :is(.en-header nav,.en-header .nav-register,.en-header .explore-toggle){font-size:16px}
html[data-typeface="source"] body .satellite-study-caption h2{font-family:var(--heading-type)!important}

html[data-typeface="source"] body :is(h1,h2) :is(span,strong,em){font-family:var(--heading-type)}
html[data-typeface="source"] body :is(.en-brand .brand-wordmark,.en-brand .brand-wordmark>span){font-family:"Geist",Arial,sans-serif}
html[data-typeface="source"] body .designer-footer .brand-wordmark{font-size:16px;line-height:1;letter-spacing:-.025em}
html[data-typeface="source"] body :is(.label,.audience-index,.designer-footer .footer-top .label){font-family:var(--body-type)}
@media(max-width:600px){html[data-typeface="source"] body .designer-footer .brand-wordmark{font-size:14px}}

.header-identity{display:contents}
/* Keep mobile navigation in one scrollable panel with its close control visible. */
@media(max-width:960px){
 html[data-typeface="source"] body:has(.en-header.menu-open){overflow:hidden}
 html[data-typeface="source"] .en-header.menu-open{position:fixed;inset:0;height:100dvh;max-height:100dvh;display:grid;grid-template-columns:1fr auto;align-content:start;align-items:center;padding:0 var(--gutter) 24px;overflow-y:auto;overscroll-behavior:contain}
 html[data-typeface="source"] .en-header.menu-open>.header-identity{display:flex;align-items:center;justify-content:space-between;grid-column:1/-1;position:sticky;top:0;background:#fff;z-index:2;margin-inline:calc(-1 * var(--gutter));padding:16px var(--gutter)}
 html[data-typeface="source"] .en-header.menu-open nav{position:static;grid-column:1/-1;display:flex;padding:20px 0 24px;box-shadow:none}
 html[data-typeface="source"] .en-header.menu-open .explore-panel{grid-column:1/-1;max-height:none;overflow:visible;position:static}
}

/* Stacked header lockup, centred on the navigation row. */
html[data-typeface="source"] body .en-header .en-brand{font-size:14px;line-height:20px;align-self:center;display:inline-flex;align-items:center}
html[data-typeface="source"] body .en-header .en-brand .brand-wordmark{display:block;font-size:16px;font-weight:400;line-height:16px;letter-spacing:-.01em;white-space:nowrap}
html[data-typeface="source"] body .en-header .brand-wordmark>span{display:block}
@media(max-width:639px){html[data-typeface="source"] body .en-header{gap:16px}}

/* Only the two main heading levels use serif; smaller headings and numbers use Geist. */
html[data-typeface="source"] body :is(h3,h4,h5,h6,.big-number,.about-stats strong,.menu-feature strong){font-family:var(--body-type);letter-spacing:-.02em;word-spacing:normal;line-height:1.2}
html[data-typeface="source"] body :is(h3,h4,h5,h6) :is(span,strong,em){font-family:var(--body-type)}
html[data-typeface="source"] body .voice-card blockquote{font-weight:350}
html[data-typeface="source"] body .faq-list :is(summary,p){font-size:16px;line-height:1.6}

/* Thin Geist years in the homepage archive preview. */
html[data-typeface="source"] body #archive-preview .edition-card h3{font-weight:200}

/* Light Geist numerals for all About statistics. */
html[data-typeface="source"] body #about .about-stats strong{font-weight:200}
#about .about-stats>div:first-child{border-top-color:var(--purple)}

/* A quieter menu hierarchy; the feature title is an explicit serif exception. */
html[data-typeface="source"] body .explore-panel>div>a{padding-block:14px;border-bottom:1px solid var(--line)}
html[data-typeface="source"] body .explore-panel>div>a:last-child{border-bottom:0}
html[data-typeface="source"] body .explore-panel>div>a strong{font-weight:400;font-size:16px;line-height:1.35;letter-spacing:-.015em}
html[data-typeface="source"] body .explore-panel>div>a span{font-size:14px;line-height:1.55;margin-top:5px}
html[data-typeface="source"] body .explore-panel .label{font-weight:400;font-size:13px;letter-spacing:0}
html[data-typeface="source"] body .menu-feature strong{font-family:var(--heading-type);font-weight:400;font-size:clamp(32px,3vw,44px);line-height:1.06;letter-spacing:-.025em}
html[data-typeface="source"] body .en-header nav>:is(a:not(.nav-register),.explore-toggle):is(:hover,:focus-visible){color:var(--purple);text-decoration:none}
html[data-typeface="source"] body #team h3{font-family:var(--body-type);font-size:22px;font-weight:400;line-height:1.25}
html[data-typeface="source"] body #team .organiser-links a{border:0;text-decoration:none}

/* Homepage refinements use the shared tokens and responsive layouts. */
.satellite-teaser{border-left-color:var(--orange)}
html[data-typeface="source"] body .designer-footer .en-brand .brand-wordmark{color:#99959e}
html[data-typeface="source"] body .designer-footer .en-brand:is(:hover,:focus-visible) .brand-wordmark{color:var(--ink)}
.designer-footer .footer-future-link{display:block;width:fit-content;font-size:14px;line-height:1.5;margin-bottom:14px;color:#8a858e;cursor:default}
.edition-affiliation{display:inline-block;font-size:13px;line-height:1.5;margin-top:4px;opacity:.75}
#about{background-color:#f9f6fc;background-image:radial-gradient(ellipse at 8% 20%,#e9ddf580,transparent 60%),radial-gradient(ellipse at 95% 85%,#e8dcf570,transparent 62%),linear-gradient(135deg,#fdfbff,#f7f2fb)}
.audience-image.photo-tile{display:block;width:100%;padding:0;border:0;cursor:pointer}
.audience-grid article:is(:hover,:focus-within) .photo-tile.is-ready canvas,.audience-image[aria-pressed="true"] canvas{opacity:0}
.audience-image:focus-visible{outline:2px solid var(--purple);outline-offset:4px}

/* Blend edition backgrounds with 20% white while keeping text at full contrast. */
.archive-edition:nth-child(3n+1){--edition-background:var(--lilac)}
.archive-edition:nth-child(3n+2){--edition-background:var(--orange)}
.archive-edition:nth-child(3n){--edition-background:var(--sky)}
.edition-card.blue{--edition-background:var(--blue)}
.edition-card.sky{--edition-background:var(--sky)}
.edition-card.orange{--edition-background:var(--orange)}
:is(.archive-edition,.edition-card):is(:hover,:focus-within){background-color:color-mix(in srgb,var(--edition-background) 80%,white)}

/* Full-width desktop menu, with content following the page gutters. */
@media(min-width:961px){html[data-typeface="source"] body .explore-panel{left:0;right:0;padding-inline:max(var(--gutter),calc((100% - 1536px)/2));border-inline:0}}
