/*
Theme Name: NJ Harm Reduction
Theme URI: https://phillmamula.com/njharm
Author: Phill Mamula
Author URI: https://phillmamula.com
Description: Custom campaign theme for Conditions to Bloom.
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: njharm
*/

@font-face {
    font-family: "ESPark";
    src: url("fonts/ESPark-Extralight.woff2") format("woff2"),
         url("fonts/ESPark-Extralight.woff") format("woff");
    font-weight: 200;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "Picaro";
    src: url("fonts/Picaro-Regular.woff2") format("woff2"),
         url("fonts/Picaro-Regular.woff") format("woff");
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "Fisterra Morte";
    src: url("fonts/fisterra-morte.woff2") format("woff2"),
         url("fonts/fisterra-morte.woff") format("woff");
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

:root {
    --color-ink: #1F1911;
    --color-white: #ecece7;
    --color-cream: #F6F6C8;
    --color-acid: #c9f356;
    --color-lilac: #EDBCF2;
    --color-mint: #b3e5bb;
    --color-blaze: #E65800;
    --color-bark: #4E3202;
    --color-signal: #E60000;
    --color-cobalt: #2752ca;

    --color-background: var(--color-cream);
    --color-surface: #fff9d8;
    --color-surface-alt: #e8f3e6;
    --color-text: var(--color-ink);
    --color-text-inverse: #fff9dc;
    --color-heading: var(--color-blaze);
    --color-border: rgba(11, 17, 23, 0.14);

    --color-primary: var(--color-signal);
    --color-secondary: var(--color-cobalt);
    --color-accent: var(--color-blaze);
    --color-accent-soft: var(--color-lilac);
    --color-accent-fresh: var(--color-mint);
    --color-accent-warm: var(--color-blaze);

    --font-heading: "ESPark", serif;
    --font-secondary: "Picaro", serif;
    --section-inline-ratio: 1;
    --section-block-ratio: 1;
    --section-inline-size: calc(100dvw * var(--section-inline-ratio));
    --section-block-size: calc(100dvh * var(--section-block-ratio));
}

html {
    scrollbar-width: thin;
    scrollbar-color: var(--color-bark) transparent;
}

body {
    background: var(--color-background);
    color: var(--color-bark);
}

#page {
    position: relative;
}

#content,
.site-content,
.site-main {
    position: relative;
    z-index: 2;
    background: var(--color-background);
}

.page-progress {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 1200;
    width: 100%;
    height: 6px;
    pointer-events: none;
}

.page-progress-bar {
    width: 100%;
    height: 100%;
    background: var(--color-blaze);
    transform: scaleX(0);
    transform-origin: left center;
    will-change: transform;
}

.container {
    max-width: 85vw;
    position: relative;
}

a,
a:link {
    transition: color 0.3s ease;
}

a:visited {
    color: inherit;
}

a:hover,
a:focus {
    color: var(--color-accent);
}

a:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 0.2em;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    color: var(--color-heading);
    font-family: var(--font-heading);
    font-weight: normal;
}

h1 {
    font-family: "Fisterra Morte", serif;
}

h4,
h5,
h6 {
    font-family: var(--font-secondary);
    text-transform: uppercase;
    letter-spacing: 0.02em;
}

.font-espark {
    font-family: var(--font-heading);
}

.font-picaro {
    font-family: var(--font-secondary);
}

.font-fisterra {
    font-family: "Fisterra Morte", serif;
}

section,
footer {
    --color-text: var(--section-text);
    --color-heading: var(--section-text);
    background: var(--section-bg);
    color: var(--section-text);
}

section a,
footer a {
    color: var(--section-link, currentColor);
}

.theme-acid-bark {
    --section-bg: var(--color-acid);
    --section-text: var(--color-bark);
}

.theme-mint-cobalt {
    --section-bg: var(--color-mint);
    --section-text: var(--color-cobalt);
}

.theme-ink-cream {
    --section-bg: var(--color-ink);
    --section-text: var(--color-cream);
}

.theme-lilac-signal {
    --section-bg: var(--color-lilac);
    --section-text: var(--color-signal);
}

.theme-bark-acid {
    --section-bg: var(--color-bark);
    --section-text: var(--color-acid);
}

.theme-blaze-cream {
    --section-bg: var(--color-blaze);
    --section-text: var(--color-cream);
}

.theme-bark-cream {
    --section-bg: var(--color-bark);
    --section-text: var(--color-cream);
}

.theme-cobalt-mint {
    --section-bg: var(--color-cobalt);
    --section-text: var(--color-mint);
}

.theme-mint-bark {
    --section-bg: var(--color-mint);
    --section-text: var(--color-bark);
}

h4.eyebrow {
    font-size: clamp(0.875rem, 2vw, 1rem);
    letter-spacing: 0.2em;
    margin-bottom: 2.5rem;
}

.home-hero .eyebrow {
    color: inherit;
}

.home-hero {
    min-block-size: 100dvh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    padding: max(5dvw, clamp(3rem, 7vw, 6rem));
    position: relative;
    overflow: hidden;
    background: var(--color-ink);
    color: var(--color-cream);
}

.home-hero.has-background::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 1;
    background: linear-gradient(0deg, rgb(78 50 2 / 48%) 0%, rgb(78 50 2 / 22%) 42%, rgb(78 50 2 / 0%) 100%);
    pointer-events: none;
}

.hero-background {
    position: absolute;
    inset: -8% 0;
    z-index: 0;
    will-change: transform;
}

.hero-background img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

.hero-content {
    position: relative;
    z-index: 2;
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}
.hero-mark {
    width: 100%;
}

h1.home-logo {
    width: min(100%, 56rem);
    margin-inline: auto;
    line-height: 0;
    color: inherit;
}
.logo-bloom {
    position: relative;
    display: block;
    width: 100%;
    aspect-ratio: 1800 / 634;
}

.logo-bloom-frame {
    position: absolute;
    inset: 0;
    display: none;
    width: 100%;
    height: 100%;
    background: currentColor;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-size: contain;
    mask-size: contain;
    opacity: 0;
    animation-duration: 10000ms;
    animation-delay: 1000ms;
    animation-timing-function: steps(1, end);
    animation-iteration-count: infinite;
    animation-fill-mode: both;
}

.logo-bloom.has-frames .logo-bloom-frame {
    display: block;
}

.logo-bloom-frame.frame-1 {
    position: relative;
    opacity: 1;
    animation-name: logo-bloom-frame-1;
    -webkit-mask-image: url('images/CTB-Flower-1.png');
    mask-image: url('images/CTB-Flower-1.png');
}

.logo-bloom-frame.frame-2 {
    animation-name: logo-bloom-frame-2;
    -webkit-mask-image: url('images/CTB-Flower-2.png');
    mask-image: url('images/CTB-Flower-2.png');
}

