/*
Theme Name: Creative Hut 2025
Author: Creative Hut
Author URI: https://creativehut.com.br
Version: 1.0
Description: Site da Agência Creative Hut desenvolvido em 2025.
*/
:root {
    --ch-color-black: #000;
    --ch-color-black-70: rgba(0, 0, 0, 0.7);
    --ch-color-black-50: rgba(0, 0, 0, 0.5);
    --ch-color-black-20: rgba(0, 0, 0, 0.2);
    --ch-color-dark-gray: #0b0b0b;
    --ch-color-white: #fff;
    --ch-color-white-90: rgba(255, 255, 255, 0.9);
    --ch-color-white-70: rgba(255, 255, 255, 0.7);
    --ch-color-white-50: rgba(255, 255, 255, 0.5);
    --ch-color-white-20: rgba(255, 255, 255, 0.2);
    --ch-color-yellow: #ffb81c;
    --ch-color-yellow-70: rgba(255, 184, 28, 0.7);
    --ch-font-primary: 'Radio Canada', sans-serif;
    --ch-font-secondary: 'Bricolage Grotesque', sans-serif;
    --ch-gutter: 0.9375rem;
    --ch-radius: 20px;    
}
* {
    border: none;
    outline: none;
}
*::selection {
    background-color: var(--ch-color-yellow);
    color: var(--ch-color-black)
}
*::-moz-selection {
    background-color: var(--ch-color-yellow);
    color: var(--ch-color-black)
}
/** Keyframes **/
@keyframes fade-in {
    to {
        opacity: 1;
    }
}
@keyframes fade-in-left {
    to {
        left: 0;
        opacity: 1;
    }
}
@keyframes fade-in-right {
    to {
        right: 0;
        opacity: 1;
    }
}
@keyframes fade-in-up {
    to {
        top: 0;
        opacity: 1;
    }
}
@keyframes scale-in {
    to {
        scale: 1;
        opacity: 1;
    }
}
@keyframes scale-out {
    to {
        scale: 0.5;
        opacity: 0;
    }
}
@keyframes blink {
    50% {
      opacity: 0;
    }
}
@keyframes pulse {
    0% {
        scale: 1
    }
    50% {
        scale: 1.2
    }
    100% {
        scale: 1
    }
}
@keyframes rotate {
    0% {
        transform: rotate(0deg)
    }
    100% {
        transform: rotate(360deg)
    }
}
@keyframes bounce-up {
    0% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(-20px);
    }
    100% {
        transform: translateY(0);
    }
}
@keyframes scroll-left {
    0% {
        transform: translateX(0%);
    }
    100% {
        transform: translateX(-50%);
    }
}
@keyframes section-bg-parallax {
    0% {
        transform: translateX(-50%) translateY(0);
    }
    50% {
        transform: translateX(-50%) translateY(calc(var(--ch-gutter) * 15));
    }
    100% {
        transform: translateX(-50%) translateY(0);
    }
}
/** Body, Paragraph, Links, Images and Titles **/
body {
    background-color: var(--ch-color-black);
    color: var(--ch-color-white-90);
    font-family: var(--ch-font-primary);
    font-size: 16px;
}
body.ch-cursor-enabled,
body.ch-cursor-enabled * {
    cursor: none !important;
}
#ch-cursor {
    pointer-events: none;
    position: fixed;
    z-index: 2147483646;
    background-color: transparent;
    border: 1px solid var(--ch-color-yellow);
    height: 0;
    width: 0;
    opacity: 0;
    border-radius: 50%;
    transition: opacity 150ms linear, background 300ms ease-in-out, 
        height 150ms ease-in-out, width 150ms ease-in-out;
    animation: pulse 1.8s infinite;
    mix-blend-mode: difference;
}
#ch-cursor.ch-cursor-active {
    height: var(--ch-gutter);
    width: var(--ch-gutter);
    opacity: 1;
}
#ch-cursor svg {
    width: 100%;
    margin: 5px;
    animation: rotate 10s linear infinite;
}
#ch-cursor svg text {
    fill: var(--ch-color-white);
}
#ch-cursor.ch-cursor-active.ch-cursor-hover:has(svg) {
    height: calc(var(--ch-gutter) * 7);
    width: calc(var(--ch-gutter) * 7);
    background-color: transparent;
    border: none;
}
#ch-cursor.ch-cursor-active.ch-cursor-hover:not(:has(svg)) {
    height: calc(var(--ch-gutter) * 5);
    width: calc(var(--ch-gutter) * 5);
    background-color: var(--ch-color-yellow);
}
#ch-cursor.ch-cursor-active.ch-cursor-hover.ch-cursor-large:not(:has(svg)) {
    height: calc(var(--ch-gutter) * 12);
    width: calc(var(--ch-gutter) * 12);
}
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
    font-family: var(--ch-font-secondary);
    font-weight: 700;
    line-height: 1.2;
}
.section-title {
    color: var(--ch-color-white);
    margin-bottom: calc(var(--ch-gutter) * 2);
}
.section-bg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
    z-index: 0;
}
.section-bg+.grid-container {
    position: relative;
    z-index: 1;
}
p {
    font-weight: 300;
}
strong {
    font-weight: 900;
}
a {
    color: var(--ch-color-yellow);
}
a:focus, a:hover {
    color: var(--ch-color-yellow-70);
}
hr {
    margin: var(--ch-gutter) 0;
    border-width: 1px;
    border-color: var(--ch-color-white-20);
}
ul, ol, dl {
    list-style-position: inside;
}
.card {
    background-color: var(--ch-color-white-20);
    border-color: var(--ch-color-white-50);
    border-radius: var(--ch-radius);
}
.infinite+.infinite-spinner {
    position: relative;
    display: block;
    width: 100%;
    margin-top: calc(var(--ch-gutter) * 4);
    font-size: .875rem;
    text-align: center;
    text-transform: uppercase;
    color: var(--ch-color-white-50);
}
.infinite+.infinite-spinner svg {
    margin-right: var(--ch-gutter);
    color: var(--ch-color-yellow);
}
.badge {
    display: inline-flex;
    flex-direction: row;
    gap: calc(var(--ch-gutter) / 2);
    align-items: center;
    font-size: .875rem;
    padding: calc(var(--ch-gutter) / 2) var(--ch-gutter);
    background-color: var(--ch-color-black-20);
    border: 1px solid var(--ch-color-white-50);
    border-radius: var(--ch-radius);
    color: var(--ch-color-white-70);
    transition: all 300ms ease-in-out;
}
.badge:hover {
    background-color: var(--ch-color-black-50);
    border-color: var(--ch-color-white);
    color: var(--ch-color-white);
}
button, .button, button:visited, .button:visited {
    display: inline-flex;
    flex-direction: row;
    gap: calc(var(--ch-gutter) / 2);
    align-items: center;
    padding: calc(var(--ch-gutter) / 2) var(--ch-gutter);
    background-color: var(--ch-color-black-20);
    border: 1px solid var(--ch-color-yellow);
    border-radius: calc(var(--ch-radius) * 2);
    transition: border-color 300ms;
    backdrop-filter: blur(calc(var(--ch-gutter) / 2));
    font-family: var(--ch-font-secondary);
    font-weight: 400;
    text-transform: uppercase;
    transition: all 300ms ease-in-out;
}
button:hover, .button:hover, button:focus, .button:focus {
    background-color: var(--ch-color-yellow);
    color : var(--ch-color-black);
}
button svg, .button svg {
    color: var(--ch-color-yellow);
}
button:hover svg, .button:hover svg {
    color: var(--ch-color-black);
}
button.secondary, .button.secondary {
    background-color: var(--ch-color-yellow);
    color: var(--ch-color-black);
}
button.secondary:hover, .button.secondary:hover {
    background-color: var(--ch-color-black);
    color: var(--ch-color-yellow);
}
button.secondary svg, .button.secondary svg {
    color: var(--ch-color-white);
}
button.secondary:hover svg, .button.secondary:hover svg {
    color: var(--ch-color-yellow);
}
[type="submit"], .forminator-button-submit {
    font-weight: 600;
    background-color: var(--ch-color-black);
    color: var(--ch-color-yellow);
}
label {
    color: inherit;
    font-weight: 700;
    margin-bottom: calc(var(--ch-gutter) / 2);
}
[type=color], [type=date], [type=datetime-local], [type=datetime], [type=email], [type=month], [type=number], [type=password], [type=search], [type=tel], [type=text], [type=time], [type=url], [type=week], textarea {
    background-color: var(--ch-color-white-70);
    border-radius: var(--ch-radius);
    border: 1px solid transparent;
    box-shadow: none;
}
[type=color]:focus, [type=date]:focus, [type=datetime-local]:focus, [type=datetime]:focus, [type=email]:focus, [type=month]:focus, [type=number]:focus, [type=password]:focus, [type=search]:focus, [type=tel]:focus, [type=text]:focus, [type=time]:focus, [type=url]:focus, [type=week]:focus, textarea:focus {
    border-color: var(--ch-color-dark-gray);
    box-shadow: none;
}
::placeholder {
    color: var(--ch-color-black-20);
}
/** Forminator Custom Styles **/
.forminator-ui.forminator-custom-form:not(.forminator-size--small)[data-grid=enclosed] .forminator-row:not(:last-child) {
    margin-bottom: 0 !important;
}
 .forminator-phone {
    margin-bottom: var(--ch-gutter);
 }
