/* Front site. Palette (red artery / blue vein, neutral ink) and light/dark
   behaviour come from the shared tokens (core/brand-colors.css,
   core/design-tokens.css); this file adds layout, type and the page
   components. Headings use Jost (geometric, like the wordmark), body Manrope.
   The one signature device is .fs-flow: the two fading strokes of the logo,
   reused as a divider under page titles and above the footer. */

@font-face {
    font-family: "Manrope";
    src: url("../public/fonts/manrope.a8ebc7eb54ef.woff2") format("woff2");
    font-weight: 200 800;
    font-display: swap;
}

@font-face {
    font-family: "Jost";
    src: url("../vendor/jost/jost-latin-wght-normal.928f4210aa48.woff2") format("woff2");
    font-weight: 100 900;
    font-display: swap;
}

:root {
    --fu-tint: #f3f6f9;
    --fs-cta: var(--fu-brand-artery);
    --fs-cta-ink: #fff;
    --fs-line: color-mix(in srgb, var(--fu-fg) 14%, transparent);
    --fs-head: "Jost", "Manrope", system-ui, sans-serif;
    --fs-body: "Manrope", system-ui, sans-serif;
    --fu-sp-40: 30px; /* used by the shared add-to-calendar menu */
    --fs-gutter: clamp(1.25rem, 5vw, 2.5rem);
    --fs-wide: 1160px;
    --fs-read: 44rem;
    --fs-space: clamp(3.5rem, 8vw, 6.5rem);
    --fs-radius: 10px;
}

@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) {
        --fu-tint: #222426;
    }
}

:root[data-theme="dark"] {
    --fu-tint: #222426;
}

@media print {
    :root {
        --fu-tint: #f3f6f9 !important;
    }
}

*, *::before, *::after {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
    scroll-padding-top: 6rem;
}

body {
    margin: 0;
    font-family: var(--fs-body);
    font-size: 1.0625rem;
    line-height: 1.65;
    color: var(--fu-fg);
    background: var(--fu-bg);
    -webkit-font-smoothing: antialiased;
}

img, svg {
    max-width: 100%;
}

a {
    color: var(--fu-accent);
    text-underline-offset: 0.2em;
}

a:hover {
    text-decoration-thickness: 2px;
}

:focus-visible {
    outline: 3px solid var(--fu-accent);
    outline-offset: 3px;
    border-radius: 3px;
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    * {
        transition: none !important;
        animation: none !important;
    }
}

.fs-wrap {
    width: 100%;
    max-width: var(--fs-wide);
    margin-inline: auto;
    padding-inline: var(--fs-gutter);
}

.fs-narrow {
    max-width: var(--fs-read);
}

.fs-sr {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
}

.fs-skip {
    position: absolute;
    left: 1rem;
    top: -4rem;
    z-index: 300;
    padding: 0.6rem 1rem;
    background: var(--fu-fg);
    color: var(--fu-bg);
    border-radius: 6px;
}

.fs-skip:focus {
    top: 1rem;
}

/* ---- Type ---- */
.fs-h1, .fs-h2, .fs-h3, .fs-plain h2, .fs-hero__title {
    font-family: var(--fs-head);
    font-weight: 500;
    line-height: 1.1;
    letter-spacing: -0.01em;
    margin: 0;
    text-wrap: balance;
}

.fs-h1 {
    font-size: clamp(2.4rem, 6vw, 4rem);
}

.fs-h2 {
    font-size: clamp(1.7rem, 3.4vw, 2.3rem);
    margin-bottom: 1.25rem;
}

.fs-h3, .fs-plain h2 {
    font-size: 1.35rem;
    margin-bottom: 0.5rem;
}

/* Plain HTML from the dynamic pages' templates (no classes): their section
   headings are the same as the static pages' .fs-h3. */
.fs-plain h2 {
    margin-top: 2rem;
}