.logo-bloom-frame.frame-3 {
    animation-name: logo-bloom-frame-3;
    -webkit-mask-image: url('images/CTB-Flower-3.png');
    mask-image: url('images/CTB-Flower-3.png');
}

.logo-bloom-frame.frame-4 {
    animation-name: logo-bloom-frame-4;
    -webkit-mask-image: url('images/CTB-Flower-4.png');
    mask-image: url('images/CTB-Flower-4.png');
}

.logo-bloom-fallback {
    display: block;
    width: 100%;
}

.logo-bloom-fallback svg {
    display: block;
    width: 100%;
    height: auto;
}

.logo-bloom.has-frames .logo-bloom-fallback {
    display: none;
}

h4.hero-tagline {
    font-family: var(--font-heading);
    text-transform: uppercase;
    margin-top: 5dvh;
    font-weight: 500;
    color: inherit;
}

.hero-scroll-cue {
    position: absolute;
    left: 50%;
    bottom: clamp(1.5rem, 4vw, 3rem);
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: inherit;
    font-size: clamp(1.25rem, 3vw, 2rem);
    opacity: 0;
    padding: 0;
    border: 0;
    background: transparent;
    text-decoration: none;
    cursor: pointer;
}

.hero-scroll-cue:hover,
.hero-scroll-cue:focus {
    opacity: 1;
    background: transparent;
    border-color: transparent;
    text-decoration: none;
}

.hero-scroll-cue[data-reveal-item] {
    transform: translateX(-50%) translate3d(0, 1.5rem, 0);
}

.hero-scroll-cue[data-reveal-item].is-visible {
    opacity: 0.2;
    transform: translateX(-50%) translate3d(0, 0, 0);
}

.hero-scroll-cue[data-reveal-item].is-visible:hover,
.hero-scroll-cue[data-reveal-item].is-visible:focus {
    opacity: 1;
}

@media (max-width: 640px) {
    .home-hero {
        --hero-mobile-block-size: calc(100lvh + env(safe-area-inset-bottom));
        --hero-mobile-padding: max(5dvw, clamp(2rem, 8svh, 4rem));
        min-block-size: 100svh;
        min-block-size: var(--hero-mobile-block-size);
        padding: var(--hero-mobile-padding);
    }

    .hero-content {
        min-block-size: calc(var(--hero-mobile-block-size) - (var(--hero-mobile-padding) * 2));
    }

    h1.home-logo {
        width: min(100%, 52rem);
    }

    .hero-scroll-cue {
        bottom: clamp(1.25rem, 6svh, 2.5rem);
        font-size: clamp(2rem, 12vw, 2.25rem);
    }

    .hero-scroll-cue[data-reveal-item].is-visible {
        opacity: 0.2;
    }
}

.home-hero-video {
    --hero-video-width: 60%;
    --hero-video-radius: 1.5rem;
    min-block-size: auto;
    padding-block: clamp(1rem, 3vw, 2.5rem) 0;
    display: flex;
    justify-content: center;
}

.hero-video {
    position: relative;
    display: block;
    width: var(--hero-video-width);
    aspect-ratio: 16 / 9;
    padding: 0;
    overflow: hidden;
    background: var(--color-ink);
    border: 0;
    border-radius: var(--hero-video-radius);
    will-change: width, border-radius;
}

.hero-video::after {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba(31, 25, 17, 0.18);
    pointer-events: none;
}

.hero-video-media {
    position: absolute;
    inset: -5% 0;
    will-change: transform;
}

.hero-video-bg {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.hero-video-play {
    position: absolute;
    top: 50%;
    left: 50%;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    width: auto;
    min-width: 0;
    max-width: calc(100% - 2rem);
    min-height: 3.75rem;
    padding: 1rem 2rem;
    border: none;
    border-radius: 999px;
    font-family: inherit;
    background: rgb(31 25 17 / 55%);
    -webkit-backdrop-filter: blur(8px) saturate(1.2);
    backdrop-filter: blur(8px) saturate(1.2);
    box-shadow: 0 0.85rem 2.2rem rgb(31 25 17 / 25%);
    color: var(--color-cream);
    font-size: 0.9em;
    line-height: 1;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    transform: translate(-50%, -50%);
    cursor: pointer;
    transition: background 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, color 0.2s ease, transform 0.2s ease;
}

.hero-video-play i {
    font-size: 0.85em;
}

.hero-video-play span {
    white-space: nowrap;
}

.hero-video-play:hover,
.hero-video-play:focus {
    background: var(--color-blaze);
    border-color: var(--color-blaze);
    color: var(--color-cream);
    box-shadow: 0 1.2rem 3rem rgb(31 25 17 / 38%);
    transform: translate(-50%, -50%) scale(1.04);
}

.hero-video-inline {
    position: absolute;
    inset: 0;
    z-index: 3;
    background: var(--color-ink);
}

.hero-video-inline .embed-container {
    height: 100%;
}

.hero-video.is-playing-inline .hero-video-media,
.hero-video.is-playing-inline .hero-video-play {
    display: none;
}

@media (max-width: 800px) {
    .home-hero-video {
        --hero-video-width: 100%;
        --hero-video-radius: 0rem;
    }

    .hero-video {
        will-change: auto;
    }
}

.video-lightbox {
    position: fixed;
    inset: 0;
    z-index: 1400;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: clamp(1rem, 4vw, 3rem);
    background: rgb(0 0 0 / 70%);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.2s ease, visibility 0.2s ease;
}

.video-lightbox.is-open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

.video-lightbox-panel {
    width: 80vw;
}

.video-lightbox .container {
    width: 100%;
    max-width: none;
}

section.home-phases {
    --phase-step-size: clamp(90dvh, 100dvh, 115dvh);
    position: relative;
    min-block-size: auto;
    overflow: visible;
}

section.home-phases::before {
    content: '';
    position: sticky;
    top: 0;
    z-index: 0;
    display: block;
    width: 100%;
    height: 100dvh;
    margin-bottom: -100dvh;
    background-image: url('images/ants-left-side.png'), url('images/ants-right-side.png');
    background-repeat: no-repeat, no-repeat;
    background-position: bottom left, top right;
    background-size: clamp(15vw, 18vw, 20vw) auto, clamp(15vw, 18vw, 20vw) auto;
    pointer-events: none;
}

section.home-phases::after {
    content: none;
}

.home-phases > * {
    position: relative;
    z-index: 1;
}

.home-phases-introduction {
    padding: clamp(5rem, 9vw, 12rem) 0 clamp(3rem, 6vw, 8rem);
}

section.home-phases .scroll-hold {
    min-block-size: calc(100dvh + (var(--phase-count) * var(--phase-step-size)));
}

.home-phases-stage {
    position: sticky;
    top: 0;
    min-block-size: 100dvh;
    display: flex;
    align-items: center;
    padding-block: clamp(2rem, 5vw, 4rem);
}

.home-phases-stage > .container {
    width: 100%;
}

.home-phases-intro {
    color: var(--color-bark);
    max-width: 50rem;
    margin: 0 auto;
    font-family: var(--font-heading);
    font-size: clamp(1.2rem, 2vw, 2.5rem);
    line-height: 1.5em;
    text-align: center;
    text-wrap: balance;
}

.home-phases-intro p {
    margin: 0;
}

.home-phases-cards {
    width: min(100%, 76rem);
    margin-inline: auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: clamp(1.5rem, 3vw, 2.5rem);
}

.phase-card-stack {
    position: relative;
    width: 100%;
    min-block-size: clamp(31rem, 70dvh, 45rem);
}

.phase-entry {
    --color-heading: currentColor;
    --section-text: currentColor;
    --section-link: currentColor;
    position: absolute;
    inset: 0;
    width: 100%;
    max-width: none;
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(10rem, 1fr);
    align-items: center;
    gap: clamp(1.5rem, 2vw, 3rem);
    padding: clamp(2rem, 4vw, 4rem);
    border-radius: clamp(0.65rem, 1vw, 0.9rem);
    background: #fafafa;
    color: inherit;
    box-shadow: 0 0.5rem 1rem rgb(78 50 2 / 14%);
    opacity: 0.38;
    transform: translate3d(calc(var(--phase-stack-offset, 0) * 0.35rem), calc(var(--phase-stack-offset, 0) * 0.45rem), 0) scale(0.92) rotate(var(--phase-card-angle, 0deg));
    transform-origin: center;
    pointer-events: none;
    transition: opacity 320ms ease, transform 480ms ease, box-shadow 480ms ease;
}
.phase-entry.is-active {
    z-index: 6;
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1) rotate(0deg);
    pointer-events: auto;
    box-shadow: 0 0.5rem 1rem rgb(78 50 2 / 14%);
}
.phase-entry.is-before,
.phase-entry.is-after {
    opacity: 0.76;
}
.phase-entry.is-before {
    transform: translate3d(-0.45rem, -0.65rem, 0) scale(0.96) rotate(var(--phase-card-angle, -2deg));
}
.phase-entry.is-after {
    transform: translate3d(0.55rem, 0.75rem, 0) scale(0.96) rotate(var(--phase-card-angle, 2deg));
}
.phase-entry-1 {
    --phase-card-angle: -2deg;
}
.phase-entry-2 {
    --phase-card-angle: 1.5deg;
}
.phase-entry-3 {
    --phase-card-angle: -1deg;
}
.phase-entry-4 {
    --phase-card-angle: 2deg;
}
.phase-entry-5 {
    --phase-card-angle: -1.5deg;
}
.phase-content {
    min-width: 0;
    width: 100%;
}
.phase-entry .phase-meta {
    margin: 0 0 clamp(1.25rem, 2.5vw, 2rem);
}
.phase-entry h3 {
    font-family: var(--font-secondary);
    font-size: clamp(3rem, 6vw, 5.75rem);
    text-transform: none;
    margin: 0 0 clamp(1rem, 2vw, 1.5rem);
    line-height: 1em;
    color: inherit;
}

