@font-face {
    font-family: "DM Sans";
    font-weight: 100 1000;
    src: url("../fonts/DMSans-VariableFont_opsz,wght-EWU5eZj.ttf");
}

@font-face {
    font-family: "DM Sans";
    font-style: italic;
    font-weight: 100 1000;
    src: url("../fonts/DMSans-Italic-VariableFont_opsz,wght-W49Y3_N.ttf");
}

@font-face {
    font-family: "Cormorant";
    font-weight: 300 700;
    src: url("../fonts/Cormorant-VariableFont_wght-gvrVQBW.ttf");
}

@font-face {
    font-family: "Cormorant";
    font-style: italic;
    font-weight: 300 700;
    src: url("../fonts/Cormorant-Italic-VariableFont_wght-OyCbMeN.ttf");
}

@keyframes moveup {
    from {
        transform: translateY(2rem);
    }
}

@keyframes show {
    from {
        opacity: 0;
    }
}

:root {
    --gap: 0.25rem;
    --max-width: 80rem;

    --black: rgb(25 25 23);
    --blue: rgb(84 153 204);
    --dark-blue: rgb(26 45 69);
    --error: rgb(241 79 79);
    --gray: rgb(74 74 68);
    --light-gray: rgb(122 122 110);
    --muted: rgb(228 224 216);
    --orange: rgb(237 234 228);
    --placeholder: rgb(154 154 142);
    --white: rgb(244 241 236);
}

*,
*::before,
*::after {
    box-sizing: border-box;
    margin: 0;
    outline-color: color-mix(
        in oklab,
        rgb(from var(--blue) r g b / 40%) 50%,
        transparent
    );
    padding: 0;
}

::-webkit-scrollbar {
    display: none;
}

a {
    text-decoration: none;
}

body {
    background-color: var(--white);
    color: var(--black);
    display: flex;
    flex-direction: column;
    font-family: "DM Sans", sans-serif;
    line-height: 1.5;
    min-height: 100vh;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    font-weight: normal;
}

html {
    scrollbar-width: none;
}

hr {
    border-bottom: 1px solid rgb(from var(--black) r g b / 12%);
    border-left: none;
    border-right: none;
    border-top: none;
}

main {
    flex-grow: 1;
}

sup {
    font-size: 7px;
    font-weight: 600;
}

.button {
    align-items: center;
    background-color: var(--blue);
    border: none;
    color: white;
    cursor: pointer;
    display: flex;
    font-family: "DM Sans", sans-serif;
    font-size: 11px;
    font-weight: 500;
    gap: calc(var(--gap) * 3);
    letter-spacing: 0.18em;
    line-height: 1.5;
    outline: none;
    padding: 14px 28px;
    text-align: center;
    text-transform: uppercase;
    transition: opacity 200ms;
    width: max-content;
}

.button:hover {
    opacity: 0.75;
}

.button__icon {
    height: 13px;
    width: 13px;
}

.headline {
    color: var(--black);
    font-family: "Cormorant", serif;
    font-size: clamp(1.8rem, 3.5vw, 2.8rem);
    font-weight: 300;
    letter-spacing: -0.01em;
    line-height: 1.1;
}

.link {
    align-items: center;
    border-bottom: 1px solid rgb(from var(--blue) r g b / 40%);
    color: var(--blue);
    display: inline-flex;
    font-family: "DM Sans", sans-serif;
    font-size: 11px;
    font-weight: 500;
    gap: 5px;
    letter-spacing: 0.18em;
    line-height: 1.5;
    padding-bottom: 2px;
    text-transform: uppercase;
    transition: opacity 200ms;
}

.link:hover {
    opacity: 0.65;
}

.link__icon {
    height: 11px;
    width: 11px;
}

.menu-button {
    --menu-button-gap: 3px;
    --menu-button-height: 2px;
    --menu-button-width: 1rem;

    align-items: center;
    background-color: transparent;
    border: none;
    cursor: pointer;
    display: flex;
    flex-direction: column;
    gap: var(--menu-button-gap);
    justify-content: center;
    padding: 4px 2px;
    width: max-content;
}

.menu-button__line {
    background-color: var(--menu-button-color);
    border-radius: calc(var(--menu-button-width) / 2);
    height: var(--menu-button-height);
    transition:
        background-color 300ms cubic-bezier(0.4, 0, 0.2, 1),
        opacity 300ms cubic-bezier(0.4, 0, 0.2, 1),
        transform 300ms cubic-bezier(0.4, 0, 0.2, 1),
        visibility 300ms cubic-bezier(0.4, 0, 0.2, 1);
    width: var(--menu-button-width);
}

.menu-button--open .menu-button__line:first-child {
    transform: translateY(
            calc(var(--menu-button-height) + var(--menu-button-gap))
        )
        rotate(45deg);
}

.menu-button--open .menu-button__line:nth-child(2) {
    opacity: 0;
    transform: scale(0);
    visibility: hidden;
}

.menu-button--open .menu-button__line:last-child {
    transform: translateY(
            calc(-1 * var(--menu-button-height) - var(--menu-button-gap))
        )
        rotate(-45deg);
}

.title {
    color: var(--light-gray);
    font-family: "DM Sans", sans-serif;
    font-size: 10px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
}

