/* ************************************ */
/* BODY MENU OPEN */
/* ************************************ */

body.menu-open {

    overflow: hidden;

}

a {

    color: inherit;

    text-decoration: none;

}

button {

    font: inherit;

}


/* ************************************ */
/* HEADER */
/* ************************************ */

.tc-navigation {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 5000;
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    transition:
        transform 0.4s ease,
        opacity 0.4s ease,
        visibility 0.4s ease,
        background .3s ease,
        box-shadow 0.3s ease;
}

.tc-navigation.header-visible {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;

    background: rgba(255, 255, 255, 0.96);
    box-shadow: 0 4px 25px rgba(0, 0, 0, 0.08);

    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}

.tc-navigation__panel {
    position: fixed;
    top: 0;
    right: 0;
    z-index: 5001;
}

body.menu-open .tc-navigation {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}


.tc-navigation__container {
    width: min(132rem, calc(100% - 8rem));
    min-height: 10rem;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;

    /* border-bottom: 1px solid rgba(33, 37, 41, .08); */
}

/* ************************************ */
/* LOGO */
/* ************************************ */

.tc-navigation__logo {

    display: inline-flex;

    align-items: center;

    text-decoration: none;

    line-height: 0;

    position: relative;

    z-index: 20;

}

.tc-navigation__logo-image {

    display: block;

    width: 15rem;

    height: auto;

    max-width: 100%;

    object-fit: contain;

    transition: transform .35s var(--ease);

}

.tc-navigation__logo:hover .tc-navigation__logo-image {

    transform: translateY(-2px);

}


/* ************************************ */
/* MENU BUTTON */
/* ************************************ */

.tc-navigation__toggle {

    position: relative;

    z-index: 5002;

    width: 5.8rem;

    height: 5.8rem;

    padding: 0;

    border:

        1px solid var(--border);

    border-radius: 50%;

    background:

        var(--color-white);

    display: flex;

    align-items: center;

    justify-content: center;

    cursor: pointer;

    transition:

        background .4s var(--ease),

        border-color .4s var(--ease),

        transform .4s var(--ease);

}

.tc-navigation__toggle:hover {

    transform:

        translateY(-3px);

    border-color:

        rgba(233, 22, 29, .3);

}

body.menu-open

.tc-navigation__toggle {

    background:

        transparent;

    border-color:

        rgba(248, 249, 250, .25);

}


/* ************************************ */
/* BURGER */
/* ************************************ */

.tc-navigation__burger {

    position: relative;

    width: 2.7rem;

    height: 1.8rem;

    display: block;

}

.tc-navigation__burger::before,

.tc-navigation__burger::after,

.tc-navigation__burger span {

    content: "";

    position: absolute;

    left: 0;

    width: 100%;

    height: 2px;

    background:

        var(--color-primary);

    border-radius: 5rem;

    transition:

        top .4s var(--ease),

        transform .4s var(--ease),

        opacity .25s ease,

        background .3s ease;

}

.tc-navigation__burger::before {

    top: 0;

}

.tc-navigation__burger span {

    top: 50%;

    width: 65%;

    margin-left: auto;

    transform:

        translateY(-50%);

}

.tc-navigation__burger::after {

    top: 100%;

}


/* ************************************ */
/* OPEN BURGER */
/* ************************************ */

body.menu-open

.tc-navigation__burger::before {

    top: 50%;

    transform:

        rotate(45deg);

    background:

        var(--color-white);

}

body.menu-open

.tc-navigation__burger span {

    opacity: 0;

}

body.menu-open

.tc-navigation__burger::after {

    top: 50%;

    transform:

        rotate(-45deg);

    background:

        var(--color-white);

}


/* ************************************ */
/* MENU PANEL */
/* ************************************ */

.tc-navigation__panel {

    position: fixed;

    top: 0;

    right: 0;

    width: 0;

    height: 100vh;

    overflow: hidden;

    background:

        var(--color-primary);

    opacity: 0;

    visibility: hidden;

    pointer-events: none;

    transition:

        width .7s var(--ease),

        opacity .35s ease,

        visibility 0s linear .7s;

}