.fs-eyebrow {
    font-family: var(--fs-head);
    font-size: 0.85rem;
    font-weight: 600;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--fu-brand-artery);
    margin: 0 0 0.9rem;
}

@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) .fs-eyebrow {
        color: var(--fu-brand-artery-dark);
    }
}

:root[data-theme="dark"] .fs-eyebrow {
    color: var(--fu-brand-artery-dark);
}

.fs-lead {
    font-size: clamp(1.15rem, 2vw, 1.35rem);
    line-height: 1.5;
    color: var(--fu-muted);
    max-width: 40rem;
    margin: 1.1rem 0 0;
}

.fs-lead p {
    margin: 0;
}

.fs-prose {
    max-width: var(--fs-read);
}

.fs-prose > :first-child {
    margin-top: 0;
}

.fs-prose > :last-child {
    margin-bottom: 0;
}

.fs-prose--lead {
    font-size: 1.15rem;
    margin-bottom: 2rem;
}

/* ---- Signature: the logo's two fading strokes ---- */
.fs-flow {
    display: block;
    width: min(100%, 22rem);
    height: 14px;
    margin-top: 2rem;
    position: relative;
}

.fs-flow::before, .fs-flow::after {
    content: "";
    position: absolute;
    left: 0;
    height: 3px;
    border-radius: 3px;
}

.fs-flow::before {
    top: 0;
    width: 100%;
    background: linear-gradient(90deg, transparent, var(--fu-brand-artery));
    opacity: 0.85;
}

.fs-flow::after {
    top: 9px;
    width: 78%;
    background: linear-gradient(90deg, transparent, var(--fu-brand-vein));
}

/* ---- Header & nav ---- */
.fs-header {
    position: sticky;
    top: 0;
    z-index: 100;
    background: color-mix(in srgb, var(--fu-bg) 92%, transparent);
    backdrop-filter: saturate(1.4) blur(10px);
    border-bottom: 1px solid var(--fs-line);
}

.fs-header__inner {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    min-height: 5rem;
}

.fs-header__logo svg {
    display: block;
    height: 56px;
    width: auto;
}

.fs-nav {
    margin-left: auto;
}

.fs-nav__list {
    display: flex;
    align-items: center;
    gap: 0.15rem;
    list-style: none;
    margin: 0;
    padding: 0;
}

.fs-nav__link {
    display: block;
    padding: 0.55rem 0.8rem;
    font-size: 0.95rem;
    font-weight: 500;
    color: var(--fu-fg);
    text-decoration: none;
    border-radius: 6px;
}

.fs-nav__link:hover {
    background: var(--fu-tint);
}

.fs-nav__link.is-current {
    color: var(--fu-accent);
    box-shadow: inset 0 -2px 0 var(--fu-accent);
    border-radius: 6px 6px 0 0;
}

.fs-nav__link.is-cta {
    background: var(--fs-cta);
    color: var(--fs-cta-ink);
    margin-left: 0.4rem;
}

.fs-nav__link.is-cta:hover {
    filter: brightness(1.1);
}

.fs-nav__link.is-cta.is-current {
    box-shadow: none;
    border-radius: 6px;
    outline: 2px solid var(--fu-fg);
    outline-offset: 2px;
}

.theme-toggle {
    margin-left: 0.25rem;
}

.fs-burger {
    display: none;
    margin-left: auto;
    width: 2.75rem;
    height: 2.75rem;
    padding: 0;
    border: 1px solid var(--fu-border);
    border-radius: 8px;
    background: transparent;
    color: var(--fu-fg);
    cursor: pointer;
    position: relative;
}

.fs-burger[hidden] {
    display: none !important;
}

.fs-burger__bars, .fs-burger__bars::before, .fs-burger__bars::after {
    position: absolute;
    left: 50%;
    width: 1.25rem;
    height: 2px;
    background: currentColor;
    border-radius: 2px;
    transition: transform 0.2s;
}