.invisible {
    height: 0;
    left: 0;
    position: absolute;
    right: 0;
    top: 0;
    visibility: hidden;
}

.header {
    backdrop-filter: blur(0);
    background-color: transparent;
    border-bottom: 1px solid transparent;
    color: var(--black);
    font-family: "DM Sans", sans-serif;
    left: 0;
    position: fixed;
    right: 0;
    top: 0;
    transition:
        background 300ms,
        border-color 300ms;
    z-index: 2;
}

.header--solid {
    backdrop-filter: blur(8px);
    background-color: rgb(from var(--white) r g b / 96%);
    border-bottom: 1px solid rgb(from var(--black) r g b / 12%);
}

.header__content {
    align-items: center;
    box-sizing: content-box;
    display: flex;
    justify-content: space-between;
    margin: 0 auto;
    max-width: var(--max-width);
    padding: calc(var(--gap) * 5) calc(var(--gap) * 8);

    @media (min-width: 48rem) {
        padding: calc(var(--gap) * 5) calc(var(--gap) * 16);
    }
}

.header__company {
    align-items: center;
    color: var(--white);
    display: flex;
    font-size: 12px;
    font-weight: 500;
    gap: calc(var(--gap) * 3);
    letter-spacing: 0.2em;
    line-height: 1.5;
    text-transform: uppercase;
    transition:
        color 300ms,
        opacity 200ms;
}

.header__company:hover {
    opacity: 0.6;
}

.header--open .header__company,
.header--solid .header__company {
    color: var(--black);
}

.header__logo {
    display: block;
    height: 22px;
    max-width: 100%;
    mix-blend-mode: normal;
    opacity: 0.85;
    transition: opacity 300ms;
    width: auto;
}

.header--solid .header__logo {
    mix-blend-mode: multiply;
    opacity: 0.72;
}

.header__menu.menu-button {
    --menu-button-color: var(--white);

    @media (min-width: 48rem) {
        display: none;
    }
}

.header--open .header__menu,
.header--solid .header__menu {
    --menu-button-color: var(--black);
}

.header__links {
    align-items: center;
    display: none;
    gap: calc(var(--gap) * 10);

    @media (min-width: 48rem) {
        display: flex;
    }
}

.header__link {
    color: rgb(from var(--white) r g b / 70%);
    display: block;
    font-size: 11px;
    font-weight: 400;
    letter-spacing: 0.16em;
    line-height: 1.5;
    position: relative;
    text-transform: uppercase;
    transition: color 300ms cubic-bezier(0.4, 0, 0.2, 1);
}

.header--solid .header__link {
    color: var(--light-gray);
}

.header__link--current {
    color: var(--blue);
}

.header--solid .header__link--current {
    color: var(--blue);
}

.header__link--current::after {
    border-bottom: 1px solid var(--blue);
    bottom: -3px;
    content: "";
    display: block;
    left: 0;
    pointer-events: none;
    position: absolute;
    right: 0;
}

.menu {
    background-color: var(--white);
    display: flex;
    flex-direction: column;
    left: 0;
    min-height: 100vh;
    min-height: 100dvh;
    overflow-y: auto;
    padding: calc(var(--gap) * 24) calc(var(--gap) * 8);
    position: fixed;
    right: 0;
    top: 0;
    transform: translateX(100%);
    transition:
        transform 300ms cubic-bezier(0.16, 1, 0.3, 1),
        visibility 300ms cubic-bezier(0.4, 0, 0.2, 1);
    visibility: hidden;
    z-index: 1;

    @media (min-width: 48rem) {
        display: none;
    }
}

.header--open + .menu {
    transform: translateX(0px);
    visibility: visible;
}

.menu__link {
    border-bottom: 1px solid rgb(from var(--black) r g b / 12%);
    color: var(--black);
    display: block;
    font-size: 13px;
    font-weight: 500;
    letter-spacing: 0.18em;
    line-height: 1.5;
    padding: calc(var(--gap) * 5) 0;
    text-transform: uppercase;
    transition: color 150ms cubic-bezier(0.4, 0, 0.2, 1);
}

.menu__link:hover {
    color: rgb(from var(--black) r g b / 50%);
}

.footer {
    background-color: var(--dark-blue);
    border-top: 1px solid rgb(from var(--black) r g b / 12%);
    padding: calc(var(--gap) * 12) calc(var(--gap) * 8) calc(var(--gap) * 10);

    @media (min-width: 48rem) {
        padding: calc(var(--gap) * 12) calc(var(--gap) * 16)
            calc(var(--gap) * 10);
    }
}

.footer__top {
    border-bottom: 1px solid color-mix(in oklab, white 10%, transparent);
    display: flex;
    flex-direction: column;
    gap: calc(var(--gap) * 10);
    margin: 0 auto calc(var(--gap) * 6);
    max-width: var(--max-width);
    padding-bottom: calc(var(--gap) * 10);

    @media (min-width: 48rem) {
        align-items: flex-end;
        flex-direction: row;
        justify-content: space-between;
    }
}

.footer__company {
    align-items: center;
    color: var(--white);
    display: flex;
    font-family: "Cormorant", serif;
    font-size: clamp(2.5rem, 6vw, 4.5rem);
    font-weight: 300;
    gap: calc(var(--gap) * 3);
    letter-spacing: -0.01em;
    line-height: 1;
    margin-bottom: 0.6rem;
    opacity: 0.85;
    text-transform: uppercase;
    width: max-content;
}