.forminator-iti-input.iti .iti__selected-country,
.forminator-iti-input.iti .iti__selected-country-primary {
    border-top-left-radius: var(--ch-radius) !important;
    border-bottom-left-radius: var(--ch-radius) !important;
}
.forminator-iti-input.iti .iti__search-input {
    padding: .5rem .75rem !important;
    margin: 0 !important;
}
.forminator-iti-input.iti.iti--inline-dropdown .iti__dropdown-content {
    overflow: hidden;
    margin-top: 0 !important;
    border: none !important;
    box-shadow: none !important;
    border-radius: var(--ch-radius);
}
.forminator-field-checkbox .forminator-field {
    display: flex;
    flex-wrap: wrap;
    flex-direction: row;
    align-items: baseline;
    gap: var(--ch-gutter);
    margin-bottom: var(--ch-gutter);
}
.forminator-field-checkbox .forminator-field label.forminator-checkbox {
    padding: calc(var(--ch-gutter) / 2) var(--ch-gutter);
    background-color: var(--ch-color-yellow);
    border: 1px solid var(--ch-color-dark-gray);
    border-radius: calc(var(--ch-radius) * 2);
    font-weight: 300;
    transition: all 300ms linear;
    margin: 0 !important;
}
.forminator-field-checkbox .forminator-field label.forminator-checkbox input,
.forminator-field-checkbox .forminator-field label.forminator-checkbox .forminator-checkbox-box {
    display: none;
}
.forminator-field-checkbox .forminator-field label.forminator-checkbox span {
    margin: 0 !important;
}
.forminator-field-checkbox .forminator-field label.forminator-checkbox:has(input:checked) {
    background-color: var(--ch-color-dark-gray);
    color: var(--ch-color-yellow);
    border-color: var(--ch-color-yellow);
}
.forminator-error-message {
    max-width: 90%;
    margin: 0 !important;
    padding: 5px 15px 7px !important;
    background-color: var(--ch-color-black) !important;
    border-radius: 0 0 var(--ch-radius) var(--ch-radius);
    position: relative;
    top: calc(var(--ch-gutter) * -1);
    left: var(--ch-gutter);
}
.forminator-has_error .forminator-error-message {
    display: inline-block !important;
}
.forminator-response-message {
    padding: calc(var(--ch-gutter) / 2) var(--ch-gutter);
    border-radius: var(--ch-radius);
    border: none !important;
    box-shadow: none !important;
}
/** WP Image and Gallery Blocks customization **/
.alignleft,
.alignright,
.aligncenter {
    margin-bottom: var(--ch-gutter);
}
.alignleft {
    display: inline;
    float: left;
    margin-right: var(--ch-gutter);
}
.alignright {
    display: inline;
    float: right;
    margin-left: var(--ch-gutter);
}
.aligncenter,
.aligncenter img {
    clear: both;
    display: block;
    margin-left: auto;
    margin-right: auto;
}
.wp-block-post-featured-image,
.wp-block-image,
.wp-block-gallery {
    margin-bottom: var(--ch-gutter);
}
.wp-block-post-featured-image img,
.wp-block-image figure img,
figure.wp-block-image img {
    border-radius: var(--ch-radius);
}
.wp-block-post-featured-image:has(figcaption) img,
.wp-block-image figure:has(figcaption) img,
figure.wp-block-image:has(figcaption) img {
    border-radius: var(--ch-radius) var(--ch-radius) 0 0;
}
figure.wp-block-image {
    display: inline-block;
}
figure.wp-block-image img,
figure.wp-block-gallery.has-nested-images figure.wp-block-image img {
    position: relative;
    z-index: 1;
}
/* Start Classic Editor Compatibility */
.wp-caption {
    display: table;
}
.wp-caption .wp-caption-text {
    display: table-caption;
    caption-side: bottom;
}
/* End Classic Editor Compatibility */
.wp-caption .wp-caption-text,
.wp-block-image figcaption,
.wp-block-video figcaption,
figure.wp-block-gallery.has-nested-images .wp-block-image figcaption {
    position: relative;
    margin: 0 !important;
    padding: .75rem var(--ch-gutter);
    font-size: .875rem;
    color: var(--ch-color-black-50);
    background-color: var(--ch-color-yellow);
    border-bottom-left-radius: var(--ch-radius);
    border-bottom-right-radius: var(--ch-radius);
    z-index: 1;
}
figure.wp-block-gallery.has-nested-images figure.wp-block-image figcaption {
    flex-grow: initial;
    flex-basis: auto;
    max-height: 100%;
    text-align: left;
}
blockquote,
.wp-block-pullquote {
    position: relative;
    margin: var(--ch-gutter) 0;
    padding: calc(var(--ch-gutter) * 2) 0 !important;
    text-align: center;
    border: none;
    border-top: 1px solid var(--ch-color-yellow-70);
    border-bottom: 1px solid var(--ch-color-yellow-70);
}
.wp-block-pullquote blockquote {
    position: relative;
    margin-bottom: 0;
    padding: var(--ch-gutter) calc(var(--ch-gutter) * 3);
    background-color: transparent;
    border: 0;
}
.wp-block-pullquote blockquote:before,
.wp-block-pullquote blockquote:after {
    font-size: 2.2rem;
}
.wp-block-pullquote blockquote:before {
    top: calc(var(--ch-gutter) * -1);
}
.wp-block-pullquote blockquote:after {
    bottom: 0;
}
blockquote {
    color: var(--ch-color-white);
}
blockquote p {
    color: var(--ch-color-white);
    font-weight: 600;
}
blockquote *:last-child {
    margin-bottom: 0;
}
pre.wp-block-verse {
    display: inline-block;
    max-width: 100%;
    padding: var(--ch-gutter);
    white-space: pre-wrap;
    word-wrap: break-word;
    font-size: 1.25rem;
}
.wp-block-video,
.wp-block-embed {
    text-align: center;
    margin-bottom: var(--ch-gutter);
}
.wp-block-embed-youtube {
    position: relative;
    height: 0;
    padding-bottom: 75%;
    overflow: hidden;
}
.wp-block-embed-youtube.wp-embed-aspect-16-9 {
    padding-bottom: 56.25%;
}
.wp-block-embed-youtube .wp-block-embed__wrapper {
    position: initial;
}
.wp-block-embed-youtube iframe {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
}
.wp-block-embed-instagram .wp-block-embed__wrapper {
    display: flex;
    justify-content: center;
}
/** Fancybox overrides **/
.fancybox-navigation .fancybox-button {
    width: 60px;
    height: 60px;
    border-radius: var(--ch-radius);
    color: var(--ch-color-yellow);
}
.fancybox-image, .fancybox-spaceball {
    border-radius: var(--ch-radius);
}
/** Off-canvas navigation **/
nav.off-canvas  {
    background: transparent;
}
nav.off-canvas .position-right {
    width: 90vw;
}
nav.off-canvas .position-right:not(.is-open) {
    -webkit-transform: translateX(90vw);
    transform: translateX(90vw);
}
nav.off-canvas.is-transition-overlap.is-open {
    box-shadow: none;
    -webkit-box-shadow: none;
}
nav.off-canvas .off-canvas-content {
    height: 100%;
    padding: 10rem calc(var(--ch-gutter) * 3) var(--ch-gutter) var(--ch-gutter);
}
nav.off-canvas .off-canvas-content .menu a {
    display: block;
    padding: var(--ch-gutter) 0;
    font-family: var(--ch-font-secondary);
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--ch-color-white-70);
    transition: color 300ms;
}
nav.off-canvas .off-canvas-content .menu a:hover {
    color: var(--ch-color-white);
}
nav.off-canvas .off-canvas-content .off-canvas-social {
    border-top: 1px solid var(--ch-color-white-20);
    padding-top: calc(var(--ch-gutter) * 2);
    margin-top: calc(var(--ch-gutter) * 2);
    gap: var(--ch-gutter);
    justify-content: space-around;
}
nav.off-canvas .off-canvas-content .off-canvas-social a:hover {
    color: var(--ch-color-yellow);
}
.js-off-canvas-overlay {
    background: linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 75%, rgba(0, 0, 0, 1) 100%);
    backdrop-filter: blur(calc(var(--ch-gutter) / 2));
}
/** Header **/
header#top {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    padding: calc(var(--ch-gutter) * 2) 0 0;
    z-index: 13;
    background: linear-gradient(to bottom, var(--ch-color-black-50) 0%, var(--ch-color-black-20) 50%, rgba(0, 0, 0, 0) 100%);
}
body.logged-in header#top {
    top: 32px !important;
}
#header-logo {
    position: fixed;
    z-index: 15;
    left: 50vw;
    top: -25vh;
    transform: translateX(-50%);
    height: 150vh;
    width: 150vh;
    aspect-ratio: 1 / 1;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background-color: var(--ch-color-yellow);
    transition: height 1s ease-in-out,
    width 1s ease-in-out,
    top 1s ease-in-out,
    left 1s ease-in-out,
    transform 900ms ease-in-out;
    transform-origin: 0% 50%;
    animation: pulse 1s infinite;
}
body.ch-animate #header-logo {
    position: relative;
    top: 0;
    left: 0;
    transform: translateY(0);
    height: calc(var(--ch-gutter) * 4);
    width: calc(var(--ch-gutter) * 4);
}
#header-logo svg {
    display: block;
    height: calc(var(--ch-gutter) * 13);
    transition: all 1s ease-in-out .2s;
    animation: pulse 1s infinite;
}
body.ch-animate #header-logo svg {
    height: calc(var(--ch-gutter) * 4);
}
#header-logo svg path {
    fill: var(--ch-color-black);
    transition: fill 1.5s ease-in-out .2s;
}
#header-logo svg #ch-name {
    position: relative;
    transition: opacity 500ms linear;
    transform-origin: 50%;
    animation: rotate 10s linear;
}
body.ch-animate #header-logo svg #ch-name {
    opacity: 0;
}
#toggle-menu {
    position: relative;
    z-index: 13;
    background-color: var(--ch-color-black-20);
    border: 1px solid var(--ch-color-white-50);
    border-radius: calc(var(--ch-radius) * 2);
    display: flex;
    padding: calc(var(--ch-gutter) / 2);
    transition: border-color 300ms, opacity 300ms 1s;
    backdrop-filter: blur(calc(var(--ch-gutter) / 2));
    opacity: 0;
}
body.ch-animate #toggle-menu {
    opacity: 1;
}
#toggle-menu svg path {
    fill: none;
    stroke: var(--ch-color-yellow);
    stroke-width: 4;
    stroke-linecap: round;
    transition: stroke-dasharray 600ms cubic-bezier(0.4, 0, 0.2, 1),
        stroke-dashoffset 600ms cubic-bezier(0.4, 0, 0.2, 1);
}
#toggle-menu svg path:first-child {
    stroke-dasharray: 50 207;
}
#toggle-menu svg path:nth-child(2) {
    stroke-dasharray: 50 50;
}
#toggle-menu svg path:last-child {
    stroke-dasharray: 50 207;
}
#toggle-menu.expanded svg path:first-child {
    stroke-dasharray: 90 207;
    stroke-dashoffset: -111;
}
#toggle-menu.expanded svg path:nth-child(2) {
    stroke-dasharray: 0 50;
    stroke-dashoffset: -25;
}
#toggle-menu.expanded svg path:last-child {
    stroke-dasharray: 90 207;
    stroke-dashoffset: -111;
}
/* Main */
main {
    opacity: 0;
    transition: opacity 150ms linear;
}
body.ch-animate main {
    opacity: 1;
}
/* Hero Section */
section#hero {
    position: relative;
    height: calc(100vh - var(--ch-gutter) * 2);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}