.phase-entry h1,
.phase-entry h2,
.phase-entry h3,
.phase-entry h4,
.phase-entry h5,
.phase-entry h6,
.phase-entry a,
.phase-entry .eyebrow,
.phase-entry .subtitle,
.phase-entry .description {
    color: inherit;
}

.phase-entry span.eyebrow {
    display: block;
    font-family: var(--font-secondary);
    text-transform: uppercase;
    font-size: 0.8em;
    margin: 0;
    letter-spacing: 0.02em;
}
.phase-entry .subtitle {
    display: block;
    font-family: var(--font-heading);
    font-size: clamp(1.4rem, 2.5vw, 1.9rem);
    line-height: 1.2em;
    font-style: italic;
    margin: 0;
}

.phase-entry .description p {
    margin: 0;
}

.phase-media {
    min-width: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    order: 2;
}

.phase-content {
    padding: 2vw;
    order: 1;
}

.phase-media img,
.phase-media-placeholder {
    display: block;
    width: min(100%, 20rem);
    max-height: 25rem;
    object-fit: contain;
}

.phase-media-placeholder {
    aspect-ratio: 1;
    border-radius: 50%;
    background: color-mix(in srgb, currentColor 18%, transparent);
}

/* Phase Coloring */
.phase-1 {
    background-color: var(--color-bark);
    color: var(--color-acid);
}
.phase-2 {
    background-color: var(--color-lilac);
    color: var(--color-signal);
}
.phase-3 {
    background-color: var(--color-blaze);
    color: var(--color-cream);
}
.phase-4 {
    background-color: var(--color-mint);
    color: var(--color-cobalt);
}
.phase-5 {
    background-color: var(--color-cobalt);
    color: var(--color-cream);
}

.phase-dots {
    display: flex;
    justify-content: center;
    gap: 0.75rem;
}