.footer__logo {
    display: block;
    height: 44px;
    max-width: 100%;
    mix-blend-mode: screen;
    opacity: 0.35;
    width: auto;
}

.footer__services {
    color: rgb(from var(--white) r g b / 35%);
    font-family: "DM Sans", sans-serif;
    font-size: 11px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
}

.footer__links {
    display: flex;
    flex-wrap: wrap;
    gap: calc(var(--gap) * 3) calc(var(--gap) * 6);
}

.footer__link {
    color: rgb(from var(--white) r g b / 45%);
    font-family: "DM Sans", sans-serif;
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.18em;
    line-height: 1.5;
    text-transform: uppercase;
    transition: color 200ms;
}

.footer__link:hover {
    color: rgb(from var(--white) r g b / 90%);
}

.footer__bottom {
    display: flex;
    flex-direction: column;
    gap: calc(var(--gap) * 3);
    margin: 0 auto;
    max-width: var(--max-width);

    @media (min-width: 48rem) {
        align-items: center;
        flex-direction: row;
        justify-content: space-between;
    }
}

.footer__copyright {
    color: rgb(from var(--white) r g b / 25%);
    font-family: "DM Sans", sans-serif;
    font-size: 10px;
    letter-spacing: 0.08em;
}

.footer__about {
    color: rgb(from var(--white) r g b / 20%);
    font-family: "DM Sans", sans-serif;
    font-size: 10px;
    letter-spacing: 0.08em;
}

.footer__email {
    color: inherit;
}

.form {
    display: flex;
    flex-direction: column;
    gap: calc(var(--gap) * 8);
}

.form__error {
    color: var(--error);
    font-size: 10px;
    margin-top: 0.5rem;
    text-transform: uppercase;
}

.form__error--large {
    font-size: 14px;
}

.form__label {
    color: var(--light-gray);
    display: block;
    font-family: "DM Sans", sans-serif;
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.18em;
    line-height: 1.5;
    margin-bottom: 4px;
    text-transform: uppercase;
}

.form__input,
.form__select,
.form__textarea {
    background-color: transparent;
    border-bottom: 1px solid rgb(from var(--black) r g b / 20%);
    border-left: none;
    border-right: none;
    border-top: none;
    color: var(--black);
    display: block;
    font-family: "DM Sans", sans-serif;
    font-size: 14px;
    font-weight: 400;
    letter-spacing: inherit;
    line-height: 1.5;
    outline: none;
    padding: 12px 0;
    width: 100%;
}

.form__input::placeholder,
.form__textarea::placeholder {
    color: var(--placeholder);
}

.form__select {
    cursor: pointer;
}

.form__option {
    background-color: var(--white);
}

.form__textarea {
    resize: none;
}

.login,
.registration {
    margin: 0 auto;
    max-width: 40rem;
    padding: calc(var(--gap) * 32) calc(var(--gap) * 8);

    @media (min-width: 48rem) {
        padding: calc(var(--gap) * 32) calc(var(--gap) * 16);
    }
}

.login__title,
.registration__title {
    color: var(--black);
    font-family: "Cormorant", serif;
    font-size: clamp(2.4rem, 5vw, 4rem);
    font-weight: 300;
    letter-spacing: -0.01em;
    line-height: 1.05;
    margin-bottom: 2.5rem;
    text-align: center;
}

.login__button,
.registration__button {
    align-self: center;
}

.hero {
    background-color: var(--black);
    height: 100vh;
    height: 100svh;
    min-height: 600px;
    overflow: hidden;
    position: relative;
}

.hero__image {
    animation: 1.2s show;
    display: block;
    height: 120%;
    left: 0;
    max-width: 100%;
    object-fit: cover;
    object-position: center 40%;
    opacity: 0.8;
    position: absolute;
    right: 0;
    top: 0;
    width: 100%;
}

.hero__gradient {
    background: linear-gradient(
        rgb(from var(--black) r g b / 15%),
        rgb(from var(--black) r g b / 55%)
    );
    bottom: 0;
    left: 0;
    position: absolute;
    right: 0;
    top: 0;
}

.hero__content {
    display: flex;
    flex-direction: column;
    height: 100%;
    justify-content: flex-end;
    margin: 0 auto;
    max-width: calc(var(--max-width) + 2 * calc(var(--gap) * 8));
    padding: 0 calc(var(--gap) * 8) calc(var(--gap) * 16);
    position: relative;

    @media (min-width: 48rem) {
        max-width: calc(var(--max-width) + 2 * calc(var(--gap) * 16));
        padding: 0 calc(var(--gap) * 16) calc(var(--gap) * 16);
    }
}

.hero__services {
    animation:
        1s cubic-bezier(0.4, 0, 0.2, 1) 400ms both show,
        1s cubic-bezier(0.4, 0, 0.2, 1) 400ms both moveup;
    color: rgb(from var(--white) r g b / 65%);
    font-size: 11px;
    letter-spacing: 0.22em;
    margin-bottom: 1.2rem;
    text-transform: uppercase;
}

