:root {
    --color-text: #00071f;
    --color-background: #E9E9E9;
    --color-secondary-background: #b4d7e4;
    --color-primary: #0F4C81;
    --color-secondary: #3C8DAD;
    --color-accent: #FF8040;
    --color-hover: #cacaca;

    --width-max: 1280px;

    --font-size-h1: 4.210rem;
    --font-size-h2: 3.158rem;
    --font-size-h3: 2.369rem;
    --font-size-h4: 1.777rem;
    --font-size-h5: 1.333rem;
    --font-size-small: 0.750rem;

    --font-weight-light: 400;
    --font-weight-bold: 700;

    --border-radius: 24px;
}

body {
    font-family: "DM Sans", sans-serif;
    font-optical-sizing: auto;
    font-weight: var(--font-weight-light);

    margin: 0;

    color: var(--color-text);
}

h1, h2, h3, h4, h5 {
    font-family: "Libre Bodoni", serif;
    font-optical-sizing: auto;
    font-weight: var(--font-weight-bold);
}

h1, h2, h3, h4, h5, p, .small {
    margin-block: 0;
}

html {font-size: 100%;} /* 16px */

h1 {font-size: var(--font-size-h1); /* 67.36px */}

h2 {font-size: var(--font-size-h2); /* 50.56px */}

h3 {font-size: var(--font-size-h3); /* 37.92px */}

h4 {font-size: var(--font-size-h4); /* 28.48px */}

h5 {font-size: var(--font-size-h5); /* 21.28px */}

small {font-size: var(--font-size-small); /* 12px */}

@media only screen and (max-width: 1300px) {
    :root {
        --width-max: 100%;
    }

    html {
        font-size: 80%;
    }
}

/*  */

.page-container {
    width: 100%;

    padding-inline: 24px;
    box-sizing: border-box;

    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;

    gap: 0;

    background-color: var(--color-background);
}

/* HERO */

.hero-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;

    width: var(--width-max);
    height: 100vh;

    gap: 8px;

    margin-bottom: 64px;
}

.hero-logo {
    position: fixed;
    left: 50%;
    top: 24px;
    transform: translateX(-50%);

    z-index: 1;
}

.hero-image {
    position: absolute;
    top: 0;
    left: 0;

    width: 100%;
    height: 100vh;

    object-fit: cover;
    object-position: 50% 80%;

    z-index: 0;

    mask-image: linear-gradient(to bottom,
        rgba(0, 0, 0, 0.9) 0%,
        rgba(0, 0, 0, 0) 90%
    );

    filter: brightness(1.2);

    pointer-events: none;
}

.hero-title {
    text-align: center;
    z-index: 1;
}

.hero-title > strong {
    color: var(--color-primary);
}

.hero-call {
    position: absolute;
    left: 50%;
    bottom: 15%;
    transform: translateX(-50%);

    text-align: center;
}


@media only screen and (max-width: 1300px) {
    .hero-call {
        bottom: 10%;
    }
}

.hero-call > a {
    color: var(--color-text);
}

.hero-call > a:hover {
    filter: brightness(4);
}

/* WHO */

.who-container {
    width: var(--width-max);

    opacity: 0;
    transform: translateY(48px);
    transition: opacity 0.5s ease-out, transform 0.5s ease-out;

    margin-bottom: 96px;
}

.who-visible {
    opacity: 1;
    transform: translateY(0px);
}

.who-title {
    width: 100%;
    text-align: center;
    margin-bottom: 32px;
}

.who-text-container {
    display: flex;
    flex-direction: row;
    align-items: stretch;
    justify-content: center;
    gap: 32px;
}

@media only screen and (max-width: 1300px) {
    .who-text-container {
        flex-direction: column;
    }
}

.who-text-box {
    padding: 32px;

    flex-grow: 1;

    border-radius: var(--border-radius);
    background-color: var(--color-secondary-background);
}

.who-bottom-text-box a {
    text-decoration: none;
    color: var(--color-primary);
}

.who-text-box strong {
    font-weight: inherit;
    color: var(--color-primary);
}

/* BIG */

.big-container {
    width: var(--width-max);

    text-align: center;

    margin-bottom: 192px;
}

.big-text {
    font-size: calc(var(--font-size-h1) * 1.2);
}

@media only screen and (max-width: 1300px) {
    .big-text {
        font-size: var(--font-size-h2);
    }
}

.big-dynamic.container {
    position: relative;

    height: calc(var(--font-size-h1) * 1.2);
}

.big-dynamic-text {
    position: absolute;
    left: 50%;

    opacity: 0;
    color: var(--color-primary);

    transform: translate(-50%, -80%);
    transition: opacity 0.3s cubic-bezier(.17,.67,.54,.88), transform 0.7s ease;
}

.big-dynamic-text.big-visible {
    opacity: 1;
    transform: translate(-50%, 0);
}

/* HOW */

.how-container {
    width: var(--width-max);

    margin-bottom: 96px;

    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    grid-template-rows: auto;
    grid-template-areas:
        "checklist picture-1 picture-3"
        "checklist picture-2 picture-3"
    ;
    gap: 32px;
}