/* ************************************ */
/* OPEN STATE */
/* ************************************ */

.menu-open

.tc-navigation__panel {

    /*
     * 75% SCREEN WIDTH
     *
     * 3/4 MENU
     * 1/4 PAGE VISIBLE
     */

    width:

        75vw;

    opacity: 1;

    visibility: visible;

    pointer-events: auto;

    transition:

        width .7s var(--ease),

        opacity .35s ease,

        visibility 0s linear 0s;

}


/* ************************************ */
/* GRID */
/* ************************************ */

.tc-navigation__panel::before {

    content: "";

    position: absolute;

    inset: 0;

    background-image:

        linear-gradient(

            rgba(248, 249, 250, .055) 1px,

            transparent 1px

        ),

        linear-gradient(

            90deg,

            rgba(248, 249, 250, .055) 1px,

            transparent 1px

        );

    background-size:

        6rem 6rem;

    opacity: .5;

    pointer-events: none;

}


/* ************************************ */
/* DECORATIVE CIRCLE */
/* ************************************ */

.tc-navigation__circle {

    position: absolute;

    width: 55rem;

    height: 55rem;

    right: -30rem;

    bottom: -25rem;

    border:

        1px solid rgba(248, 249, 250, .12);

    border-radius: 50%;

    box-shadow:

        0 0 0 8rem rgba(248, 249, 250, .025),

        0 0 0 16rem rgba(248, 249, 250, .015);

    pointer-events: none;

}


/* ************************************ */
/* CONTENT */
/* ************************************ */

.tc-navigation__content {

    position: relative;

    z-index: 5;

    width: 100%;

    height: 100%;

    padding:

        9rem 7% 3rem;

    display: flex;

    flex-direction: column;

    justify-content: center;

}


/* ************************************ */
/* EYEBROW */
/* ************************************ */

.tc-navigation__eyebrow {

    display: flex;

    align-items: center;

    gap: .8rem;

    width: 70%;

    margin-bottom: 1.8rem;

    color:

        rgba(248, 249, 250, .5);

    font-size: .9rem;

    font-weight: 700;

    letter-spacing: .14em;

    text-transform: uppercase;

}

.tc-navigation__eyebrow span {

    width: .6rem;

    height: .6rem;

    flex: 0 0 .6rem;

    background:

        var(--color-white);

    border-radius: 50%;

}


/* ************************************ */
/* LIST */
/* ************************************ */

.tc-navigation__list {

    /*
     * NAVIGATION LINES = 70%
     */

    width: 70%;

    list-style: none;

    border-top:

        1px solid rgba(248, 249, 250, .18);

}


/* ************************************ */
/* ITEM */
/* ************************************ */

.tc-navigation__item {

    width: 100%;

    border-bottom:

        1px solid rgba(248, 249, 250, .18);

    overflow: hidden;

}


/* ************************************ */
/* LINK */
/* ************************************ */

.tc-navigation__link {

    position: relative;

    display: flex;

    align-items: center;

    width: 100%;

    padding:

        1.05rem 0;

    color:

        var(--color-white);

    font-size:

        clamp(2.2rem, 3vw, 4.2rem);

    font-weight: 500;

    line-height: 1;

    letter-spacing: -.055em;

    opacity: .74;

    transition:

        opacity .35s var(--ease),

        padding-left .45s var(--ease);

}

.tc-navigation__link:hover {

    opacity: 1;

    padding-left:

        .8rem;

}


/* ************************************ */
/* NUMBER */
/* ************************************ */

.tc-navigation__number {

    width: 4rem;

    flex: 0 0 4rem;

    margin-right: 1.2rem;

    color:

        rgba(248, 249, 250, .38);

    font-size: .9rem;

    font-weight: 700;

    letter-spacing: .08em;

    transition:

        color .3s var(--ease);

}

.tc-navigation__link:hover