.hero__headline {
    animation:
        1s cubic-bezier(0.4, 0, 0.2, 1) 400ms both show,
        1s cubic-bezier(0.4, 0, 0.2, 1) 400ms both moveup;
    color: var(--white);
    font-family: "Cormorant", serif;
    font-size: clamp(3.5rem, 9vw, 8rem);
    font-weight: 300;
    letter-spacing: -0.01em;
    line-height: 0.92;
    margin-bottom: calc(var(--gap) * 10);
    max-width: 14ch;
}

.hero__bottom {
    animation: 1s cubic-bezier(0.4, 0, 0.2, 1) 800ms both show;
    display: flex;
    flex-direction: column;

    @media (min-width: 48rem) {
        align-items: flex-end;
        flex-direction: row;
        justify-content: space-between;
    }
}

.hero__text {
    color: rgb(from var(--white) r g b / 65%);
    font-size: 13px;
    line-height: 1.7;
    margin-bottom: calc(var(--gap) * 10);
    max-width: 36ch;

    @media (min-width: 48rem) {
        margin-bottom: 0;
    }
}

.hero__link {
    align-items: center;
    color: rgb(from var(--white) r g b / 65%);
    display: flex;
    font-size: 11px;
    gap: calc(var(--gap) * 3);
    letter-spacing: 0.1em;
    line-height: 1.5;
    text-transform: uppercase;
}

.hero__icon {
    height: 14px;
    transform: translateY(0px);
    transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1);
    width: 14px;
}

.hero__link:hover .hero__icon {
    transform: translateY(var(--gap));
}

.hero__stat {
    animation: 1.5s cubic-bezier(0.4, 0, 0.2, 1) 1s both show;
    bottom: 0;
    color: var(--white);
    font-size: 9px;
    letter-spacing: 0.28em;
    opacity: 0.22;
    position: absolute;
    right: calc(var(--gap) * 8);
    text-align: center;
    text-transform: uppercase;
    transform: translateY(-50%);
    user-select: none;

    @media (min-width: 48rem) {
        bottom: auto;
        right: calc(var(--gap) * 16);
        top: 50%;
    }
}

.hero__count {
    font-family: "Cormorant", serif;
    font-size: clamp(6rem, 14vw, 12rem);
    font-weight: 200;
    letter-spacing: normal;
    line-height: 1;
}

.home-projects {
    box-sizing: content-box;
    margin: 0 auto;
    max-width: var(--max-width);
    padding: calc(var(--gap) * 24) calc(var(--gap) * 8);

    @media (min-width: 48rem) {
        padding: calc(var(--gap) * 24) calc(var(--gap) * 16);
    }
}

.home-projects__header {
    align-items: flex-end;
    display: flex;
    justify-content: space-between;
    margin-bottom: calc(var(--gap) * 12);
}

.home-projects__title {
    margin-bottom: 0.5rem;
}

