/* intro v18 — Emigre clay: blurred photo, ECG draw, typewriter caret */

/* Blurred background photo, sharp panel sits over it */
.intro-clay [data-photo] {
    width: 66%;
    aspect-ratio: 4 / 3;
}
.intro-clay__img {
    object-fit: cover;
    filter: blur(5px) saturate(1.05);
    transform: scale(1.06);
}

/* Heartbeat / ECG line draw (stroke colour = currentColor from Tailwind text-*) */
.intro-clay__ecg-path {
    stroke-dasharray: 1400;
    stroke-dashoffset: 1400;
    animation: intro-clay-ecg 4s linear infinite;
}
@keyframes intro-clay-ecg {
    0%   { stroke-dashoffset: 1400; }
    60%  { stroke-dashoffset: 0; }
    100% { stroke-dashoffset: -1400; }
}

/* Typewriter caret while typing */
.intro-clay__type .is-typing {
    border-right: 2px solid currentColor;
    animation: intro-clay-caret 800ms step-end infinite;
}
@keyframes intro-clay-caret {
    50% { border-color: transparent; }
}

@media (prefers-reduced-motion: reduce) {
    .intro-clay__ecg-path { animation: none; stroke-dashoffset: 0; }
}

/* glossary film — strip scrollport: min-width 0 + width 100% so overflow-x shows next card; mobile widths */
.glossary-film__mask {
    max-width: 100%;
    min-width: 0;
}

.glossary-film__strip {
    display: flex;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow-x: auto;
    overflow-y: visible;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-x;
    scroll-snap-type: x mandatory;
}

.glossary-film__cell {
    scroll-snap-align: center;
}

@media (max-width: 767.98px) {
    .glossary-film__strip {
        padding-inline-start: 0.5rem;
        padding-inline-end: max(0.75rem, 5vw);
        scroll-padding-inline-end: max(0.75rem, 5vw);
    }

    .glossary-film__cell {
        scroll-snap-align: start;
        flex: 0 0 min(20rem, 82vw);
        width: min(20rem, 82vw);
        max-width: min(20rem, 82vw);
    }
}

@media (min-width: 768px) {
    .glossary-film__cell {
        flex: 0 0 20rem;
        width: 20rem;
        max-width: none;
    }
}

/* Bootstrap: grid + gap (row gutters often collapse) */
.tips-detailed__bs-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.5rem;
}

@media (min-width: 768px) {
    .tips-detailed__bs-row {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.tips-detailed__subtitle-max {
    max-width: 42rem;
}

.tips-detailed__thumb {
    width: 3rem;
    height: 3rem;
}

.tips-detailed__cta-thumb {
    width: 2rem;
    height: 2rem;
}

.tips-detailed__min-shrink {
    min-width: 0;
}

/* gallery v15 — hero image + caption chips.
   Geometry shared by both CSS frameworks (Bootstrap has no utilities for it). */
.gallery-hero-chips__section {
    padding-top: 4rem;
    padding-bottom: 4rem;
}

.mxw-5xl {
    max-width: 64rem !important;
}

.mxw-2xl {
    max-width: 42rem !important;
}

.gallery-hero-chips__head {
    margin-bottom: 2.5rem;
}

.gallery-hero-chips__title {
    font-size: 1.875rem;
    margin-bottom: 0.75rem;
}

.gallery-hero-chips__lead {
    font-size: 1.125rem;
}

.gallery-hero-chips__stage {
    aspect-ratio: 16 / 9;
}

.gallery-hero-chips__img {
    object-fit: cover;
}

/* The chips sit in a grid overlay — one chip per cell. Grid cells never overlap, so no
   amount of generated copy can make two chips collide (the cell just grows/wraps). */
.gallery-hero-chips__overlay {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto 1fr auto;
    gap: 0.75rem;
    padding: 1.5rem;
}

.gallery-hero-chips__chip {
    /* both frameworks position these absolutely; the overlay owns placement now */
    position: static !important;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    max-width: 20rem;
    padding: 0.75rem 1rem;
    pointer-events: auto;
    --bs-bg-opacity: 0.95;
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}

/* a flex item never shrinks below its min-content width — let the copy wrap instead */
.gallery-hero-chips__chip > :not(i) {
    min-width: 0;
    overflow-wrap: anywhere;
    word-break: break-word;
}

.gallery-hero-chips__chip > i {
    flex-shrink: 0;
}

/* one chip per corner — four distinct grid cells, so two chips can never share a spot */
.gallery-hero-chips__chip--tl {
    grid-column: 1;
    grid-row: 1;
    justify-self: start;
    align-self: start;
}

.gallery-hero-chips__chip--tr {
    grid-column: 2;
    grid-row: 1;
    justify-self: end;
    align-self: start;
}

.gallery-hero-chips__chip--bl {
    grid-column: 1;
    grid-row: 3;
    justify-self: start;
    align-self: end;
}

.gallery-hero-chips__chip--br {
    grid-column: 2;
    grid-row: 3;
    justify-self: end;
    align-self: end;
}

.gallery-hero-chips__chip-text {
    font-size: 0.75rem;
}

/* Phones/tablets: half a stage is too little for a chip, so the whole thing becomes a
   column — photo first, chips under it. Identical in both frameworks. */
@media (max-width: 767.98px) {
    .gallery-hero-chips__stage {
        aspect-ratio: auto;
        display: flex;
        flex-direction: column;
    }

    .gallery-hero-chips__img {
        position: static !important;
        width: 100% !important;
        height: auto !important;
        aspect-ratio: 16 / 9;
    }

    .gallery-hero-chips__overlay {
        position: static !important;
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: none;
        padding: 0.75rem;
    }

    .gallery-hero-chips__chip,
    .gallery-hero-chips__chip--tl,
    .gallery-hero-chips__chip--tr,
    .gallery-hero-chips__chip--bl,
    .gallery-hero-chips__chip--br {
        grid-column: 1;
        grid-row: auto;
        justify-self: stretch;
        align-self: auto;
        max-width: none;
    }
}

@media (min-width: 768px) {
    .gallery-hero-chips__title {
        font-size: 2.25rem;
    }
}