.tc-navigation__number {

    color:

        var(--color-white);

}


/* ************************************ */
/* ARROW */
/* ************************************ */

.tc-navigation__arrow {

    position: absolute;

    right: 0;

    font-size: 2rem;

    opacity: 0;

    transform:

        translate(-.7rem, .7rem);

    transition:

        opacity .35s var(--ease),

        transform .45s var(--ease);

}

.tc-navigation__link:hover

.tc-navigation__arrow {

    opacity: 1;

    transform:

        translate(0, 0);

}


/* ************************************ */
/* CONTACT */
/* ************************************ */

.tc-navigation__contact {

    /*
     * Same 70% alignment
     */

    width: 70%;

    margin-top: 2rem;

}

.tc-navigation__contact-label {

    margin-bottom: .5rem;

    color:

        rgba(248, 249, 250, .4);

    font-size: .8rem;

    font-weight: 700;

    letter-spacing: .14em;

    text-transform: uppercase;

}

.tc-navigation__contact-link {

    display: block;

    width: fit-content;

    color:

        var(--color-white);

    font-size: 1.3rem;

    font-weight: 500;

    line-height: 1.55;

    opacity: .78;

    transition:

        opacity .3s var(--ease),

        transform .3s var(--ease);

}

.tc-navigation__contact-link:hover {

    opacity: 1;

    transform:

        translateX(.4rem);

}


/* ************************************ */
/* FOOTER */
/* ************************************ */

.tc-navigation__footer {

    /*
     * FIXED AT BOTTOM-RIGHT
     */

    position: absolute;

    right: 7%;

    bottom: 3rem;

    display: flex;

    align-items: flex-end;

    flex-direction: column;

    gap: .8rem;

    margin: 0;

    padding: 0;

    border: none;

}


/* ************************************ */
/* FOOTER LABEL */
/* ************************************ */

.tc-navigation__footer-label {

    color:

        rgba(248, 249, 250, .4);

    font-size: .8rem;

    font-weight: 700;

    letter-spacing: .1em;

    text-transform: uppercase;

}


/* ************************************ */
/* SOCIALS */
/* ************************************ */

.tc-navigation__socials {

    display: flex;

    align-items: center;

    gap: 1.5rem;

}

.tc-navigation__social {

    display: inline-flex;

    align-items: center;

    gap: .45rem;

    color:

        rgba(248, 249, 250, .7);

    font-size: 1rem;

    font-weight: 500;

    transition:

        color .3s var(--ease),

        transform .3s var(--ease);

}

.tc-navigation__social:hover {

    color:

        var(--color-white);

    transform:

        translateY(-2px);

}

.tc-navigation__social i {

    font-size: 1.35rem;

}


/* ************************************ */
/* DEMO HERO */
/* ************************************ */

.tc-demo-hero {

    position: relative;

    min-height: 100vh;

    display: flex;

    align-items: center;

    padding:

        12rem 4rem;

    overflow: hidden;

    background:

        var(--soft-bg);

}

.tc-demo-hero::before {

    content: "";

    position: absolute;

    inset: 0;

    background-image:

        linear-gradient(

            var(--black-grid) 1px,

            transparent 1px

        ),

        linear-gradient(

            90deg,

            var(--black-grid) 1px,

            transparent 1px

        );

    background-size:

        7rem 7rem;

}

.tc-demo-content {

    position: relative;

    z-index: 2;

    width:

        min(124rem, 100%);

    margin: 0 auto;

}

.tc-demo-eyebrow {

    display: flex;

    align-items: center;

    gap: 1rem;

    margin-bottom: 2.5rem;

    color:

        var(--body-text-color-light);

    font-size: 1.2rem;

    font-weight: 700;

    letter-spacing: .15em;

    text-transform: uppercase;

}

.tc-demo-eyebrow span {

    width: .7rem;

    height: .7rem;

    background:

        var(--color-primary);

    border-radius: 50%;

}