.home-projects__content {
    display: grid;
    gap: calc(var(--gap) * 6);
    grid-template-columns: repeat(1, minmax(0, 1fr));

    @media (min-width: 48rem) {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

.home-projects__top {
    aspect-ratio: 4 / 5;
    background-color: var(--muted);
    margin-bottom: calc(var(--gap) * 4);
    overflow: hidden;
}

.home-projects__image {
    display: block;
    height: 100%;
    max-width: 100%;
    object-fit: cover;
    transform: scale(1);
    transition: transform 700ms cubic-bezier(0.4, 0, 0.2, 1);
    width: 100%;
}

.home-projects__project:hover .home-projects__image {
    transform: scale(1.04);
}

.home-projects__bottom {
    align-items: flex-start;
    display: flex;
    justify-content: space-between;
}

.home-projects__name {
    color: var(--black);
    font-family: "Cormorant", serif;
    font-size: 1.05rem;
    font-weight: 400;
    margin-bottom: 0.2rem;
}

.home-projects__location {
    color: var(--light-gray);
    font-family: "DM Sans", sans-serif;
    font-size: 11px;
}

.home-projects__kind {
    color: var(--blue);
    font-family: "DM Sans", sans-serif;
    font-size: 10px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.skolkovo {
    height: clamp(260px, 36vw, 520px);
    overflow: hidden;
}

.skolkovo__image {
    display: block;
    height: 100%;
    max-width: 100%;
    object-fit: cover;
    object-position: center 45%;
    width: 100%;
}

.philosophy {
    background-color: var(--dark-blue);
    border-top: 1px solid rgb(from var(--black) r g b / 12%);
    overflow: hidden;
    padding: calc(var(--gap) * 28) calc(var(--gap) * 8);
    position: relative;

    @media (min-width: 48rem) {
        padding: calc(var(--gap) * 28) calc(var(--gap) * 16);
    }
}

.philosophy__image {
    bottom: 0;
    display: block;
    height: 100%;
    left: 0;
    max-width: 100%;
    object-fit: cover;
    object-position: center;
    opacity: 0.07;
    position: absolute;
    right: 0;
    top: 0;
    width: 100%;
}

.philosophy__content {
    margin: 0 auto;
    max-width: 48rem;
    text-align: center;
}

.philosophy__title {
    color: rgb(from var(--white) r g b / 40%);
    margin-bottom: 2rem;
}

.philosophy__quote {
    color: var(--white);
    font-family: "Cormorant", serif;
    font-size: clamp(1.6rem, 4vw, 3rem);
    font-style: italic;
    font-weight: 300;
    letter-spacing: -0.01em;
    line-height: 1.25;
    margin-bottom: calc(var(--gap) * 6);
}

.philosophy__quote-origin {
    color: rgb(from var(--white) r g b / 35%);
    font-family: "DM Sans", sans-serif;
    font-size: 11px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
}

.home-studio {
    align-items: center;
    border-top: 1px solid rgb(from var(--black) r g b / 12%);
    box-sizing: content-box;
    display: grid;
    gap: calc(var(--gap) * 16);
    grid-template-columns: repeat(1, minmax(0, 1fr));
    margin: 0 auto;
    max-width: var(--max-width);
    padding: calc(var(--gap) * 24) calc(var(--gap) * 8);

    @media (min-width: 48rem) {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        padding: calc(var(--gap) * 24) calc(var(--gap) * 16);
    }
}

.home-studio__container {
    aspect-ratio: 4 / 3;
    background-color: var(--muted);
    overflow: hidden;
}

.home-studio__image {
    display: block;
    height: 100%;
    max-width: 100%;
    object-fit: cover;
    object-position: center;
    width: 100%;
}

.home-studio__title {
    margin-bottom: 1.2rem;
}

.home-studio__headline {
    margin-bottom: 1.5rem;
}

.home-studio__text {
    color: var(--gray);
    font-family: "DM Sans", sans-serif;
    font-size: 14px;
    line-height: 1.85;
    margin-bottom: 2rem;
    max-width: 48ch;
}

.projects {
    box-sizing: content-box;
    margin: 0 auto;
    max-width: var(--max-width);
    padding: calc(var(--gap) * 32) calc(var(--gap) * 8) calc(var(--gap) * 24);

    @media (min-width: 48rem) {
        padding: calc(var(--gap) * 32) calc(var(--gap) * 16)
            calc(var(--gap) * 24);
    }
}

.projects__header {
    border-bottom: 1px solid rgb(from var(--black) r g b / 12%);
    display: flex;
    flex-direction: column;
    gap: calc(var(--gap) * 8);
    justify-content: space-between;
    margin-bottom: calc(var(--gap) * 16);
    padding-bottom: calc(var(--gap) * 8);

    @media (min-width: 48rem) {
        align-items: flex-end;
        flex-direction: row;
    }
}

.projects__title {
    margin-bottom: 0.8rem;
}

.projects__headline {
    font-size: clamp(2.2rem, 5vw, 4rem);
    line-height: 1.05;
}

.projects__filters {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    gap: calc(var(--gap) * 5);
}

.projects__filter {
    border-bottom: 1px solid transparent;
    color: var(--light-gray);
    font-family: "DM Sans", sans-serif;
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.14em;
    line-height: 1.5;
    padding-bottom: 2px;
    text-transform: uppercase;
    transition:
        border-color 200ms,
        color 200ms;
}

.projects__filter--current {
    border-color: var(--blue);
    color: var(--blue);
}

.projects__content {
    align-items: start;
    column-gap: calc(var(--gap) * 6);
    display: grid;
    grid-template-columns: repeat(1, minmax(0, 1fr));
    row-gap: calc(var(--gap) * 12);

    @media (min-width: 40rem) {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    @media (min-width: 64rem) {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    @media (min-width: 80rem) {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.projects__project {
    cursor: pointer;
    display: flex;
    flex-direction: column;
}

.projects__top {
    aspect-ratio: 9 / 5;
    background-color: var(--muted);
    flex: 1;
    min-height: 0;
    overflow: hidden;
    position: relative;
}

.projects__image {
    display: block;
    height: 100%;
    max-width: 100%;
    object-fit: cover;
    transform: scale(1);
    transition: transform 700ms cubic-bezier(0.16, 1, 0.3, 1);
    width: 100%;
}

.projects__project:hover .projects__image {
    transform: scale(1.04);
}

.projects__gradient {
    background-image: linear-gradient(
        to top,
        rgb(from var(--black) r g b / 8%) 0%,
        transparent 40%
    );
    bottom: 0;
    left: 0;
    position: absolute;
    right: 0;
    top: 0;
}

.projects__project:hover .projects__gradient {
    background-image: linear-gradient(
        to top,
        rgb(from var(--black) r g b / 60%) 0%,
        transparent 55%
    );
}

.projects__arrow-icon {
    color: var(--white);
    height: 18px;
    opacity: 0;
    position: absolute;
    right: 16px;
    top: 16px;
    transition: opacity 300ms;
    width: 18px;
}

.projects__project:hover .projects__arrow-icon {
    opacity: 0.9;
}

.projects__area {
    bottom: 14px;
    color: rgb(from var(--white) r g b / 75%);
    font-family: "DM Sans", sans-serif;
    font-size: 10px;
    left: 14px;
    letter-spacing: 0.12em;
    opacity: 0;
    position: absolute;
    transition: opacity 300ms;
}

.projects__project:hover .projects__area {
    opacity: 1;
}

.projects__bottom {
    align-items: flex-start;
    display: flex;
    flex-shrink: 0;
    gap: calc(var(--gap) * 4);
    justify-content: space-between;
    padding: calc(var(--gap) * 4) 0 var(--gap);
}

.projects__name {
    color: var(--black);
    font-family: "Cormorant", serif;
    font-size: 1.05rem;
    font-weight: 400;
    line-height: 1.3;
    margin-bottom: 0.3rem;
}

.projects__location {
    color: var(--light-gray);
    font-family: "DM Sans", sans-serif;
    font-size: 11px;
    letter-spacing: 0.1em;
}

.projects__kind {
    color: var(--blue);
    flex-shrink: 0;
    font-family: "DM Sans", sans-serif;
    font-size: 10px;
    letter-spacing: 0.14em;
    padding-top: 0.1rem;
    text-transform: uppercase;
    white-space: nowrap;
}

.project-modal-backdrop {
    background-color: rgb(from var(--black) r g b / 88%);
    display: flex;
    height: 100vh;
    height: 100dvh;
    left: 0;
    opacity: 0;
    pointer-events: none;
    position: fixed;
    right: 0;
    top: 0;
    transition:
        opacity 300ms cubic-bezier(0.16, 1, 0.3, 1),
        visibility 300ms cubic-bezier(0.16, 1, 0.3, 1);
    visibility: hidden;
    z-index: 2;
}

.project-modal-backdrop--open {
    opacity: 1;
    pointer-events: auto;
    visibility: visible;
}

.project-modal {
    background-color: var(--white);
    display: flex;
    flex-direction: column;
    margin: auto;
    max-height: 92vh;
    max-height: 92dvh;
    overflow-y: auto;
    transform: scale(0.5);
    transition: transform 300ms cubic-bezier(0.16, 1, 0.3, 1);
    width: min(92vw, 1060px);

    @media (min-width: 48rem) {
        flex-direction: row;
    }
}

.project-modal-backdrop--open .project-modal {
    transform: scale(1);
}

.project-modal__top-embla {
    background-color: var(--muted);
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: calc(92vh / 2) auto;
    grid-template-rows: calc(92dvh / 2) auto;

    @media (min-width: 48rem) {
        grid-template-rows: minmax(300px, 1fr) auto;
        width: 55%;
    }
}

.project-modal__top-embla-viewport {
    overflow: hidden;
    position: relative;
}

.project-modal__top-embla-container {
    display: flex;
    height: 100%;
    touch-action: pan-y pinch-zoom;
}

.project-modal__top-embla-slide {
    flex: 0 0 100%;
    min-width: 0;
}

.project-modal__top-embla-image {
    display: block;
    height: 100%;
    max-width: 100%;
    object-fit: cover;
    width: 100%;
}

.project-modal__previous,
.project-modal__next {
    align-items: center;
    backdrop-filter: blur(4px);
    background-color: rgb(from var(--white) r g b / 15%);
    border: none;
    color: var(--white);
    cursor: pointer;
    display: flex;
    justify-content: center;
    letter-spacing: inherit;
    line-height: 1;
    padding: 5px;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
}

.project-modal__previous {
    left: 12px;
}

.project-modal__next {
    right: 12px;
}

.project-modal__snap {
    bottom: 12px;
    color: rgb(from var(--white) r g b / 70%);
    font-family: "DM Sans", sans-serif;
    font-size: 10px;
    letter-spacing: 0.14em;
    position: absolute;
    right: 12px;
}

.project-modal__bottom-embla {
    background-color: var(--muted);
    border-top: 1px solid rgb(from var(--black) r g b / 10%);
    padding: calc(var(--gap) * 2 - 2px);
}

.project-modal__bottom-embla-viewport {
    overflow: hidden;
}

.project-modal__bottom-embla-container {
    display: flex;
    touch-action: pan-y pinch-zoom;
}

.project-modal__bottom-embla-slide {
    flex: 0 0 68px;
    height: 52px;
    min-width: 0;
}

.project-modal__bottom-embla-button {
    background-color: transparent;
    border: 2px solid transparent;
    cursor: pointer;
    font-size: 1rem;
    font-weight: 500;
    height: 100%;
    letter-spacing: inherit;
    line-height: 1.5;
    opacity: 0.55;
    outline: none;
    overflow: hidden;
    padding: 0;
    transition:
        border 200ms,
        opacity 200ms;
    width: 100%;
}

.project-modal__bottom-embla-slide--current
    .project-modal__bottom-embla-button {
    border: 2px solid var(--blue);
    opacity: 1;
}

.project-modal__bottom-embla-image {
    display: block;
    height: 100%;
    max-width: 100%;
    object-fit: cover;
    width: 100%;
}

.project-modal__right {
    display: flex;
    flex-direction: column;
    padding: calc(var(--gap) * 10);

    @media (min-width: 48rem) {
        overflow-y: auto;
        width: 45%;
    }
}

.project-modal__close {
    align-items: center;
    align-self: flex-start;
    background-color: transparent;
    border: none;
    color: var(--blue);
    cursor: pointer;
    display: inline-flex;
    font-family: "DM Sans", sans-serif;
    font-size: 10px;
    font-weight: 500;
    gap: 0.4rem;
    letter-spacing: 0.2em;
    line-height: 1.5;
    margin-bottom: 2rem;
    padding: 0;
    text-transform: uppercase;
}

.project-modal__close-icon {
    height: 12px;
    width: 12px;
}

.project-modal__kind {
    color: var(--light-gray);
    font-family: "DM Sans", sans-serif;
    font-size: 10px;
    letter-spacing: 0.2em;
    margin-bottom: 0.6rem;
    text-transform: uppercase;
}

.project-modal__name {
    color: var(--black);
    font-family: "Cormorant", serif;
    font-size: clamp(1.6rem, 3.5vw, 2.6rem);
    font-weight: 300;
    line-height: 1.1;
    margin-bottom: 1.5rem;
}

.project-modal__metadata {
    border-bottom: 1px solid rgb(from var(--black) r g b / 12%);
    border-top: 1px solid rgb(from var(--black) r g b / 12%);
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin-bottom: calc(var(--gap) * 8);
    padding: calc(var(--gap) * 6) 0;
    row-gap: calc(var(--gap) * 5);
}

.project-modal__metadata-title {
    letter-spacing: 0.14em;
    margin-bottom: 0.2rem;
}

.project-modal__metadata-text {
    color: var(--black);
    font-size: 13px;
    line-height: 1.45;
}

.project-modal__text {
    color: var(--gray);
    font-family: "DM Sans", sans-serif;
    font-size: 14px;
    line-height: 1.85;
}

.studio {
    box-sizing: content-box;
    display: grid;
    gap: calc(var(--gap) * 16);
    grid-template-columns: repeat(1, minmax(0, 1fr));
    margin: 0 auto;
    max-width: var(--max-width);
    padding: calc(var(--gap) * 32) calc(var(--gap) * 8) calc(var(--gap) * 24);

    @media (min-width: 48rem) {
        grid-template-columns: repeat(12, minmax(0, 1fr));
        padding: calc(var(--gap) * 32) calc(var(--gap) * 16)
            calc(var(--gap) * 24);
    }
}

.studio__top {
    @media (min-width: 48rem) {
        grid-column: span 5 / span 5;
    }
}

.studio__title {
    margin-bottom: 2rem;
}

.studio__container {
    aspect-ratio: 3 / 4;
    background-color: rgb(216 212 204);
    overflow: hidden;
    position: relative;
}

.studio__image {
    bottom: 0;
    display: block;
    height: 100%;
    left: 0;
    max-width: 100%;
    object-fit: cover;
    position: absolute;
    right: 0;
    top: 0;
    width: 100%;
}

.studio__bottom {
    display: flex;
    flex-direction: column;
    justify-content: center;

    @media (min-width: 48rem) {
        grid-column: span 7 / span 7;
    }
}

.studio__headline {
    font-size: clamp(2.2rem, 4.5vw, 3.8rem);
    line-height: 1.08;
    margin-bottom: 2.5rem;
}

.studio__group {
    color: var(--gray);
    display: flex;
    flex-direction: column;
    font-family: "DM Sans", sans-serif;
    font-size: 14px;
    gap: 1.4rem;
    line-height: 1.9;
    max-width: 60ch;
}

.studio__list-title {
    color: var(--black);
    font-size: 14px;
    font-weight: 500;
    line-height: 1.9;
    margin-bottom: 0.6rem;
}

.studio__list {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    list-style-type: none;
}

.studio__item {
    display: flex;
    gap: 0.6rem;
}

.studio__item::before {
    color: var(--blue);
    content: "•";
}

.studio__logo-container {
    display: flex;
    justify-content: flex-end;
    margin-top: 2.5rem;
}

.studio__logo {
    display: block;
    height: auto;
    max-width: 100%;
    mix-blend-mode: multiply;
    opacity: 0.55;
    width: 38px;
}

.studio__stats {
    border-top: 1px solid rgb(from var(--black) r g b / 12%);
    display: flex;
    font-family: "DM Sans", sans-serif;
    gap: calc(var(--gap) * 12);
    margin-top: calc(var(--gap) * 12);
    padding-top: calc(var(--gap) * 8);

    color: var(--light-gray);
    font-size: 11px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}

.studio__count {
    color: var(--blue);
    font-family: "Cormorant", serif;
    font-size: 2.4rem;
    font-weight: 300;
    line-height: 1;
    margin-bottom: 0.3rem;
}

.services {
    box-sizing: content-box;
    display: grid;
    gap: calc(var(--gap) * 12);
    grid-template-columns: repeat(1, minmax(0, 1fr));
    margin: 0 auto;
    max-width: var(--max-width);
    padding: calc(var(--gap) * 24) calc(var(--gap) * 8);

    @media (min-width: 48rem) {
        grid-template-columns: repeat(12, minmax(0, 1fr));
        padding: calc(var(--gap) * 24) calc(var(--gap) * 16);
    }
}

.services__title {
    padding-top: 0.4rem;

    @media (min-width: 48rem) {
        grid-column: span 3 / span 3;
    }
}

.services__list {
    @media (min-width: 48rem) {
        grid-column: span 9 / span 9;
    }
}

.services__item {
    border-bottom: 1px solid rgb(from var(--black) r g b / 12%);
}

.services__item:first-child {
    border-top: 1px solid rgb(from var(--black) r g b / 12%);
}

.services__header {
    align-items: baseline;
    cursor: pointer;
    display: flex;
    gap: calc(var(--gap) * 8);
    justify-content: space-between;
    padding: calc(var(--gap) * 6) calc(calc(var(--gap) * 6) + 14px)
        calc(var(--gap) * 6) 0;
    position: relative;

    @media (min-width: 48rem) {
        justify-content: flex-start;
    }
}

.services__kind {
    color: var(--black);
    font-family: "Cormorant", serif;
    font-size: clamp(1.1rem, 2.5vw, 1.6rem);
    font-weight: 300;
    letter-spacing: -0.01em;
    line-height: 1.5;
}

.services__count {
    color: var(--light-gray);
    font-family: "DM Sans", sans-serif;
    font-size: 10px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    white-space: nowrap;
}

.services__icon {
    color: var(--light-gray);
    font-weight: 500;
    height: 14px;
    position: absolute;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    transition:
        color 300ms cubic-bezier(0.4, 0, 0.2, 1),
        opacity 300ms cubic-bezier(0.4, 0, 0.2, 1);
    width: 14px;
}

.services__item--open .services__icon {
    color: var(--blue);
}

[data-icon-add] {
    opacity: 1;
}

.services__item--open [data-icon-add] {
    opacity: 0;
}

[data-icon-remove] {
    opacity: 0;
}

.services__item--open [data-icon-remove] {
    opacity: 1;
}

.services__content {
    border-left: 2px solid var(--blue);
    color: var(--gray);
    display: grid;
    font-family: "DM Sans", sans-serif;
    font-size: 14px;
    grid-template-rows: 0fr;
    line-height: 1.85;
    margin-bottom: 0;
    padding-left: calc(var(--gap) * 4);
    transition:
        grid-template-rows 300ms cubic-bezier(0.4, 0, 0.2, 1),
        margin-bottom 300ms cubic-bezier(0.4, 0, 0.2, 1);
}

.services__item--open .services__content {
    grid-template-rows: 1fr;
    margin-bottom: calc(var(--gap) * 8);
}

.services__foldable {
    grid-row: 1 / span 2;
    max-width: 52ch;
    overflow: hidden;
}

.contact {
    box-sizing: content-box;
    display: grid;
    gap: calc(var(--gap) * 16);
    grid-template-columns: repeat(1, minmax(0, 1fr));
    margin: 0 auto;
    max-width: var(--max-width);
    padding: calc(var(--gap) * 32) calc(var(--gap) * 8);

    @media (min-width: 48rem) {
        grid-template-columns: repeat(12, minmax(0, 1fr));
        padding: calc(var(--gap) * 32) calc(var(--gap) * 16);
    }
}

.contact__header {
    @media (min-width: 48rem) {
        grid-column: span 5 / span 5;
    }
}

.contact__title {
    margin-bottom: 1.5rem;
}

.contact__headline {
    font-size: clamp(2.4rem, 5vw, 4rem);
    line-height: 1.05;
    margin-bottom: 2.5rem;
}

.contact__text {
    color: var(--gray);
    font-family: "DM Sans", sans-serif;
    font-size: 14px;
    line-height: 1.85;
    max-width: 40ch;
}

.contact__form {
    @media (min-width: 48rem) {
        grid-column: span 7 / span 7;
    }
}

.contact__group {
    display: grid;
    gap: calc(var(--gap) * 8);
    grid-template-columns: repeat(1, minmax(0, 1fr));

    @media (min-width: 40rem) {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.contact-form-errors-container .form__error:first-child {
    margin-top: 0;
}

.contact-modal-backdrop {
    background-color: rgb(from var(--black) r g b / 88%);
    display: flex;
    height: 100vh;
    height: 100dvh;
    left: 0;
    opacity: 0;
    pointer-events: none;
    position: fixed;
    right: 0;
    top: 0;
    transition:
        opacity 300ms cubic-bezier(0.16, 1, 0.3, 1),
        visibility 300ms cubic-bezier(0.16, 1, 0.3, 1);
    visibility: hidden;
    z-index: 2;
}

.contact-modal-backdrop--open {
    opacity: 1;
    pointer-events: auto;
    visibility: visible;
}

.contact-modal {
    background-color: var(--white);
    margin: auto;
    max-height: 92vh;
    max-height: 92dvh;
    overflow-y: auto;
    padding: calc(var(--gap) * 32) calc(var(--gap) * 8);
    text-align: center;
    transform: scale(0.5);
    transition: transform 300ms cubic-bezier(0.16, 1, 0.3, 1);
    width: min(92vw, 1060px);

    @media (min-width: 48rem) {
        padding: calc(var(--gap) * 32) calc(var(--gap) * 16);
    }
}

.contact-modal-backdrop--open .contact-modal {
    transform: scale(1);
}

.contact-modal__message {
    color: var(--black);
    font-family: "Cormorant", serif;
    font-size: 2rem;
    font-weight: 300;
    line-height: 1.1;
    margin-bottom: 1.5rem;
}

.contact-modal__email {
    color: var(--blue);
}

.contact-modal__close {
    align-items: center;
    align-self: flex-start;
    background-color: transparent;
    border: none;
    color: var(--blue);
    cursor: pointer;
    display: inline-flex;
    font-family: "DM Sans", sans-serif;
    font-size: 10px;
    font-weight: 500;
    gap: 0.4rem;
    letter-spacing: 0.2em;
    line-height: 1.5;
    padding: 0;
    text-transform: uppercase;
}

.contact-modal__close-icon {
    height: 12px;
    width: 12px;
}