.phase-dot {
    box-sizing: border-box;
    flex: 0 0 0.8rem;
    width: 0.8rem;
    min-width: 0.8rem;
    max-width: 0.8rem;
    height: 0.8rem;
    min-height: 0.8rem;
    max-height: 0.8rem;
    padding: 0;
    border: 1px solid rgb(78 50 2 / 38%);
    border-radius: 50%;
    background: transparent;
    cursor: pointer;
    transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.phase-dot.is-active,
.phase-dot:hover,
.phase-dot:focus-visible {
    background: var(--color-bark);
    border-color: var(--color-bark);
}

.phase-dot.is-active {
    transform: scale(1.25);
}

@media (max-width: 1024px) {
    .home-phases-stage {
        align-items: center;
        padding-block: clamp(1.5rem, 4vw, 3rem);
    }

    .home-phases-intro {
        max-width: min(100%, 38rem);
    }

    .phase-entry {
        grid-template-columns: 1fr;
        align-content: center;
        gap: clamp(1.25rem, 3vw, 2rem);
        text-align: center;
    }

    .phase-media,
    .phase-content {
        order: initial;
    }

    .phase-card-stack {
        min-block-size: clamp(40rem, 78dvh, 52rem);
    }

    .phase-entry h3 {
        margin-bottom: clamp(1.25rem, 3vw, 2rem);
    }

    .phase-entry .description {
        text-align: center;
    }

    .phase-media img,
    .phase-media-placeholder {
        width: min(100%, 10rem);
        max-height: 9rem;
    }
}

@media (max-width: 540px) {
    section.home-phases {
        --phase-step-size: 110dvh;
    }

    section.home-phases::before {
        display: none;
    }

    .home-phases-stage {
        align-items: center;
        padding-block: clamp(1rem, 4svh, 2rem);
    }

    .home-phases-introduction {
        padding-top: 6rem;
        margin-bottom: 0;
        padding-bottom: 2rem;
    }

    .home-phases-intro {
        font-size: clamp(1.1rem, 6vw, 1.55rem);
        line-height: 1.38em;
    }

    .home-phases-cards {
        gap: 1rem;
    }

    .phase-card-stack {
        display: grid;
        min-block-size: auto;
    }

    .phase-entry {
        position: relative;
        inset: auto;
        grid-area: 1 / 1;
        align-content: start;
        align-items: start;
        grid-template-rows: 180px auto;
        gap: 1.15rem;
        padding: clamp(1.25rem, 6vw, 1.75rem);
        border-radius: 0.75rem;
        overflow: visible;
    }

    .phase-content {
        min-height: 0;
    }

    .phase-entry h3 {
        font-size: clamp(2rem, 10.5vw, 3.15rem);
        margin-bottom: 0.6rem;
    }

    .phase-entry .phase-meta {
        margin-bottom: clamp(1.35rem, 6vw, 2.25rem);
    }

    .phase-entry .subtitle {
        font-size: clamp(1.1rem, 5.4vw, 1.35rem);
    }

    .phase-entry .description {
        margin: 0 auto;
        text-wrap: balance;
        width: 90%;
    }
    .phase-entry .description br {
        display: none;
    }

    .phase-media {
        align-self: start;
        width: 100%;
        height: 180px;
        padding: 0.25rem 0.5rem 0.75rem;
    }

    .phase-media img,
    .phase-media-placeholder {
        width: min(100%, 11.5rem);
        height: 100%;
        max-height: none;
    }

    .phase-dots {
        gap: 0.65rem;
    }
}

@media (max-width: 380px) {
    .phase-card-stack {
        min-block-size: auto;
    }

    .phase-entry {
        padding: 1rem;
    }

    .phase-entry h3 {
        font-size: clamp(1.85rem, 10vw, 2.75rem);
    }

    .phase-media img,
    .phase-media-placeholder {
        width: min(100%, 10rem);
        height: 100%;
    }
}

@media (prefers-reduced-motion: reduce) {
    .phase-entry,
    .phase-dot {
        transition: none;
    }
}

.video-lightbox-close {
    position: absolute;
    top: clamp(1rem, 3vw, 2rem);
    right: clamp(1rem, 3vw, 2rem);
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    padding: 0;
    margin: 0;
    background: transparent;
    border-radius: 0;
    color: var(--color-cream);
    border: 0;
    font-size: 25px;
    line-height: 1;
    opacity: 0.5;
    cursor: pointer;
    transition: opacity 0.2s ease;
}

.video-lightbox-close i {
    color: inherit;
}

.video-lightbox-close:hover,
.video-lightbox-close:focus {
    background: transparent;
    color: var(--color-cream);
    opacity: 1;
}

.video-lightbox-open {
    overflow: hidden;
}

.embed-container {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    background: var(--color-ink);
}

.embed-container iframe,
.embed-container object,
.embed-container embed,
.embed-container video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}
@keyframes logo-bloom-frame-1 {
    0%,
    5.1% {
        opacity: 1;
    }
    5.2%,
    95.8% {
        opacity: 0;
    }
    95.9%,
    100% {
        opacity: 1;
    }
}

@keyframes logo-bloom-frame-2 {
    0%,
    4.8% {
        opacity: 0;
    }
    4.9%,
    12.1% {
        opacity: 1;
    }
    12.2%,
    86.8% {
        opacity: 0;
    }
    86.9%,
    96.1% {
        opacity: 1;
    }
    96.2%,
    100% {
        opacity: 0;
    }
}

@keyframes logo-bloom-frame-3 {
    0%,
    11.8% {
        opacity: 0;
    }
    11.9%,
    22.1% {
        opacity: 1;
    }
    22.2%,
    76.8% {
        opacity: 0;
    }
    76.9%,
    87.1% {
        opacity: 1;
    }
    87.2%,
    100% {
        opacity: 0;
    }
}

@keyframes logo-bloom-frame-4 {
    0%,
    21.8% {
        opacity: 0;
    }
    21.9%,
    77.1% {
        opacity: 1;
    }
    77.2%,
    100% {
        opacity: 0;
    }
}
@keyframes scroll-cue {
    0%,
    100% {
        transform: translate(-50%, 0);
    }
    50% {
        transform: translate(-50%, 0.28rem);
    }
}
@media (prefers-reduced-motion: reduce) {
    .home-hero .eyebrow,
    .hero-mark,
    h1.home-logo,
    .hero-tagline,
    .hero-scroll-cue {
        animation: none;
    }

    .logo-bloom-frame {
        animation: none;
    }

    .logo-bloom-frame.frame-1,
    .logo-bloom-frame.frame-2,
    .logo-bloom-frame.frame-3 {
        opacity: 0;
    }

    .logo-bloom-frame.frame-4 {
        opacity: 1;
    }

    .home-hero .eyebrow,
    .hero-mark,
    h1.home-logo,
    .hero-tagline {
        transform: none;
    }

    .hero-scroll-cue {
        opacity: 0.2;
        transform: translateX(-50%);
    }
}


section {
    inline-size: var(--section-inline-size);
    min-block-size: 100dvh;
    overflow: clip;
    position: relative;
}