.fs-burger__bars {
    top: 50%;
    transform: translate(-50%, -50%);
}

.fs-burger__bars::before, .fs-burger__bars::after {
    content: "";
    left: 0;
}

.fs-burger__bars::before {
    top: -6px;
}

.fs-burger__bars::after {
    top: 6px;
}

.fs-burger[aria-expanded="true"] .fs-burger__bars {
    background: transparent;
}

.fs-burger[aria-expanded="true"] .fs-burger__bars::before {
    transform: translateY(6px) rotate(45deg);
}

.fs-burger[aria-expanded="true"] .fs-burger__bars::after {
    transform: translateY(-6px) rotate(-45deg);
}

@media (max-width: 62rem) {
    .fs-js .fs-burger {
        display: block;
    }

    .fs-js .fs-nav {
        position: absolute;
        inset: 100% 0 auto 0;
        margin: 0;
        display: none;
        background: var(--fu-bg);
        border-bottom: 1px solid var(--fs-line);
        box-shadow: 0 18px 30px -18px color-mix(in srgb, var(--fu-fg) 35%, transparent);
    }

    .fs-js .fs-nav.is-open {
        display: block;
    }

    .fs-js .fs-nav__list {
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        padding: 0.75rem var(--fs-gutter) 1.25rem;
    }

    .fs-js .fs-nav__link {
        padding: 0.9rem 0.25rem;
        font-size: 1.05rem;
        border-bottom: 1px solid var(--fs-line);
        border-radius: 0;
        box-shadow: none;
    }

    .fs-js .fs-nav__link.is-current {
        box-shadow: none;
        text-decoration: underline;
        text-decoration-thickness: 2px;
    }

    .fs-js .fs-nav__link.is-cta {
        margin: 0.75rem 0 0;
        text-align: center;
        border: 0;
        border-radius: 8px;
    }

    /* Without JS the list simply wraps under the logo. */
    html:not(.fs-js) .fs-header__inner {
        flex-wrap: wrap;
        padding-block: 0.6rem;
    }

    html:not(.fs-js) .fs-nav {
        order: 3;
        width: 100%;
        margin: 0;
    }

    html:not(.fs-js) .fs-nav__list {
        flex-wrap: wrap;
    }
}

@media (min-width: 62.01rem) {
    .fs-burger {
        display: none !important;
    }
}

.fs-header__inner .theme-toggle {
    margin-left: 0.25rem;
}

.fs-js .fs-burger ~ .fs-nav ~ .theme-toggle {
    margin-left: 0;
}

@media (max-width: 62rem) {
    .fs-js .fs-header__inner .theme-toggle {
        order: 2;
    }

    .fs-js .fs-burger {
        order: 3;
        margin-left: 0;
    }

    .fs-js .fs-header__logo {
        margin-right: auto;
    }
}

/* ---- Buttons & actions ---- */
.fs-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem 1rem;
    margin-top: 1.75rem;
}

.fs-actions .add-to-cal {
    margin-top: 0;
}

.fs-actions .add-to-cal__toggle {
    min-height: 3rem;
    padding: 0 1.1rem;
    font: inherit;
    font-weight: 600;
    border-radius: 8px;
    cursor: pointer;
}

.fs-btn {
    display: inline-flex;
    align-items: center;
    min-height: 3rem;
    padding: 0 1.4rem;
    font-weight: 700;
    color: var(--fs-cta-ink);
    background: var(--fs-cta);
    border: 0;
    border-radius: 8px;
    font-family: inherit;
    font-size: inherit;
    text-decoration: none;
    cursor: pointer;
    transition: filter 0.15s, transform 0.15s;
}

.fs-btn:hover {
    filter: brightness(1.1);
    transform: translateY(-1px);
}

/* ---- Home hero ---- */
.fs-hero {
    padding-block: clamp(2.5rem, 6vw, 5rem);
    background: linear-gradient(180deg, var(--fu-tint), var(--fu-bg));
}