.tc-demo-title {

    max-width: 100rem;

    font-size:

        clamp(5rem, 9vw, 12rem);

    line-height: .9;

    letter-spacing: -.08em;

    font-weight: 600;

}

.tc-demo-title em {

    color:

        var(--color-primary);

    font-style: normal;

}

.tc-demo-text {

    max-width: 55rem;

    margin-top: 4rem;

    color:

        var(--body-text-color);

    font-size: 1.7rem;

    line-height: 1.8;

}


/* ************************************ */
/* 1100PX */
/* ************************************ */

@media (max-width: 1100px) {

    body.menu-open

    .tc-navigation__panel {

        width: 80vw;

    }

    .tc-navigation__content {

        padding-left: 7%;

        padding-right: 7%;

    }

    .tc-navigation__list,

    .tc-navigation__contact,

    .tc-navigation__eyebrow {

        width: 75%;

    }

    .tc-navigation__link {

        font-size:

            clamp(2.5rem, 4vw, 3.8rem);

    }

}


/* ************************************ */
/* 768PX */
/* ************************************ */

@media (max-width: 768px) {

    .tc-navigation__container {

        width:

            calc(100% - 4rem);

        min-height: 8rem;

    }

    .tc-navigation__logo {

        font-size: 1.8rem;

    }

    .tc-navigation__toggle {

        width: 5.2rem;

        height: 5.2rem;

    }

    body.menu-open

    .tc-navigation__panel {

        width: 100vw;

    }

    .tc-navigation__content {

        padding:

            9rem 7% 2.5rem;

    }

    .tc-navigation__list,

    .tc-navigation__contact,

    .tc-navigation__eyebrow {

        width: 100%;

    }

    .tc-navigation__link {

        font-size:

            clamp(2.6rem, 8vw, 4rem);

        padding:

            1.35rem 0;

    }

    .tc-navigation__number {

        width: 3.2rem;

        flex-basis: 3.2rem;

        margin-right: 1rem;

    }

    .tc-navigation__arrow {

        display: none;

    }

    .tc-navigation__footer {

        position: absolute;

        right: 7%;

        bottom: 2.5rem;

        align-items: flex-end;

        flex-direction: column;

        gap: .8rem;

    }

    .tc-navigation__socials {

        gap: 1.3rem;

    }

    .tc-demo-hero {

        padding:

            10rem 2rem;

    }

}


/* ************************************ */
/* 480PX */
/* ************************************ */

@media (max-width: 480px) {

    .tc-navigation__content {

        padding-left: 6%;

        padding-right: 6%;

    }

    .tc-navigation__link {

        font-size: 2.7rem;

        padding:

            1.2rem 0;

    }

    .tc-navigation__contact {

        margin-top: 1.5rem;

    }

    .tc-navigation__footer {

        right: 6%;

        bottom: 2rem;

    }

    .tc-navigation__socials {

        flex-wrap: wrap;

        justify-content: flex-end;

        gap: 1rem;

    }

    .tc-navigation__social {

        font-size: .9rem;

    }

}


@media (max-width: 380px) {
    .tc-navigation__container {
        width: calc(100% - 2rem);
        min-height: 8rem;
    }
}


/* ************************************ */
/* REDUCED MOTION */
/* ************************************ */

@media (prefers-reduced-motion: reduce) {

    *,

    *::before,

    *::after {

        transition-duration:

            .01ms !important;

        scroll-behavior:

            auto !important;

    }

}


/* ***************************************************************************************************** */
/* FOOTER */
/* ***************************************************************************************************** */

.footer {
    padding: 8rem 2rem 4rem;
    border-top: 1px solid var(--color-grey-light-1);
    margin-top: 8.2rem;
}

/* ************************************ */
/* FOOTER TOP */
/* ************************************ */

.footer__container {
    max-width: 120rem;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 1.5fr 1fr 1fr 1fr;
    gap: 6rem;
}

/* ************************************ */
/* BRAND */
/* ************************************ */

.logo {
    width: 100%;
    max-width: 20rem;
}