section > .container,
section > .split,
section > .full-screen,
section > .media {
    width: 100%;
    min-block-size: 100dvh;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

section > .container,
section > .full-screen {
    align-items: center;
}

.overlay {
    position: relative;
}

section.home-intro {
    --intro-scroll-size: 75dvh;
    --intro-sticky-height: 100dvh;
    min-block-size: calc(var(--intro-sticky-height) + var(--intro-scroll-size));
    overflow: visible;
}

section.home-intro > .container {
    position: sticky;
    top: 0;
    min-block-size: var(--intro-sticky-height);
    display: flex;
    flex-direction: column;
    justify-content: center;
    overflow: visible;
}

section.home-intro .read-along {
    position: relative;
    z-index: 1;
}

.home-columns {
    --columns-scroll-size: 140dvh;
    --columns-sticky-height: 100dvh;
    min-block-size: calc(var(--columns-sticky-height) + var(--columns-scroll-size));
    overflow: visible;
}

.home-columns > .container {
    position: sticky;
    top: 0;
    min-block-size: var(--columns-sticky-height);
    display: flex;
    align-items: center;
    overflow: visible;
    padding-block: clamp(4rem, 9vw, 8rem);
}

.home-columns-grid {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
    gap: clamp(2rem, 6vw, 6rem);
    max-width: 78rem;
    margin-inline: auto;
}

.home-columns-text {
    min-width: 0;
    font-family: var(--font-heading);
    font-size: clamp(1.25rem, 5vw, 1.65rem);
    line-height: 1.5em;
    text-wrap: balance;
}
.home-columns-text p {
    margin: 0;
}
.home-columns-text p + p {
    margin-top: 1em;
}

.read-along {
    font-family: var(--font-heading);
    font-size: clamp(1.75rem, 5vw, 2.75rem);
    line-height: 1.3em;
    text-align: center;
    max-width: clamp(40rem, 80vw, 65rem);
    padding-block: clamp(3rem, 5vh, 12rem);
    margin-inline: auto;
    text-wrap: balance;
}
.read-along-line {
    display: block;
}
.read-along-word {
    display: inline-flex;
}
.read-along-letter {
    display: inline-block;
    opacity: 0.16;
    transition: opacity 0.16s linear;
}

@media (max-width: 760px) {
    .home-columns {
        --columns-scroll-size: 170dvh;
        --columns-sticky-height: 100svh;
    }

    .home-columns > .container {
        align-items: center;
        padding-block: clamp(2rem, 7vw, 4rem);
    }

    .home-columns-grid {
        grid-template-columns: 1fr;
        gap: clamp(1.25rem, 5vw, 2rem);
        max-width: 36rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .read-along-letter {
        transition: none;
    }
}

.quote-section {
    --feature-section-height: 80dvh;
    block-size: var(--feature-section-height);
    min-block-size: var(--feature-section-height);
}
@media (max-width: 640px) {
    .quote-section {
        --feature-section-height: 75dvh;
        block-size: var(--feature-section-height);
        min-block-size: var(--feature-section-height);
    }
}
.quote-media {
    position: absolute;
    inset: -8% 0;
    z-index: 0;
    width: 100%;
    height: auto;
    overflow: hidden;
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    will-change: transform;
}

@media (hover: none), (pointer: coarse), (max-width: 800px) {
    .quote-media {
        inset: 0;
        will-change: auto;
    }
}

section.home-testimonial {
    position: relative;
}

section.home-testimonial::after {
    content: '';
    position: absolute;
    left: 0;
    bottom: 0;
    z-index: 2;
    width: 100%;
    height: 80px;
    background: var(--color-cobalt);
    pointer-events: none;
    -webkit-mask-image: url('images/flower-border-top.png');
    mask-image: url('images/flower-border-top.png');
    -webkit-mask-repeat: repeat-x;
    mask-repeat: repeat-x;
    -webkit-mask-position: center top;
    mask-position: center top;
    -webkit-mask-size: auto 100%;
    mask-size: auto 100%;
}

.quote-section > .overlay,
.quote-section > .overlay > .container {
    block-size: var(--feature-section-height);
    min-block-size: var(--feature-section-height);
}

.quote-section > .overlay {
    position: relative;
    z-index: 1;
    width: 100%;
}

.quote-section > .overlay > .container {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 100%;
    padding: clamp(2rem, 5vw, 4rem);
}

.quote-section .overlay h2 {
    font-family: var(--font-secondary);
    color: var(--color-cream);
    text-align: center;
    margin: 0 auto;
    font-size: clamp(1.75rem, 4vw, 3rem);
}

.quote-section .overlay-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    width: 100%;
    block-size: var(--feature-section-height);
    min-block-size: var(--feature-section-height);
}

.quote-section .quote-author {
    color: var(--color-cream);
    font-family: var(--font-heading);
    font-size: clamp(0.95rem, 2vw, 1.1rem);
    line-height: 1.2;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    text-align: center;
    margin: 0;
}

.overlay-content {
    position: relative;
}

[data-reveal],
[data-reveal-item] {
    opacity: 0;
    transform: translate3d(0, 1.5rem, 0);
    transition: opacity 700ms ease, transform 700ms ease;
    will-change: opacity, transform;
}

[data-reveal].is-visible,
[data-reveal-item].is-visible {
    opacity: 1;
    transform: translate3d(0, 0, 0);
}

[data-reveal-item] {
    transition-delay: var(--reveal-delay, 0ms);
}

@media (prefers-reduced-motion: reduce) {
    [data-reveal],
    [data-reveal-item] {
        opacity: 1;
        transform: none;
        transition: none;
    }

}

section.statistics {
    --statistics-gap: clamp(1.5rem, 3vw, 3rem);
    --statistics-panel-x: 12dvw;
    padding-block: clamp(2rem, 5dvw, 3rem);
    overflow: hidden;
}

section.statistics::before {
    content: '';
    width: 45vw;
    height: 65vh;
    position: absolute;
    right: 0;
    top: 0;
    background: url('images/ants-side-panel.png') repeat bottom left / contain;
    z-index: 3;
    transform: translate3d(var(--statistics-panel-x), 0, 0);
    will-change: transform;
}

.statistics-title {
    margin-top: clamp(3rem, 6vw, 8rem);
    margin-bottom: clamp(8rem, 20vw, 15rem);
}

.statistics-title .eyebrow {
    font-family: var(--font-secondary);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin: 0 0 1rem;
}

.statistics-title h2 {
    margin-top: 0;
    font-family: 'Fisterra Morte', sans-serif;
    font-size: clamp(2.5rem, 6vw, 8rem);
    line-height: 1em;
    width: 15ch;
}
.statistics-download {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    margin-top: 2.25rem;
    min-height: clamp(3rem, 8vw, 3.75rem);
    padding: clamp(0.8rem, 2.4vw, 1rem) clamp(1.2rem, 5vw, 2rem);
    border: 1px solid rgb(246 246 200 / 46%);
    border-radius: 999px;
    background: transparent;
    box-shadow: none;
    color: var(--color-cream);
    font-family: inherit;
    font-size: clamp(0.78rem, 2vw, 0.9em);
    line-height: 1;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    transform: translate3d(0, 0, 0);
    transition: background 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, color 0.2s ease, transform 0.2s ease;
}

.statistics-download i {
    font-size: 0.85em;
}

.statistics-download span {
    white-space: nowrap;
}

.statistics-download:hover,
.statistics-download:focus-visible {
    background: var(--color-bark);
    border-color: var(--color-bark);
    box-shadow: 0 0.75rem 1.8rem rgb(31 25 17 / 22%);
    color: var(--color-cream);
    text-decoration: none;
}

section.statistics .statistics-grid {
    position: relative;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    align-content: start;
    gap: var(--statistics-gap);
    margin: 3rem auto;
    width: 100%;
}

.stat {
    display: flex;
    flex-direction: column;
    position: relative;
    z-index: 1;
    margin-bottom: 3rem;
}
.stat .eyebrow {
    font-family: var(--font-secondary);
    font-size: 0.85em;
    text-transform: uppercase;
    margin-top: -25px;
    position: absolute;
}
.stat h4 {
    font-family: var(--font-heading);
    text-transform: capitalize;
    margin: 2px 0;
}
.stat .count {
    font-family: 'Fisterra Morte', serif;
    font-size: clamp(4rem, 6vw, 10rem);
    line-height: 1.1em;
    text-transform: uppercase;
    margin: 0 0 5px;
}
.stat .description {
    margin: 5px 0;
    line-height: 1.2em;
    text-wrap: balance;
    opacity: 0.7;
    width: min(100%, 25ch);
}
.stat .description p {
    margin: 0;
}

section.statistics .ants.horizontal {
    height: 130px;
    margin-block: 3dvw;
    background-image: url('images/ants-horizontal-group.png');
    background-repeat: repeat-x;
    background-position: center center;
    background-size: contain;
    pointer-events: none;
}
@media (max-width: 900px) {
    section.statistics {
        --statistics-gap: clamp(2rem, 7vw, 4rem);
    }

    .statistics-title {
        margin-top: clamp(2rem, 8vw, 4rem);
        margin-bottom: clamp(3rem, 14vw, 6rem);
    }

    .statistics-title h2 {
        width: min(100%, 12ch);
    }

    section.statistics .statistics-grid {
        grid-template-columns: 1fr;
        margin: 0;
    }

    .stat {
        margin-bottom: 0;
    }

    section.statistics .ants.horizontal {
        height: 110px;
        margin-block: 2rem;
    }
}

@media (max-width: 800px) {
    section.statistics::before {
        width: 100vw;
        height: 18vh;
        background-position: bottom center;
        transform: none !important;
        background-size: auto 225px;
    }

    .statistics-title {
        margin: 15vh auto 5vh;
        padding-inline: 1rem;
        text-align: center;
    }

    .statistics-title h2 {
        width: min(100%, 12ch);
        margin-inline: auto;
        font-size: clamp(2.25rem, 11vw, 3.5rem);
    }
}

@media (max-width: 540px) {
    section.statistics {
        --statistics-gap: clamp(2rem, 10vw, 3.5rem);
        padding-block: clamp(4rem, 10vw, 6rem) 10dvh;
    }

    .statistics-title h2 {
        font-size: clamp(2rem, 16vw, 3.5rem);
    }
    .statistics-download {
        max-width: 100%;
        margin: 1.5rem 0 2.5rem;
        gap: 0.7rem;
        white-space: normal;
    }

    .statistics-download span {
        white-space: normal;
        text-align: center;
    }

    section.statistics .statistics-grid {
        margin: 0;
        justify-items: center;
        text-align: center;
    }

    .stat {
        align-items: center;
    }

    .stat .eyebrow {
        position: static;
        margin: 0 0 0.25rem;
    }

    .stat .count {
        font-size: clamp(2.45rem, 15vw, 3.75rem);
    }

    .stat .description {
        margin-inline: auto;
    }

    section.statistics .ants.horizontal {
        display: none;
    }
}

.home-people {
    padding-block: clamp(4rem, 7vw, 6rem);
    overflow: hidden;
}
.home-people .container {
    width: 100%;
    max-width: none;
}
header.home-people-header {
    width: min(75ch, calc(100% - 2rem));
    text-align: center;
    margin: 2rem auto 5rem;
}
.home-people-header h2 {
    color: var(--color-cream);
    font-family: 'Fisterra Morte', serif;
    font-size: clamp(2.5rem, 5vw, 6rem);
    line-height: 1em;
    text-align: center;
    margin: 0 auto;
}

.home-people-header h2::before {
    content: '';
    display: block;
    width: 125px;
    max-width: 40vw;
    aspect-ratio: 300 / 119;
    margin: 0 auto 0.75rem;
    background: var(--color-blaze);
    -webkit-mask-image: url('images/flower-accent-top.png');
    mask-image: url('images/flower-accent-top.png');
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-size: contain;
    mask-size: contain;
}

.home-people-header .description {
    margin: 1.5rem auto 0;
    font-family: var(--font-heading);
    font-size: clamp(1.1rem, 2vw, 1.25rem);
    line-height: 1.4em;
    opacity: 0.75;
    text-wrap: balance;
    opacity: 0.5;
}

.home-people-header .description p {
    margin: 0;
}

.people-carousel {
    position: relative;
    width: 100vw;
    min-height: 80dvh;
    margin-left: calc(50% - 50vw);
    overflow: visible;
}

.people-carousel .owl-stage,
.people-carousel .owl-item {
    min-height: 80dvh;
}

.people-carousel .owl-stage-outer {
    min-height: calc(80dvh + 4rem);
    padding-block: 2rem;
    overflow: hidden;
    touch-action: pan-y pinch-zoom;
}

.people-carousel .owl-stage {
    display: flex;
}

.people-carousel .owl-item {
    display: flex;
    justify-content: center;
    width: auto;
    padding: 0.75rem 0;
}

.people-carousel .owl-item .person-card {
    filter: saturate(0.96) brightness(0.75);
    opacity: 0.8;
    transform: scale(1);
    transition: opacity 260ms ease, filter 260ms ease, box-shadow 260ms ease, transform 260ms ease;
}

.people-carousel .owl-item.center .person-card,
.people-carousel .owl-item .person-card:hover,
.people-carousel .owl-item .person-card:focus-within {
    box-shadow: 0 0.75rem 1.75rem rgba(0, 0, 0, 0.22);
    filter: saturate(1) brightness(1);
    opacity: 1;
    transform: scale(1.025);
}

.people-carousel .owl-nav {
    position: absolute;
    top: calc(2rem + 40dvh);
    left: clamp(1rem, 2vw, 2rem);
    right: clamp(1rem, 2vw, 2rem);
    display: flex;
    justify-content: space-between;
    pointer-events: none;
    transform: translateY(-50%);
    z-index: 200;
}
.people-carousel .owl-nav button.owl-prev,
.people-carousel .owl-nav button.owl-next {
    box-sizing: border-box;
    flex: 0 0 40px;
    width: 40px;
    min-width: 40px;
    max-width: 40px;
    height: 40px;
    min-height: 40px;
    max-height: 40px;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: 50%;
    background: rgb(31 25 17 / 58%);
    -webkit-backdrop-filter: blur(16px) saturate(1.25);
    backdrop-filter: blur(16px) saturate(1.25);
    box-shadow: 0 0.8rem 2rem rgb(0 0 0 / 24%);
    color: var(--color-white);
    font-size: 0.8rem;
    line-height: 1;
    pointer-events: auto;
    cursor: pointer;
    appearance: none;
    transition: background 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

.people-carousel .owl-nav button.owl-prev:hover,
.people-carousel .owl-nav button.owl-prev:focus-visible,
.people-carousel .owl-nav button.owl-next:hover,
.people-carousel .owl-nav button.owl-next:focus-visible {
    background: var(--color-blaze);
    box-shadow: 0 1.1rem 2.8rem rgb(0 0 0 / 36%);
    color: var(--color-cream);
    transform: scale(1.04);
}

.people-carousel .owl-nav button i {
    display: block;
    transform: translateY(-0.08em);
}

.person-card {
    position: relative;
    width: auto;
    min-height: 70dvh;
    height: 80dvh;
    aspect-ratio: 3 / 5;
    margin-inline: auto;
    border-radius: 1rem;
    display: flex;
    align-items: flex-end;
    overflow: hidden;
    background: var(--color-ink);
}

.person-image {
    position: absolute;
    inset: 0;
}
.person-image img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center top;
}

.person-details {
    position: relative;
    z-index: 2;
    width: 100%;
    padding: clamp(2rem, 3vw, 3vw);
    color: var(--color-cream);
    text-align: center;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    background: linear-gradient(0deg, rgba(0, 0, 0, 0.86) 0%, rgba(0, 0, 0, 0.68) 52%, rgba(0, 0, 0, 0) 100%);
    min-height: 30dvh;
    font-family: var(--font-heading);
    font-size: 0.9em;
    line-height: 1.2em;
    text-wrap: balance;
    opacity: 0;
    transform: translate3d(0, 0.75rem, 0);
    transition: opacity 260ms ease, transform 320ms ease;
}

.people-carousel .owl-item.center .person-details,
.people-carousel .person-card:hover .person-details,
.people-carousel .person-card:focus-within .person-details {
    opacity: 1;
    transform: translate3d(0, 0, 0);
}

.person-details h3,
.person-details p {
    margin: 0;
}

.person-details h3 {
    color: var(--color-cream);
    font-family: 'Fisterra Morte', serif;
    font-size: clamp(2.25rem, 4vw, 3rem);
    line-height: 0.95em;
    width: min(100%, 10ch);
    margin: 0 auto;
}

.person-details a {
    text-decoration: none;
}

.person-details > * {
    opacity: 0;
    transform: translate3d(0, 0.65rem, 0);
    transition: opacity 260ms ease, transform 320ms ease;
}

.people-carousel .owl-item.center .person-details > *,
.people-carousel .person-card:hover .person-details > *,
.people-carousel .person-card:focus-within .person-details > * {
    opacity: 1;
    transform: translate3d(0, 0, 0);
}

.people-carousel .owl-item.center .person-details h3,
.people-carousel .person-card:hover .person-details h3,
.people-carousel .person-card:focus-within .person-details h3 {
    transition-delay: 90ms;
}

.people-carousel .owl-item.center .person-position,
.people-carousel .person-card:hover .person-position,
.people-carousel .person-card:focus-within .person-position {
    transition-delay: 150ms;
}

.people-carousel .owl-item.center .person-company,
.people-carousel .person-card:hover .person-company,
.people-carousel .person-card:focus-within .person-company {
    transition-delay: 210ms;
}

.person-card:hover .person-details > *,
.person-card:focus-within .person-details > * {
    transform: translate3d(0, -0.35rem, 0);
}

.person-position {
    color: var(--color-cream);
    font-family: var(--font-heading);
    font-size: 1em;
    display: block;
    margin-top: 0.75rem;
}

.person-company {
    color: var(--color-blaze);
    font-family: var(--font-secondary);
    text-transform: uppercase;
    font-size: 0.9em;
    display: block;
    margin-top: 1rem;
}

.person-video-play {
    flex: 0 0 auto;
    align-self: center;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    min-width: 2.75rem;
    max-width: 2.75rem;
    height: 2.75rem;
    min-height: 2.75rem;
    max-height: 2.75rem;
    margin: 1rem auto 0;
    padding: 0;
    border: 1px solid rgb(246 246 200 / 50%);
    border-radius: 50%;
    background: transparent;
    color: var(--color-cream);
    font-size: 0.85rem;
    line-height: 1;
}

.person-video-play:hover,
.person-video-play:focus-visible {
    background: var(--color-blaze);
    color: var(--color-cream);
    border-color: var(--color-blaze);
}

.people-video-lightbox .video-lightbox-panel {
    width: min(92vw, 64rem);
}

.people-video-lightbox .embed-container {
    aspect-ratio: 16 / 9;
}

@media (prefers-reduced-motion: reduce) {
    .person-details,
    .person-details > * {
        transform: none;
        transition: none;
    }
}

@media (max-width: 900px) {
    .home-people {
        padding-block: clamp(3rem, 9vw, 5rem);
    }

    header.home-people-header {
        margin-block: 1rem 3rem;
    }

    .home-people-header h2 {
        font-size: clamp(2.25rem, 11vw, 3.5rem);
    }

    .people-carousel,
    .people-carousel .owl-stage,
    .people-carousel .owl-item {
        min-height: 72dvh;
    }

    .people-carousel .owl-stage-outer {
        min-height: calc(72dvh + 3rem);
        padding-block: 1.5rem;
    }

    .people-carousel .owl-nav {
        top: calc(1.5rem + 36dvh);
    }

    .person-card {
        width: min(72vw, 24rem);
        min-height: 0;
        height: auto;
        aspect-ratio: 3 / 5;
    }

    .person-details {
        min-height: 26dvh;
    }
}

@media (max-width: 540px) {
    header.home-people-header {
        margin-block: 0;
        padding: 2rem 3rem 5rem;
    }
    .home-people-header h2 {
        font-size: clamp(2rem, 10vw, 2.5rem);
    }

    .home-people-header .description {
        font-size: clamp(1rem, 5vw, 1.1rem);
    }

    .people-carousel,
    .people-carousel .owl-stage,
    .people-carousel .owl-item {
        min-height: 68dvh;
    }

    .people-carousel .owl-stage-outer {
        min-height: calc(68dvh + 2rem);
        padding-block: 1rem;
    }

    .people-carousel .owl-nav {
        top: calc(1rem + 34dvh);
        left: 0.75rem;
        right: 0.75rem;
    }

    .person-card {
        width: min(82vw, 22rem);
        border-radius: 0.75rem;
        min-height: 0;
        height: auto;
    }

    .person-details {
        min-height: auto;
    }

    .person-details h3 {
        font-size: clamp(1.75rem, 11vw, 2.5rem);
    }

    .person-position {
        margin-top: 0.55rem;
    }

    .person-company {
        margin-top: 0.75rem;
    }
}

.home-orgs {
    padding-block: clamp(4rem, 8vw, 9rem);
    min-block-size: auto;
}

.home-orgs-content {
    width: 100%;
    max-width: 70vw;
    margin: 0 auto;
}

.home-orgs-group + .home-orgs-group {
    margin-top: clamp(4rem, 8vw, 8rem);
}
.home-orgs-title {
    color: var(--color-mint);
    font-family: var(--font-heading);
    font-size: 0.9em;
    margin: 0 auto clamp(2rem, 5vw, 3rem);
    text-align: center;
    text-transform: uppercase;
    font-weight: 500;
    letter-spacing: 0.06em;
}
.home-orgs-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: clamp(2rem, 5vw, 6rem);
    align-items: center;
    justify-items: center;
}