.fs-hero__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2.5rem;
    align-items: center;
}

.fs-hero__title {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    font-size: clamp(2.5rem, 5.6vw, 4.1rem);
}

.fs-hero__time {
    font-size: 0.42em;
    font-weight: 400;
    color: var(--fu-muted);
    letter-spacing: 0;
}

.fs-hero__place {
    font-size: 1.15rem;
    margin: 1.5rem 0 0.25rem;
}

.fs-hero__note {
    color: var(--fu-muted);
    margin: 0;
}

.fs-hero__more {
    margin: 1.5rem 0 0;
    font-weight: 600;
}

.fs-hero__figure {
    margin: 0;
}

.fs-hero__figure img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 16 / 11;
    object-fit: cover;
    border-radius: var(--fs-radius);
    box-shadow: 0 30px 50px -30px color-mix(in srgb, var(--fu-fg) 45%, transparent);
}

@media (min-width: 62rem) {
    .fs-hero__grid {
        grid-template-columns: 1.05fr 1fr;
        gap: 4rem;
    }
}

/* ---- Sections ---- */
.fs-section {
    padding-block: var(--fs-space);
}

.fs-section--tint {
    background: var(--fu-tint);
}

.fs-section--compact {
    padding-block: clamp(2rem, 5vw, 3.5rem);
}

.fs-split {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem 4rem;
}

@media (min-width: 56rem) {
    .fs-split {
        grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.4fr);
    }

    .fs-split > :first-child {
        position: sticky;
        top: 7rem;
        align-self: start;
    }
}

.fs-pagehead {
    padding-block: clamp(2.5rem, 6vw, 4.5rem) 0;
}

.fs-pagehead__grid {
    display: grid;
    gap: 2rem;
    align-items: start;
}

@media (min-width: 52rem) {
    .fs-pagehead__grid {
        grid-template-columns: 1fr auto;
        gap: 4rem;
    }
}

.fs-pagehead .fs-flow {
    margin-top: 2.5rem;
}

.fs-block + .fs-block {
    margin-top: 2.5rem;
}

.fs-goals {
    list-style: none;
    margin: 2rem 0 0;
    padding: 0;
    display: grid;
    gap: 1.25rem;
    max-width: var(--fs-read);
}

.fs-goals li {
    position: relative;
    padding-left: 1.75rem;
}

.fs-goals li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.8em;
    width: 1rem;
    height: 3px;
    border-radius: 3px;
    background: var(--fu-brand-artery);
}

.fs-goals li:nth-child(even)::before {
    background: var(--fu-brand-vein);
}

.fs-signature {
    margin: 2rem 0 0;
    color: var(--fu-muted);
    font-style: italic;
}

.fs-shortcuts {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
}

.fs-shortcut {
    display: block;
    height: 100%;
    padding: 1.5rem;
    border: 1px solid var(--fs-line);
    border-radius: var(--fs-radius);
    background: var(--fu-bg);
    color: var(--fu-fg);
    text-decoration: none;
    transition: border-color 0.15s, transform 0.15s;
}

.fs-shortcut:hover {
    border-color: var(--fu-accent);
    transform: translateY(-2px);
}

.fs-shortcut__label {
    display: block;
    font-family: var(--fs-head);
    font-size: 1.35rem;
    font-weight: 500;
    color: var(--fu-accent);
}

.fs-shortcut__text {
    display: block;
    margin-top: 0.35rem;
    color: var(--fu-muted);
    font-size: 0.98rem;
    line-height: 1.5;
}

/* ---- Symposium ---- */
.fs-qr-card {
    text-align: center;
}