.footer__description {
    max-width: 36rem;
    margin-top: 1.8rem;
    font-size: 1.4rem;
    line-height: 1.8;
    color: var(--color-grey-dark-2);
}

/* ************************************ */
/* FOOTER COLUMNS */
/* ************************************ */

.footer__heading {
    margin-bottom: 1.8rem;
    font-size: 2rem;
    font-weight: 700;
    font-style: normal;
    color: var(--color-grey-dark-2);
}

.footer__column {
    display: flex;
    flex-direction: column;
    gap: 1.2rem;
}

.footer__links-grid {
    display: flex;
    flex-direction: column;
    gap: 1.2rem;
}

/* ************************************ */
/* FOOTER LINKS */
/* ************************************ */

.footer__column a,
.footer__areas-grid a {
    display: inline-block;
    text-decoration: none;
    color: var(--color-grey-dark-2);
    font-size: 1.4rem;
    font-style: normal;
    transition: color .3s ease, transform .3s ease;
}

.footer__column a:hover,
.footer__areas-grid a:hover {
    color: var(--color-primary);
    transform: translateX(.4rem);
}

/* ************************************ */
/* FOOTER EXTRAS */
/* ************************************ */

.footer__extras {
    max-width: 120rem;
    margin: 4rem auto 0;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 18rem;
}

/* ************************************ */
/* SOCIAL */
/* ************************************ */

.footer__social-wrapper {
    flex-shrink: 0;
}

.footer__social {
    display: flex;
    gap: 1.5rem;
}

.footer__social a {
    width: 5rem;
    height: 5rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--color-light);
    color: var(--color-black);
    text-decoration: none;
    font-size: 2rem;
    transition: .3s ease;
}

.footer__social a:hover {
    background: var(--color-primary);
    color: #fff;
    transform: translateY(-4px);
}

/* ************************************ */
/* AREAS WE SERVE */
/* ************************************ */

.footer__areas {
    flex: 1;
}

.footer__areas-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(120px, 1fr));
    gap: 1.6rem 3rem;
}

/* ************************************ */
/* FOOTER BOTTOM */
/* ************************************ */

.footer__bottom {
    max-width: 120rem;
    margin: 4rem auto 0;
    padding-top: 3rem;
    border-top: 1px solid var(--color-grey-light-1);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 2rem;
}

.footer__copyright {
    font-size: 1.5rem;
    color: var(--color-grey-dark-2);
}

/* ************************************ */
/* BACK TO TOP */
/* ************************************ */

.footer__back-top {
    text-decoration: none;
}

.footer__back-top-icon {
    width: 5rem;
    height: 5rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--color-primary);
    color: var(--color-white);
    font-size: 2.2rem;
    transition: .35s ease;
    box-shadow:
        0 0 0 8px rgba(255,43,43,.08),
        0 10px 30px rgba(255,43,43,.25);
}

.footer__back-top:hover .footer__back-top-icon {
    transform: translateY(-6px);
    box-shadow:
        0 0 0 12px rgba(255,43,43,.08),
        0 20px 40px rgba(255,43,43,.30);
}

/* ************************************ */
/* TABLET */
/* ************************************ */

@media (max-width: 992px) {
    .footer__container {
        grid-template-columns: repeat(2, 1fr);
    }

    .footer__extras {
        flex-direction: column;
        gap: 5rem;
    }

    .footer__areas-grid {
        grid-template-columns: repeat(2, minmax(140px, 1fr));
    }
}

/* ************************************ */
/* MOBILE */
/* ************************************ */

@media (max-width: 768px) {
    .footer {
        padding: 8rem 2rem 3rem;
    }

    .footer__container {
        grid-template-columns: 1fr;
        gap: 4rem;
    }

    .footer__extras {
        gap: 4rem;
    }

    .footer__areas-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* ************************************ */
/* SMALL MOBILE */
/* ************************************ */

@media (max-width: 480px) {
    .footer__areas-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 14rem;
    row-gap: 2.2rem;
}

    .footer__social {
        flex-wrap: wrap;
    }
}