section#hero .hero-bg {
    position: absolute;
    overflow: clip;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 0; 
}
section#hero .hero-bg img {
    position: absolute;
    top: 50%;
    left: 50%;
    opacity: 0;
    border-radius: var(--ch-radius);
    transform-origin: center center;
    transform: scale(0.3) translate(-50%, -50%) rotateX(0deg) rotateY(0deg);
    transition: all 3s ease-in;
    filter: brightness(0.7);
    mix-blend-mode: multiply;
    backface-visibility: hidden;
    backdrop-filter: blur(calc(var(--ch-gutter) / 3));
}
section#hero.ch-animation-started .hero-bg img {
    opacity: .8;
}
section#hero.ch-animation-ended .hero-bg img {
    opacity: .8;
    transition: all 300ms linear;
}
section#hero .hero-title {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    flex: 1;
    justify-content: center;
}
section#hero .hero-title h1 {
    font-weight: 600;
    line-height: 1;
    color: var(--ch-color-yellow);
}
section#hero .hero-title h1 strong {
    display: block;
    font-size: 3.5rem;
    line-height: 1;
    margin-bottom: var(--ch-gutter);
    color: var(--ch-color-white);
}
section#hero .hero-title h1 .type-cursor {
    display: inline-block;
    border-right: 3px solid var(--ch-color-yellow-70);
    animation: blink 1s infinite;
}
section#hero a.hero-continue {
    display: flex;
    flex-direction: column;
    margin-bottom: calc(var(--ch-gutter) * 2);
    color: var(--ch-color-white-50);
    font-size: .875rem;
    transition: all 300ms ease-in-out;
}
section#hero.ch-animation-ended a.hero-continue {
    color: var(--ch-color-white);
}
section#hero a.hero-continue:hover {
    color: var(--ch-color-yellow);
}
section#hero a.hero-continue svg {
    margin-bottom: calc(var(--ch-gutter) / 2);
}
section#hero.ch-animation-ended a.hero-continue svg {
    animation: bounce-up 1s ease-in-out 1.5s infinite;
}
/** Section Who We Are **/
section#who-we-are {
    position: relative;
    overflow: clip;
    padding: calc(var(--ch-gutter) * 3) 0;
    background-color: var(--ch-color-dark-gray);
    border-top: 1px solid var(--ch-color-white-20);
    border-bottom: 1px solid var(--ch-color-white-20);
}
section#who-we-are .cell {
    position: relative;
    opacity: 0;
    animation-duration: 1s;
    animation-fill-mode: forwards;
    animation-timeline: view();
    animation-range-start: entry;
    animation-range-end: 50vh;
}
section#who-we-are .cell:first-child {
    left: -50%;
    animation-name: fade-in-left;
    transform-origin: left;
}
section#who-we-are .cell:last-child {
    right: -50%;
    animation-name: fade-in-right;
    transform-origin: right;
}
section#who-we-are svg {
    width: 400px;
}
section#who-we-are svg path {
    fill: var(--ch-color-yellow);
}
/** Section Manifest **/
section#manifest {
    position: relative;
    padding: calc(var(--ch-gutter) * 3) 0 0;
    background-color: var(--ch-color-yellow);
}  
section#manifest .section-bg svg {
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%) translateY(calc(var(--ch-gutter) * -15));
    height: 120%;
    animation: section-bg-parallax forwards;
    animation-timeline: scroll(root);
    animation-range: entry exit;
}
section#manifest .section-bg svg path {
    fill: var(--ch-color-white);
}
section#manifest .section-title {
    color: var(--ch-color-black);
}
section#manifest .responsive-embed {
    position: relative;
    overflow: hidden;
    margin: 0;
    background-color: var(--ch-color-dark-gray);
    border-top-left-radius: var(--ch-radius);
    border-top-right-radius: var(--ch-radius);
    opacity: 0;
    top: 40vh;
    animation: fade-in-up forwards;
    animation-timeline: scroll(root);    
    animation-range-start: entry;
    animation-range-end: contain 18%;
}
/** Section What We Do **/
section#what-we-do {
    padding-top: calc(var(--ch-gutter) * 4);
}
section#what-we-do > .grid-container {
    position: relative;
    opacity: 0;
    animation-duration: 1s;
    animation-fill-mode: forwards;
    animation-timeline: view();
    animation-range-start: entry;
    animation-range-end: 50vh;
    left: -50%;
    animation-name: fade-in-left;
    transform-origin: left;
}
.services {
    position: relative;
    overflow: clip;
}
.services > video {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 0;
}
.services > video.service-bg-video {
    opacity: 0;
    transition: opacity 300ms linear;
}
.services > video.service-bg-video.playing {
    opacity: .5;
    filter: blur(calc(var(--ch-gutter) / 4));
}  
.services .service {
    position: relative;
    z-index: 1;
    padding: calc(var(--ch-gutter) * 2) 0;
    opacity: 0;
    transition: all 150ms linear;
    animation-duration: 1s;
    animation-fill-mode: forwards;
    animation-timeline: view();
    animation-range-start: entry;
    animation-range-end: 40vh;
}
.services .service:nth-child(odd) {
    left: -50%;
    animation-name: fade-in-left;
}
.services .service:nth-child(even) {
    right: -50%;
    animation-name: fade-in-right;
}
.services .service ul {
    margin: 0;
    padding: 0;
    list-style: none;
    column-count: 2;
    column-gap: var(--ch-gutter);
}
.services .service ul li {
    position: relative;
    z-index: 1;
    display: table;
    line-height: 1.2;
    margin-bottom: var(--ch-gutter);
    transition: all 150ms linear;
}
/** Section Cases **/
section#cases {
    padding-top: calc(var(--ch-gutter) * 4);
}
body:not(.home) section#cases {
    padding-top: calc(var(--ch-gutter) * 8);
    padding-bottom: calc(var(--ch-gutter) * 8);
}
section#cases > .grid-container > .grid-margin-x {
    position: relative;
    opacity: 0;
    animation-duration: 1s;
    animation-fill-mode: forwards;
    animation-timeline: view();
    animation-range-start: entry;
    animation-range-end: 50vh;
    left: -50%;
    animation-name: fade-in-left;
    transform-origin: left;
}
.cases {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    gap: calc(var(--ch-gutter) * 2);
}
.cases .case {
    position: relative;
    overflow: hidden;
    padding: var(--ch-gutter) calc(var(--ch-gutter) * 2);
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    border-radius: var(--ch-radius);
    aspect-ratio: 16 / 9;
    color: var(--ch-color-white);
    transition: padding 600ms ease-in-out;
    opacity: 0;
    scale: .5;
    animation-duration: 1s;
    animation-fill-mode: forwards;
    animation-timeline: view();
    animation-range-start: entry;
    animation-range-end: 60vh;
    animation-name: scale-in;
}
.cases .case:hover {
    padding-left: calc(var(--ch-gutter) * 6);
}
.cases .case > div {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
    background-size: cover;
    background-position: center;
    opacity: .5;
    scale: 1;
    transition: opacity 300ms linear, scale 2s ease-in-out;
    transform-origin: 25% 25%;
}
.cases .case:nth-child(even) > div {
    transform-origin: 75% 75%;
}
.cases .case:hover > div {
    opacity: 1;
    scale: 1.2;
    z-index: 2;
}
.cases .case *:not(div) {
    position: relative;
    z-index: 1;
}
.cases .case h3 {
    line-height: 1.2;
}
.cases .case p.menu {
    gap: calc(var(--ch-gutter) / 2);
    margin: 0;
}
/** Section Clients **/
section#clients {
    padding-top: calc(var(--ch-gutter) * 4);
}
section#clients > .grid-container {
    position: relative;
    opacity: 0;
    animation-duration: 1s;
    animation-fill-mode: forwards;
    animation-timeline: view();
    animation-range-start: entry;
    animation-range-end: 50vh;
    left: -50%;
    animation-name: fade-in-left;
    transform-origin: left;
}
section#clients .clients {
    position: relative;
    width: 100%;
}
section#clients .clients .clients-track {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 0 calc(var(--ch-gutter) * 2);
}
section#clients .clients .client {
    flex: 0 0 auto;
    max-width: 150px;
    aspect-ratio: 1 / 1;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: .6;
    filter: grayscale(100%);
    transition: all 300ms ease-in-out;
}
section#clients .clients .client:hover {
    opacity: 1;
    filter: grayscale(0%);
}
/** Section Blog **/
section#blog {
    padding-top: calc(var(--ch-gutter) * 4);
    padding-bottom: calc(var(--ch-gutter) * 4);
}
body:not(.home) section#blog {
    padding-top: calc(var(--ch-gutter) * 8);
    padding-bottom: calc(var(--ch-gutter) * 8);
}
section#blog > .grid-container > .grid-x:not(.blog-posts) {
    position: relative;
    opacity: 0;
    animation-duration: 1s;
    animation-fill-mode: forwards;
    animation-timeline: view();
    animation-range-start: entry;
    animation-range-end: 50vh;
    left: -50%;
    animation-name: fade-in-left;
    transform-origin: left;
}
nav#archive-terms {
    gap: calc(var(--ch-gutter) / 2);
}
nav#archive-terms span {
    color: var(--ch-color-white-50);
    font-size: .875rem;
    text-transform: uppercase;
}
.blog-post {
    position: relative;
    overflow: hidden;
    display: block;
    border-radius: var(--ch-radius);
    background-color: var(--ch-color-dark-gray);
    border: 1px solid var(--ch-color-white-20);
    margin-bottom: calc(var(--ch-gutter) * 2);
    transition: all 300ms ease-in-out;
    opacity: 0;
    scale: .5;
    animation-duration: 1s;
    animation-fill-mode: forwards;
    animation-timeline: view();
    animation-range-start: entry;
    animation-range-end: 60vh;
    animation-name: scale-in;
}
.blog-post:hover {
    background-color: var(--ch-color-yellow);
}
.blog-post > .grid-x {
    height: 100%;
}
.blog-post .blog-post-thumbnail {
    position: relative;
    overflow: hidden;
}
.blog-post .blog-post-thumbnail img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: scale 300ms ease-in-out;
}
.blog-post:hover .blog-post-thumbnail img {
    scale: 1.1;
}
.blog-post .blog-post-content {
    padding: calc(var(--ch-gutter) * 2);
    color: var(--ch-color-white-70);
}
.blog-post:hover .blog-post-content { 
    color: var(--ch-color-black-70);
}
.blog-post .blog-post-content p.menu {
    gap: calc(var(--ch-gutter) / 2);
    margin-bottom: calc(var(--ch-gutter) / 2);
}
.blog-post .blog-post-content .blog-post-title {
    color: var(--ch-color-white);
    transition: color 300ms ease-in-out;
}
.blog-post:hover .blog-post-content .blog-post-title {
    color: var(--ch-color-black);
}
/* Single Posts */
nav#breadcrumbs {
    padding: calc(var(--ch-gutter) * 8) var(--ch-gutter) var(--ch-gutter);
    border-bottom: 1px solid var(--ch-color-white-20);
    color: var(--ch-color-white-20);
    font-size: .875rem;
    text-transform: uppercase;
    opacity: 0;
    bottom: 50%;
    transition: all 600ms linear 1s;
}
body.ch-animate nav#breadcrumbs {
    opacity: 1;
    bottom: 0;
}
nav#breadcrumbs a {
    color: var(--ch-color-white-50);
}
nav#breadcrumbs a:hover {
    color: var(--ch-color-yellow);
}
article#page {
    padding-top: calc(var(--ch-gutter) * 8);
    padding-bottom: calc(var(--ch-gutter) * 8);
}
article#post {
    padding-top: calc(var(--ch-gutter) * 3);
}
article#post header .menu {
    gap: calc(var(--ch-gutter) / 2);
    margin-bottom: var(--ch-gutter);
}
article#post .post-content {
    font-size: 1.1rem;
}
article#post footer {
    position: relative;
    top: 50%;
    margin-top: calc(var(--ch-gutter) * 2);
    padding-top: calc(var(--ch-gutter) * 2);
    padding-bottom: calc(var(--ch-gutter) * 2);
    border-top: 1px solid var(--ch-color-white-20);
    transition: all 300ms ease-in-out;
    opacity: 0;
    animation-duration: 1s;
    animation-fill-mode: forwards;
    animation-timeline: view();
    animation-range-start: entry;
    animation-range-end: 50vh;
    animation-name: fade-in-up;
}
article#post footer img.avatar {
    border-radius: 50%;
    margin-bottom: var(--ch-gutter);
}
article#post footer h6 small {
    font-size: .875rem;;
    text-transform: uppercase;
    font-weight: 300;
    color: var(--ch-color-white-50);
}
article#case .section-bg {
    position: relative;
    height: 40vh;
}
article#case .section-bg:before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(to right, var(--ch-color-black-70) 0%,rgba(0,0,0,0) 20%,rgba(0,0,0,0) 100%);
    opacity: 0.8;
    z-index: 1;
}
article#case .section-bg img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0.9;
    z-index: 0;
    border-radius: var(--ch-radius);
    scale: 1.05;
    transition: opacity 600ms, scale 600ms;
    transform-origin: 50% 0;
    animation: scale-out 1s forwards;
    animation-timeline: scroll(root);
    animation-range: entry 0% exit 40%;
}
article#case > .grid-container:first-child {
    padding-top: calc(var(--ch-gutter) * 8);
}
article#case>.grid-container {
    padding-bottom: calc(var(--ch-gutter) * 4);
}
article#case .case-header {
    position: relative;
    z-index: 1;
    top: 0;
    opacity: 0;
    padding: calc(var(--ch-gutter) * 2) calc(var(--ch-gutter) * 3);
    background-color: var(--ch-color-dark-gray);
    border-radius: var(--ch-radius);
    border: 1px solid var(--ch-color-white-20);
    transition: top 600ms linear 300ms, opacity 600ms linear 300ms;
}
body.ch-animate article#case .section-bg+.grid-container .case-header {
    opacity: 1;
    top: calc(var(--ch-gutter) * -3);
}
article#case .section-bg+.grid-container .case-header .case-services {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: calc(var(--ch-gutter) / 2);
    font-size: 0.875rem;
    line-height: 1;
}
article#case .section-bg+.grid-container .case-header .case-services a {
    padding: calc(var(--ch-gutter) / 2) var(--ch-gutter);
    background-color: var(--ch-color-black-20);
    border: 1px solid var(--ch-color-white-50);
    border-radius: var(--ch-radius);
    color: var(--ch-color-white-70);
}
article#case .section-bg+.grid-container .case-header .case-services a:hover {
    background-color: var(--ch-color-yellow);
    border-color: var(--ch-color-black);
    color: var(--ch-color-black);
}
article#case .section-bg+.grid-container .case-header .section-title {
    margin-bottom: var(--ch-gutter);
}
article#case .case-header h2 {
    color: var(--ch-color-white-50);
}
article#case .case-gallery {
    position: relative;
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    gap: calc(var(--ch-gutter) * 2);
}
article#case .case-gallery a {
    position: relative;
    display: block;
    overflow: hidden;
    border-radius: var(--ch-radius);
    transition: all 300ms ease-in-out;
    opacity: 0;
    scale: .5;
    animation-duration: 1s;
    animation-fill-mode: forwards;
    animation-timeline: view();
    animation-range-start: entry;
    animation-range-end: 60vh;
    animation-name: scale-in;
}
article#case .case-gallery a img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: scale 300ms ease-in-out;
}
article#case .case-gallery a:hover img {
    scale: 1.1;
}
section#related-content {
    padding-top: calc(var(--ch-gutter) * 4);
    padding-bottom: calc(var(--ch-gutter) * 4);
    background-color: var(--ch-color-dark-gray);
    border-top: 1px solid var(--ch-color-white-20);
}
/* Social Share Bar */
nav#social-share {
   display: flex;
   flex-direction: row;
   gap: var(--ch-gutter);
   justify-content: space-between;
   margin: calc(var(--ch-gutter) * 2) 0;
}
nav#social-share a {
    position: relative;
    min-width: 2.25rem;
    min-height: 2.25rem;
    line-height: 1rem;
    padding: .4rem;
    border-radius: var(--ch-radius);
    font-size: 1.4rem;
    text-align: center;
    background-color: var(--ch-color-white-20);
    color: var(--ch-color-white-70);
    scale: 0.5;
    opacity: 0;
    transition: opacity 600ms linear 1s, scale 600ms linear 1s;
}
body.ch-animate nav#social-share a {
    opacity: 1;
    scale: 1;
}
nav#social-share a.whatsapp {
    background-color: #25d366;
}
nav#social-share a.facebook {
    background-color: #3b5998;
}
nav#social-share a.linkedin {
    background-color: #007bb5;
}
/* Footer */
footer#contact {
    position: relative;
    opacity: 0;
    transition: opacity 150ms linear;
    background-color: var(--ch-color-yellow);
    color: var(--ch-color-black);
}
body.ch-animate footer#contact {
    opacity: 1;
}
footer#contact > .section-bg svg {
    position: absolute;
    bottom: -10%;
    right: -20%;
    height: 33vw;
    width: auto;
}
footer#contact > .section-bg svg path {
    fill: var(--ch-color-white);
}
footer#contact > .section-bg + .grid-container {
    padding-top: calc(var(--ch-gutter) * 4);
    padding-bottom: calc(var(--ch-gutter) * 8);
}
footer#contact .section-title {
    margin-bottom: calc(var(--ch-gutter) * 3);
}
footer#contact .section-title,
footer#contact a {
    color: var(--ch-color-black);
} 
footer#contact a {
    text-decoration: underline;
}
footer#contact hr {
    border-color: var(--ch-color-white-70);
    margin: calc(var(--ch-gutter) * 2) 0;
}
footer#contact p svg {
    margin-right: calc(var(--ch-gutter) / 2);
}
footer#contact form {
    padding: calc(var(--ch-gutter) * 2);
    background-color: var(--ch-color-white-20);
    border-radius: var(--ch-radius);
}
footer#contact .copyright {
    padding: calc(var(--ch-gutter) / 2) 0;
    text-align: center;
    border-top: 1px solid var(--ch-color-white-20);
}
footer#contact .copyright p {
    margin: 0;
    color: var(--ch-color-white-70);
}
/* Max-width 768px */
@media print, screen and (max-width: 40em) {
    section#hero .hero-bg img {
        max-width: 50vw;
    }
    section#who-we-are .cell svg {
        max-width: 75%;
        margin: 0 0 var(--ch-gutter);
    }   
    .services .service:nth-child(odd) {
        background-color: var(--ch-color-yellow);
        color: var(--ch-color-black);
        font-weight: 400;
    }
    .services .service:nth-child(odd) ul li {
        background-color: var(--ch-color-white-20);
        border-color: var(--ch-color-black);
        color: var(--ch-color-black);
    }
    .services .service:nth-child(even) ul li {
        background-color: var(--ch-color-white-20);
        border-color: var(--ch-color-white-50);
        color: var(--ch-color-white);
    }
    section#clients .clients .client {
        opacity: 0;
        scale: .5;
        animation-duration: 1s;
        animation-fill-mode: forwards;
        animation-timeline: view();
        animation-range-start: entry;
        animation-range-end: 60vh;
        animation-name: scale-in;
        margin-top: calc(var(--ch-gutter) * -1);
    } 
    .blog-post .blog-post-thumbnail {
        aspect-ratio: 16 / 9;
    }
    nav#archive-terms {
        margin-bottom: calc(var(--ch-gutter) * 2);
    }   
    footer#contact > .section-bg svg {
        height: 80vw;
    }
    footer#contact form {
        padding: calc(var(--ch-gutter) * 2) var(--ch-gutter);
        margin-top: calc(var(--ch-gutter) * 2);
    }
}
/* Min-width 769px */
@media print, screen and (min-width: 40em) {
    button.large, .button.large, .forminator-button-submit {
        padding: var(--ch-gutter) calc(var(--ch-gutter) * 2);
        font-size: 1.2rem;
    }
    #toggle-menu:hover {
        border-color: transparent;
    }
    nav.off-canvas.position-right {
        width: 40vw;
    }
    nav.off-canvas.position-right:not(.is-open) {
        -webkit-transform: translateX(40vw);
        transform: translateX(40vw);
    }
    nav.off-canvas .off-canvas-content .menu a {
        font-size: 2rem;
    }
    section#hero .hero-title h1 strong {
        font-size: 7.2rem;
    }
    section#manifest .responsive-embed {
        animation-range-end: contain 23%;
    }
    section#what-we-do {
        padding-top: calc(var(--ch-gutter) * 8);
    }
    .services {
        padding: calc(var(--ch-gutter) * 4) 0;
    }
    .services .service {
        padding: calc(var(--ch-gutter) * 4) 0;
    }
    .services .service:hover {
        z-index: 1;
        background-color: var(--ch-color-yellow);
        color: var(--ch-color-black);
        font-weight: 400;
        scale: 1.05;
    }
    .services:has(.service:hover) .service:not(:hover) {
        z-index: 0;
        filter: blur(calc(var(--ch-gutter) / 4));
    }
    .services .service ul li {
        font-size: 1.2rem;
    }
    .services .service:hover ul li {
        background-color: transparent;
        border-color: var(--ch-color-black);
        color: var(--ch-color-black);
    }
    .services .service:hover ul li:hover {
        background-color: var(--ch-color-black);
        border-color: var(--ch-color-yellow);
        color: var(--ch-color-yellow);
    }
    .cases .case.medium-6 {
        width: calc(50% - var(--ch-gutter));
    }
    section#cases .cases .case:first-child {
        width: 100%;
        aspect-ratio: 21 / 9;
    }
    section#cases .cases .case:nth-child(4n+1):not(:first-child),
    section#cases .cases .case:nth-child(4n+2),
    article#case .case-gallery a:nth-child(4n+1),
    article#case .case-gallery a:nth-child(4n) {
        width: calc(60% - var(--ch-gutter));
    }
    section#cases .cases .case:nth-child(4n),
    section#cases .cases .case:nth-child(4n-1):not(:first-child),
    article#case .case-gallery a:nth-child(4n+2),
    article#case .case-gallery a:nth-child(4n-1) {
        width: calc(40% - var(--ch-gutter));
    }
    section#cases,
    section#clients,
    section#blog,
    article#page {
        padding-top: calc(var(--ch-gutter) * 8);
        padding-bottom: calc(var(--ch-gutter) * 8);
    }
    section#clients .clients {
        overflow: hidden;
    }
    section#clients .clients .clients-track {
        width: max-content; 
        flex-wrap: nowrap;
        justify-content: flex-start;
        gap: calc(var(--ch-gutter) * 6);
        animation: scroll-left attr(data-duration s) linear infinite;
    }
    section#clients .clients .clients-track:has(.client:hover) {
        animation-play-state: paused;
    }     
    .blog-posts,
    .cases {
        padding-top: calc(var(--ch-gutter) * 4);
    }
    footer#contact>.section-bg+.grid-container {
        padding-top: calc(var(--ch-gutter) * 8);
    }
}
/* Min-width 1440px */
@media print, screen and (min-width: 90em) {
    header#top .grid-container.fluid {
        padding-left: calc(var(--ch-gutter) * 4);
        padding-right: calc(var(--ch-gutter) * 4);
    }
    nav.off-canvas.position-right {
        width: 25vw;
    }
    nav.off-canvas.position-right:not(.is-open) {
        -webkit-transform: translateX(25vw);
        transform: translateX(25vw);
    }
    section#blog .blog-posts {
        display: table;
        margin-left: calc(var(--ch-gutter) * -1);
        margin-right: calc(var(--ch-gutter) * -1);
    }
    section#blog .blog-post {
        float: left;
        margin: 0 var(--ch-gutter) calc(var(--ch-gutter) * 2);
        width: calc(50% - 2px - var(--ch-gutter) * 2);
    }
    section#blog .blog-post:only-of-type {
        width: 100%;
    }
    nav#breadcrumbs {
        position: relative;
        z-index: 14;
        padding: calc(var(--ch-gutter) * 3.5) 0 var(--ch-gutter); 
    }    
    nav#social-share {
        position: fixed;
        left: calc(var(--ch-gutter) * 4.5);
        top: 50%;
        transform: translateY(-50%);
        flex-direction: column;
    }    
}