.fs-qr {
    display: block;
    width: clamp(9.5rem, 15vw, 14rem);
    aspect-ratio: 1;
    margin: 0 auto;
    padding: 0.6rem;
    background: #fff;
    border: 1px solid var(--fs-line);
    border-radius: var(--fs-radius);
}
button.fs-qr {
    font: inherit;
    color: inherit;
    cursor: default;
}
button.fs-qr.is-zoomable {
    cursor: zoom-in;
    transition: box-shadow 0.15s;
}
button.fs-qr.is-zoomable:hover {
    box-shadow: 0 8px 24px -10px color-mix(in srgb, var(--fu-fg) 45%, transparent);
}
.fs-qr--large {
    width: min(88vw, 70vh, 30rem);
    padding: 1rem;
}
.fs-qr-dialog {
    padding: 1.25rem;
    border: 0;
    border-radius: var(--fs-radius);
    background: var(--fu-bg);
    color: var(--fu-fg);
    text-align: center;
}
.fs-qr-dialog::backdrop {
    background: rgb(0 0 0 / 0.6);
}
.fs-qr-dialog__close {
    margin-top: 1rem;
    border: 0;
    font: inherit;
    font-weight: 700;
    cursor: pointer;
}

.fs-qr svg {
    display: block;
    width: 100%;
    height: 100%;
}

.fs-qr-card p {
    margin: 0.6rem 0 0;
    font-size: 0.85rem;
    color: var(--fu-muted);
}

.fs-timetable {
    list-style: none;
    margin: 0;
    padding: 0;
}

.fs-slot {
    display: grid;
    grid-template-columns: 4.25rem 1fr;
    gap: 1rem;
    padding: 1.15rem 0;
    border-top: 1px solid var(--fs-line);
}

.fs-slot:last-child {
    border-bottom: 1px solid var(--fs-line);
}

.fs-slot__time {
    font-family: var(--fs-head);
    font-weight: 600;
    font-size: 1.1rem;
    font-variant-numeric: tabular-nums;
    color: var(--fu-accent);
}

.fs-slot p {
    margin: 0;
}

.fs-slot__title {
    font-weight: 700;
    line-height: 1.35;
}

.fs-slot__detail {
    color: var(--fu-fg);
}

.fs-slot__speaker {
    color: var(--fu-muted);
    font-size: 0.95rem;
    margin-top: 0.2rem !important;
}

.fs-access {
    display: grid;
    gap: 2rem;
    align-items: start;
    margin-top: 1rem;
}

@media (min-width: 52rem) {
    .fs-access {
        grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
        gap: 3.5rem;
    }
}

.fs-infos {
    margin: 0;
    display: grid;
    gap: 1.5rem;
}

.fs-infos dt {
    font-family: var(--fs-head);
    font-size: 0.8rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--fu-muted);
    margin-bottom: 0.25rem;
}

.fs-infos dd {
    margin: 0;
    line-height: 1.6;
}

.fs-map iframe {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    min-height: 18rem;
    border: 0;
    border-radius: var(--fs-radius);
    background: var(--fu-tint);
}

/* ---- Team ---- */
.fs-people {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 2.25rem 1.5rem;
    grid-template-columns: repeat(auto-fill, minmax(10.5rem, 1fr));
}

.fs-person {
    display: flex;
    flex-direction: column;
    text-align: left;
}

.fs-person__photo {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 4 / 5;
    object-fit: cover;
    object-position: var(--focus, 50% 22%);
    border-radius: var(--fs-radius);
    background: var(--fu-tint);
    filter: grayscale(0.15);
}

.fs-person__name {
    margin: 0.85rem 0 0;
    font-family: var(--fs-head);
    font-size: 1.15rem;
    font-weight: 500;
    line-height: 1.25;
}

.fs-person:has(.fs-person__logo) p:last-of-type {
    margin-bottom: 0.9rem;
}
.fs-person__meta {
    margin: 0.15rem 0 0;
    font-size: 0.9rem;
    line-height: 1.4;
    color: var(--fu-muted);
}

