/* Reserve each project thumbnail's space before it downloads, including
   when Framer recreates the image during navigation. Keep its natural ratio
   after loading and leave the existing hover animation on the parent. */
.framer-M2MMu .framer-14fz7w2-container img {
    width: 100%;
    height: auto;
}

.framer-M2MMu img:is(
    [src*="/RiauUjzew3uUGdMxoLrUxKeKU"],
    [src*="/LxWBNvO8sURVX5NITwVrtTjKNg"],
    [src*="/s5rtbGuFE3vnVK2NzHyu2cBoGU"],
    [src*="/HCSxdZSTu7ry0w9obhC6safO7mY"]
) {
    aspect-ratio: auto 1024 / 768;
}

.framer-M2MMu img[src*="/Kxd2chID9GLsJhHhhAykgAO358"] {
    aspect-ratio: auto 1000 / 648;
}

.framer-M2MMu img:is(
    [src*="/zMNyLUyW9Vyu9F2l8wG1jGtYGaI"],
    [src*="/nWa6DjOuBnzsBOyk1cO3LkopDY"],
    [src*="/f7aiOiR7OhYlEYJ48EKETmsiY"]
) {
    aspect-ratio: auto 1024 / 664;
}

/* Framer briefly removes the back link and cover while their components load.
   Keep their existing slots so the heading and article body stay in place. */
:root .framer-CdGqX .framer-gytpaz {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    /* Existing button: 14px text at 1.4 line-height, plus 24px padding. */
    grid-template-rows: minmax(43.6px, auto) auto;
    justify-items: start;
}

:root .framer-CdGqX .framer-jnws1h-container {
    grid-row: 1;
}

:root .framer-CdGqX .framer-1ob4opx {
    grid-row: 2;
}

:root .framer-CdGqX .framer-lhdo8c {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: 600px auto;
    justify-items: center;
}

:root .framer-CdGqX .framer-1vtybz9 {
    grid-row: 1;
}

:root .framer-CdGqX .framer-1mc5103 {
    grid-row: 2;
}

@media (min-width: 810px) and (max-width: 1199.98px) {
    :root .framer-CdGqX .framer-lhdo8c {
        grid-template-rows: 500px auto;
    }
}

@media (max-width: 809.98px) {
    :root .framer-CdGqX .framer-lhdo8c {
        grid-template-rows: 400px auto;
    }
}