.org-logo {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
}

.org-logo a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
}

.org-logo img {
    display: block;
    width: auto;
    max-width: 100%;
    min-width: 0;
    max-inline-size: 160px;
    max-height: 4.75rem;
    object-fit: contain;
    mix-blend-mode: screen;
    transform-origin: center;
    transition: transform 240ms ease;
}

@media (hover: hover) and (pointer: fine) {
    .org-logo a:hover img,
    .org-logo a:focus-visible img,
    .org-logo:hover img {
        transform: scale(1.05);
    }
}

@media (min-width: 1800px) {
    .home-orgs-grid {
        grid-template-columns: repeat(5, minmax(0, 1fr));
    }
}

@media (max-width: 1024px) {
    .home-orgs-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 540px) {
    .home-orgs {
        padding-block: 5rem;
    }

    .home-orgs-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        width: 80%;
        margin: 0 auto;
    }

    .org-logo img {
        max-inline-size: 110px;
        max-height: 3rem;
    }

    .home-orgs [data-reveal-item] {
        opacity: 1;
        transform: none;
        transition: none;
        will-change: auto;
    }
}

footer.site-footer {
    --footer-padding-block: clamp(1.5rem, 4vw, 3rem);
    --footer-padding-inline: 2rem;
    --footer-bottom-padding: clamp(1.25rem, 2vw, 2rem);
    position: sticky;
    bottom: 0;
    z-index: 0;
    padding: var(--footer-padding-block) var(--footer-padding-inline) var(--footer-bottom-padding);
    display: flex;
    justify-content: center;
    min-height: 100dvh;
    box-sizing: border-box;
}