.fs-person__logo {
    display: block;
    flex: none;
    max-width: 100%;
    max-height: 3.75rem;
    width: auto;
    height: auto;
    /* auto top margin: pushes the logo to the bottom of the card, so logos
       line up along each row whatever the text above wraps to */
    margin: auto auto 0;
    object-fit: contain;
    background: #fff;
    padding: 0.4rem 0.6rem;
    border-radius: 6px;
    box-sizing: content-box;
}

/* ---- Research ---- */
.fs-studies {
    display: grid;
    gap: 2rem 4rem;
}

@media (min-width: 64rem) {
    .fs-studies {
        grid-template-columns: 14rem minmax(0, 1fr);
    }
}

.fs-toc ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    gap: 0.5rem;
    overflow-x: auto;
    padding-bottom: 0.5rem;
}

.fs-toc a {
    display: block;
    white-space: nowrap;
    padding: 0.45rem 0.9rem;
    border: 1px solid var(--fs-line);
    border-radius: 999px;
    font-size: 0.92rem;
    text-decoration: none;
    color: var(--fu-fg);
}

.fs-toc a:hover {
    border-color: var(--fu-accent);
    color: var(--fu-accent);
}

@media (min-width: 64rem) {
    .fs-toc {
        position: sticky;
        top: 7rem;
        align-self: start;
    }

    .fs-toc ul {
        flex-direction: column;
        overflow: visible;
        gap: 0;
        border-left: 2px solid var(--fs-line);
    }

    .fs-toc a {
        border: 0;
        border-radius: 0;
        padding: 0.55rem 0 0.55rem 1rem;
        margin-left: -2px;
        border-left: 2px solid transparent;
        white-space: normal;
        line-height: 1.35;
    }

    .fs-toc a:hover {
        border-left-color: var(--fu-accent);
    }
}

.fs-group + .fs-group {
    margin-top: 4rem;
}

.fs-study {
    padding-block: 2rem;
    border-top: 1px solid var(--fs-line);
    display: grid;
    gap: 1.5rem 2.5rem;
}

@media (min-width: 52rem) {
    .fs-study--figure {
        grid-template-columns: minmax(0, 1fr) 16rem;
    }
}

.fs-study__name {
    font-family: var(--fs-head);
    font-size: 1.5rem;
    font-weight: 600;
    margin: 0;
    color: var(--fu-accent);
}

.fs-study__subtitle {
    font-weight: 600;
    line-height: 1.4;
    margin: 0.4rem 0 0.9rem;
    max-width: var(--fs-read);
}

.fs-study__figure {
    margin: 0;
}

.fs-study__figure img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: 8px;
    border: 1px solid var(--fs-line);
    background: #fff;
}

.fs-links {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 1.25rem;
    margin: 1rem 0 0;
    font-weight: 600;
    font-size: 0.95rem;
}

.fs-links a::after {
    content: " ↗";
    font-weight: 400;
}

/* ---- Past symposiums ---- */
.fs-years {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 2.5rem;
}

.fs-years a {
    padding: 0.4rem 0.85rem;
    border: 1px solid var(--fs-line);
    border-radius: 999px;
    font-variant-numeric: tabular-nums;
    font-size: 0.95rem;
    text-decoration: none;
    color: var(--fu-fg);
}

.fs-years a:hover {
    border-color: var(--fu-accent);
    color: var(--fu-accent);
}

.fs-edition {
    display: grid;
    gap: 0.5rem 3rem;
    padding-block: 1.75rem;
    border-top: 1px solid var(--fs-line);
}

@media (min-width: 44rem) {
    .fs-edition {
        grid-template-columns: 8rem minmax(0, 1fr);
    }
}

.fs-edition__year {
    font-family: var(--fs-head);
    font-weight: 500;
    font-size: 2.2rem;
    line-height: 1;
    margin: 0;
    color: var(--fu-accent);
    font-variant-numeric: tabular-nums;
}

.fs-edition__talks {
    margin: 0;
    padding: 0;
    list-style: none;
    display: grid;
    gap: 0.55rem;
    max-width: var(--fs-read);
}