.how-text {
    grid-area: checklist;
    margin: 0;
    padding: 32px;
    box-sizing: border-box;

    list-style: none;

    width: 100%;
    height: 100%;

    border-radius: var(--border-radius);
    background-color: var(--color-secondary-background);
}

.how-text > li {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    margin-bottom: 1rem;
    flex-shrink: 0;
}

.how-text > li strong {
    font-weight: inherit;
    color: var(--color-primary);
}

.how-icon {
    flex-shrink: 0;
    font-size: var(--font-size-h3);
    width: var(--font-size-h3);
    height: var(--font-size-h3);
    color: var(--color-accent);
}

.how-picture {
    object-fit: cover;
    width: 100%;
    height: 100%;

    border-radius: var(--border-radius);
}

.how-picture:nth-of-type(1) {
    grid-area: picture-1;
}

.how-picture:nth-of-type(2) {
    grid-area: picture-2;
}

.how-picture:nth-of-type(3) {
    grid-area: picture-3;
}

@media only screen and (max-width: 1300px) {
    .how-container {
        grid-template-columns: 1fr;
        grid-template-rows: min-content;
        grid-template-areas:
            "checklist"
            "picture-1"
        ;
    }

    .how-picture:nth-of-type(2) {
        display: none;
    }

    .how-picture:nth-of-type(3) {
        display: none;
    }
}

/* GRID */

.grid-container {
    position: relative;

    width: var(--width-max);

    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    grid-template-rows: auto;

    margin-bottom: 96px;

    justify-items: center;

}

.grid-line {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 1;

    width: 100%;
    height: 3px;

    background-color: rgba(0, 0, 0, 0.2);
}

.grid-item-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;

    padding: 48px;

    text-align: center;
}

.grid-icon {
    flex-shrink: 0;
    font-size: var(--font-size-h1);
    width: var(--font-size-h1);
    height: var(--font-size-h1);
    color: var(--color-accent);

    margin-bottom: var(--font-size-h5);
}

@media only screen and (max-width: 1300px) {
    .grid-container {
        grid-template-columns: 1fr;
    }

    .grid-item-container {
        width: 50%;
    }
}

.grid-car-container {
    position: absolute;
    top: 0;
    left: 0;

    width: 100%;
    height: 100%;

    z-index: 2;

    overflow: hidden;
}

.grid-car {
    position: absolute;
    top: 50%;
    left: 50%;

    transform: translate(0%, -50%);
    width: 100%;
    height: 100%;

    display: flex;
    align-items: center;
    justify-content: center;
}

.grid-car-image {
    width: 100px;
    height: 100px;
}

/* INFO */

.info-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;

    width: var(--width-max);
    padding: 32px;
    box-sizing: border-box;

    border-radius: var(--border-radius);

    color: var(--color-background);
    background-color: var(--color-secondary);

    text-align: center;

    margin-bottom: 96px;

    scale: 1;
    opacity: 0;
    transform: translateY(48px);
    transition: scale 1s cubic-bezier(.11,.6,.39,.97), opacity 1s ease-out, transform 0.5s ease-out;
}

/* ORDER IN WHICH .info-visible IS DECLARED MATTERS, BECAUSE OF SPECIFICITY */

.info-visible {
    opacity: 1;
    transform: translateY(0px);
}

.info-container:hover {
    scale: 1.02;
}

.info-container > h2 {
    margin-top: 64px;
    margin-bottom: 8px;
}

.info-container > p {
    margin-bottom: 24px;
}

.info-container > a {
    margin-bottom: 64px;

    padding: 16px 24px;
    border-radius: 1000px;

    font-weight: var(--font-weight-bold);
    color: var(--color-background);
    background-color: var(--color-accent);

    text-decoration: none;
}

.info-container a:hover {
    color: var(--color-hover);
}

.info-fees {
    font-size: var(--font-size-small);
}

/* FOOTER */

.footer-container {
    position: relative;

    width: 100%;

    display: flex;
    align-items: flex-start;
    justify-content: center;

    color: var(--color-background);
    background-color: var(--color-primary);

    padding-block: 72px;
}

.footer-content {
    width: var(--width-max);

    display: flex;
    align-items: stretch;
    justify-content: space-between;
}

.footer-contacts-container {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: space-between;

    gap: 24px;

    min-width: 30%;
}

.footer-contacts-container > h3 {
    font-family: var(--ibm-plex-mono);
}

.footer-contacts-container > p {
    font-family: var(--ibm-plex-mono);
}

.footer-contacts-container > p > a {
    color: var(--color-background);
}

.footer-contacts-container > p > a:hover {
    color: var(--color-hover);
}

.footer-right-content {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    justify-content: space-between;
}

.footer-right-content > p {
    font-size: var(--font-size-small);
    text-align: right;
    max-width: 40%;
}

@media only screen and (max-width: 1300px) {
    .footer-container {
        padding-inline: 24px;
        box-sizing: border-box;
    }
}