.footer-layout {
    width: 100%;
    min-height: calc(100dvh - (var(--footer-padding-block) + var(--footer-bottom-padding)));
    display: flex;
    flex-direction: column;
    gap: clamp(2rem, 2vw, 5rem);
}

.footer-top-container {
    flex: 1 1 auto;
    width: 100%;
    margin-inline: auto;
    display: flex;
    align-items: center;
}

.footer-top {
    width: 100%;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 2fr) minmax(0, 1fr);
    align-items: center;
    gap: clamp(2rem, 5vw, 5rem);
}

.footer-presenting,
.footer-logo,
.footer-tagline {
    min-width: 0;
}

.footer-presenting {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.footer-logo {
    display: flex;
    align-items: center;
    justify-content: center;
}

.circle-logo {
    position: relative;
    display: grid;
    place-items: center;
    --circle-logo-size: min(100%, 26rem);
    width: var(--circle-logo-size);
    aspect-ratio: 1;
    margin-inline: auto;
    line-height: 0;
}
.circle-logo__ring,
.circle-logo__mark {
    grid-area: 1 / 1;
}
.circle-logo__ring {
    transform-box: fill-box;
    transform-origin: center;
    animation: circle-ring-spin 75s linear infinite;
    will-change: transform;
    width: 100%;
    height: auto;
    overflow: visible;
}
.circle-logo__ring svg {
    display: block;
    width: 100%;
    height: auto;
    overflow: visible;
}
.circle-logo__mark {
    position: absolute;
    inset: 50% auto auto 50%;
    transform: translate(-50%, -50%);
    width: clamp(7rem, 10vw, 8rem);
    z-index: 1;
}
.circle-logo__mark svg {
    display: block;
    width: 100%;
    height: auto;
    overflow: visible;
}
@keyframes circle-ring-spin {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}

@media (max-width: 900px) {
    footer.site-footer {
        position: relative;
        min-height: auto;
        padding: 5rem 2rem 3rem;
    }

    .footer-layout {
        min-height: auto;
    }

    .circle-logo__ring {
        animation: none;
        will-change: auto;
    }
}

.footer-presenting .eyebrow {
    opacity: 0.5;
    margin: 0 auto 1.5em;
}
.presenting-logo-link {
    display: inline-block;
    line-height: 0;
    margin-bottom: 1rem;
}
.presenting-logo-link--mask {
    display: block;
    width: min(140px, 30vw);
    margin-top: 1rem;
    margin-bottom: 0;
}
.presenting-logo-link:hover,
.presenting-logo-link:focus-visible {
    color: var(--color-blaze);
}
.presenting-logo {
    display: inline-block;
    width: clamp(8rem, 12vw, 12rem);
}
.presenting-logo svg {
    display: block;
    width: 100%;
    height: auto;
    overflow: visible;
    fill: currentColor;
}
.presenting-logo--mask {
    display: block;
    width: 100%;
    aspect-ratio: 1250 / 473;
    background-color: currentColor;
    -webkit-mask-image: var(--logo-mask-image);
    -webkit-mask-repeat: no-repeat;
    -webkit-mask-position: center;
    -webkit-mask-size: contain;
    mask-image: var(--logo-mask-image);
    mask-repeat: no-repeat;
    mask-position: center;
    mask-size: contain;
}
.footer-tagline {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
}
.footer-tagline .tag-title {
    overflow: hidden;
    text-align: center;
    width: 75%;
    min-width: 250px;
    margin: 0 auto;
}
.footer-tagline h4 {
    font-size: 1.25em;
    font-family: var(--font-heading);
    text-transform: uppercase;
    margin: 0;
}
.footer-bottom {
    margin-top: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: clamp(1rem, 3vw, 2rem);
    width: 100%;
}
.footer-bottom .credit {
    margin-bottom: 0.5rem;
}
.copyright {
    color: #81796c;
    font-size: 0.75em;
    text-align: center;
}
.copyright a:hover {
    color: var(--color-cream);
}

@media (prefers-reduced-motion: reduce) {
    .circle-logo__ring {
        animation: none;
    }
}
@media (max-width: 900px) {
    .footer-layout {
        justify-content: center;
        gap: clamp(1rem, 4vw, 2rem);
    }

    .footer-top {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: clamp(1rem, 4vw, 2rem);
        text-align: center;
    }

    .footer-logo {
        order: 1;
        width: 100%;
        max-width: 14rem;
    }

    .circle-logo {
        --circle-logo-size: min(100%, 14rem);
    }

    .circle-logo__mark {
        width: clamp(3.5rem, 14vw, 4.5rem);
    }

    .footer-tagline {
        order: 2;
        padding: 2rem 1rem;
        width: 100%;
    }

    .footer-tagline .tag-title {
        width: 100%;
        min-width: 0;
        margin: 0 auto;
    }

    .footer-tagline h4 {
        font-size: clamp(1rem, 4vw, 1.4rem);
    }

    .footer-presenting {
        order: 3;
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: center;
        gap: 0.75rem;
    }

    .footer-presenting .eyebrow {
        flex-basis: 100%;
        margin: 0 auto 0.25rem;
    }

    .presenting-logo-link {
        margin-bottom: 0;
    }

    .presenting-logo-link--mask {
        width: min(80px, 22vw);
        margin-top: 0;
    }

    .presenting-logo {
        width: clamp(4rem, 22vw, 7.5rem);
    }

    .footer-presenting,
    .footer-tagline {
        flex: none;
        width: auto;
    }

    .footer-logo {
        flex: none;
    }

    .footer-bottom {
        margin-top: auto;
        flex-direction: column;
        align-items: center;
        justify-content: flex-start;
        text-align: center;
    }

    .copyright {
        padding: 3rem 0 0;
        text-align: center;
    }

    .copyright br {
        display: none;
    }
}