.fs-edition__talks li {
    padding-left: 1rem;
    border-left: 3px solid var(--fs-line);
}

/* ---- Partners, by tier ---- */
.fs-tier + .fs-tier {
    margin-top: clamp(2.5rem, 6vw, 4rem);
}
.fs-tier__heading {
    margin-bottom: 1.25rem;
    color: var(--fu-muted);
    font-size: 0.85rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}
.fs-logos {
    --logo-col: 16rem;
    --logo-h: 5rem;
    --logo-pad: 1.5rem;
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 1.25rem;
}
.fs-tier--large .fs-logos {
    --logo-col: 28rem;
    --logo-h: 9rem;
    --logo-pad: 2.25rem;
}
.fs-tier--small .fs-logos {
    --logo-col: 11rem;
    --logo-h: 3.25rem;
    --logo-pad: 1rem;
}
.fs-logos li {
    flex: 0 1 var(--logo-col);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--logo-pad);
    background: #fff;
    border: 1px solid var(--fs-line);
    border-radius: var(--fs-radius);
}
.fs-logos a {
    display: flex;
}
.fs-logos img {
    max-width: 100%;
    max-height: var(--logo-h);
    width: auto;
    height: auto;
    object-fit: contain;
}

/* ---- Footer ---- */
.fs-footer {
    padding-top: 3rem;
    background: var(--fu-tint);
    font-size: 0.97rem;
}

.fs-footer > .fs-flow {
    margin: 0 auto 0 max(var(--fs-gutter), calc((100% - var(--fs-wide)) / 2 + var(--fs-gutter)));
}

.fs-footer__grid {
    display: grid;
    gap: 2rem 3rem;
    padding-block: 2.5rem;
    grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
}

.fs-footer p {
    margin: 0 0 0.75rem;
}

.fs-footer__brand {
    font-family: var(--fs-head);
    font-size: 1.5rem;
    font-weight: 500;
    margin-bottom: 0.25rem !important;
}

.fs-footer__tagline {
    color: var(--fu-muted);
    max-width: 22rem;
}

.fs-footer__h {
    font-family: var(--fs-head);
    font-size: 0.8rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--fu-muted);
    margin: 0 0 0.75rem;
}

.fs-footer__links {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.35rem;
}

.fs-footer__legal {
    padding-block: 1.25rem 2rem;
    border-top: 1px solid var(--fs-line);
    color: var(--fu-muted);
    font-size: 0.88rem;
}

@media print {
    .fs-header, .fs-footer .fs-flow, .fs-actions, .fs-map, .theme-toggle {
        display: none !important;
    }

    .fs-hero {
        background: none;
    }
}

.fs-pagehead .fs-prose {
    margin-top: 0.9rem;
}

/* Grid children may shrink below their content (e.g. the scrolling chips),
   otherwise a single wide child pushes the page past the viewport. */
.fs-studies, .fs-study, .fs-split, .fs-access, .fs-pagehead__grid, .fs-edition {
    grid-template-columns: minmax(0, 1fr);
}

.fs-studies > *, .fs-study > *, .fs-split > *, .fs-access > *, .fs-pagehead__grid > *, .fs-edition > * {
    min-width: 0;
}

@media (min-width: 64rem) {
    .fs-studies {
        grid-template-columns: 14rem minmax(0, 1fr);
    }
}

@media (min-width: 52rem) {
    .fs-study--figure {
        grid-template-columns: minmax(0, 1fr) 16rem;
    }

    .fs-access {
        grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
    }

    .fs-pagehead__grid {
        grid-template-columns: minmax(0, 1fr) auto;
    }
}

@media (min-width: 56rem) {
    .fs-split {
        grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.4fr);
    }
}

@media (min-width: 44rem) {
    .fs-edition {
        grid-template-columns: 8rem minmax(0, 1fr);
    }
}
