/*
 * 404 Labs — static rebuild
 * Ported 1:1 from the WordPress theme's compiled stylesheet
 * (fourohfourlabs/dist/css/main.min.css). Legacy vendor prefixes and
 * rules for the removed contact form / unused tooltip were dropped;
 * every value that affects rendering is unchanged.
 */

/* ---------------------------------------------------------------- base */

*,
:after,
:before {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
}

body,
html {
    width: 100%;
}

body {
    margin: 0;
    padding: 0;
    overflow-x: hidden;
    background: #fafafa;
    font-size: 18px;
    font-family: proxima-nova, sans-serif;
    color: #20202b;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    line-height: 1.5;
}

@media (min-width: 768px) {
    body {
        font-size: 24px;
    }
}

h1,
h2,
h3,
h4,
h5,
h6 {
    margin: 0 0 1.25rem;
    line-height: 1;
    font-weight: 800;
}

h1.has-mtop,
h2.has-mtop,
h3.has-mtop,
h4.has-mtop,
h5.has-mtop,
h6.has-mtop {
    margin-top: 3rem;
}

h1.is-green,
h2.is-green,
h3.is-green,
h4.is-green,
h5.is-green,
h6.is-green {
    color: #1bb752;
}

h1.is-normal,
h2.is-normal,
h3.is-normal,
h4.is-normal,
h5.is-normal,
h6.is-normal {
    text-transform: none;
}

h1,
h2 {
    font-size: 2.5rem;
}

@media (min-width: 640px) {
    h1,
    h2 {
        font-size: 3rem;
    }
}

@media (min-width: 768px) {
    h1,
    h2 {
        font-size: 4rem;
    }
}

@media (min-width: 1025px) {
    h1,
    h2 {
        font-size: 5rem;
    }
}

h3 {
    font-size: 3rem;
}

@media (min-width: 1025px) {
    h3 {
        font-size: 4rem;
    }
}

h4 {
    font-size: 2rem;
}

@media (min-width: 768px) {
    h4 {
        font-size: 2.5rem;
    }
}

@media (min-width: 1025px) {
    h4 {
        font-size: 3rem;
    }
}

ol,
p,
ul {
    margin: 0;
}

ol + ol,
ol + p,
ol + ul,
p + ol,
p + p,
p + ul,
ul + ol,
ul + p,
ul + ul {
    margin-top: 1.5rem;
}

ol.has-mtop,
p.has-mtop,
ul.has-mtop {
    margin-top: 3rem;
}

a {
    color: #4041ab;
}

a:hover {
    text-decoration: none;
    color: #323386;
}

blockquote {
    margin: 0;
    padding: 0;
    font-style: italic;
    text-align: center;
}

@media (min-width: 768px) {
    blockquote {
        padding: 0 2rem;
    }
}

:focus-visible {
    outline: 3px solid #4041ab;
    outline-offset: 3px;
}

.screen-reader-text {
    border: 0;
    clip: rect(1px, 1px, 1px, 1px);
    clip-path: inset(50%);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute;
    width: 1px;
    word-wrap: normal !important;
}

/* -------------------------------------------------- animated letters bg */

.has-animated-letters {
    background: #efefef url("../img/bg-animated-light.png") repeat;
    background-blend-mode: multiply;
    animation: moveLetters .5s linear infinite;
}

@media (min-width: 1025px) {
    .has-animated-letters {
        background-attachment: fixed;
    }
}

.has-animated-letters.is-light {
    background-color: #eaeaea;
    background-image: url("../img/bg-animated-light.png") repeat;
}

.has-animated-letters.is-dark {
    background: #20202b url("../img/bg-animated.png") repeat;
}

.has-animated-letters.is-green {
    background-image: url("../img/bg-animated.png"), linear-gradient(120deg, #1cb854, #1bb752);
    color: #fff;
}

.has-animated-letters.is-yellow {
    background-image: url("../img/bg-animated.png"), linear-gradient(120deg, #ffe419, #e5d916);
    animation: moveLettersYellow .5s linear infinite;
}

@media (min-width: 1025px) {
    .has-animated-letters.is-yellow {
        animation: moveLettersYellowFixed .5s linear infinite;
    }
}

@keyframes moveLetters {
    0% { background-position: 0 0; }
    32.999% { background-position: 0 0; }
    33% { background-position: 36px 36px; }
    65.999% { background-position: 36px 36px; }
    66% { background-position: 72px 72px; }
    99.999% { background-position: 72px 72px; }
    to { background-position: 144px 144px; }
}

@keyframes moveLettersYellow {
    0% { background: url("../img/bg-animated-light.png") repeat 0 0, linear-gradient(120deg, #ffe419, #e5d916) no-repeat 0 0; }
    32.999% { background: url("../img/bg-animated-light.png") repeat 0 0, linear-gradient(120deg, #ffe419, #e5d916) no-repeat 0 0; }
    33% { background: url("../img/bg-animated-light.png") repeat 36px 36px, linear-gradient(120deg, #ffe419, #e5d916) no-repeat 0 0; }
    65.999% { background: url("../img/bg-animated-light.png") repeat 36px 36px, linear-gradient(120deg, #ffe419, #e5d916) no-repeat 0 0; }
    66% { background: url("../img/bg-animated-light.png") repeat 72px 72px, linear-gradient(120deg, #ffe419, #e5d916) no-repeat 0 0; }
    99.999% { background: url("../img/bg-animated-light.png") repeat 72px 72px, linear-gradient(120deg, #ffe419, #e5d916) no-repeat 0 0; }
    to { background: url("../img/bg-animated-light.png") repeat 144px 144px, linear-gradient(120deg, #ffe419, #e5d916) no-repeat 0 0; }
}

@keyframes moveLettersYellowFixed {
    0% { background: url("../img/bg-animated-light.png") repeat 0 0 fixed, linear-gradient(120deg, #ffe419, #e5d916) no-repeat 0 0; }
    32.999% { background: url("../img/bg-animated-light.png") repeat 0 0 fixed, linear-gradient(120deg, #ffe419, #e5d916) no-repeat 0 0; }
    33% { background: url("../img/bg-animated-light.png") repeat 36px 36px fixed, linear-gradient(120deg, #ffe419, #e5d916) no-repeat 0 0; }
    65.999% { background: url("../img/bg-animated-light.png") repeat 36px 36px fixed, linear-gradient(120deg, #ffe419, #e5d916) no-repeat 0 0; }
    66% { background: url("../img/bg-animated-light.png") repeat 72px 72px fixed, linear-gradient(120deg, #ffe419, #e5d916) no-repeat 0 0; }
    99.999% { background: url("../img/bg-animated-light.png") repeat 72px 72px fixed, linear-gradient(120deg, #ffe419, #e5d916) no-repeat 0 0; }
    to { background: url("../img/bg-animated-light.png") repeat 144px 144px fixed, linear-gradient(120deg, #ffe419, #e5d916) no-repeat 0 0; }
}

@keyframes moveLettersGreenFixed {
    0% { background: url("../img/bg-animated-light.png") repeat 0 0 fixed, linear-gradient(120deg, #1cb854, #1bb752) no-repeat 0 0; }
    32.999% { background: url("../img/bg-animated-light.png") repeat 0 0 fixed, linear-gradient(120deg, #1cb854, #1bb752) no-repeat 0 0; }
    33% { background: url("../img/bg-animated-light.png") repeat 36px 36px fixed, linear-gradient(120deg, #1cb854, #1bb752) no-repeat 0 0; }
    65.999% { background: url("../img/bg-animated-light.png") repeat 36px 36px fixed, linear-gradient(120deg, #1cb854, #1bb752) no-repeat 0 0; }
    66% { background: url("../img/bg-animated-light.png") repeat 72px 72px fixed, linear-gradient(120deg, #1cb854, #1bb752) no-repeat 0 0; }
    99.999% { background: url("../img/bg-animated-light.png") repeat 72px 72px fixed, linear-gradient(120deg, #1cb854, #1bb752) no-repeat 0 0; }
    to { background: url("../img/bg-animated-light.png") repeat 144px 144px fixed, linear-gradient(120deg, #1cb854, #1bb752) no-repeat 0 0; }
}

/* ------------------------------------------------------------ utilities */

.pixel-perfect {
    -ms-interpolation-mode: nearest-neighbor;
    image-rendering: -webkit-optimize-contrast;
    image-rendering: -moz-crisp-edges;
    image-rendering: -o-pixelated;
    image-rendering: pixelated;
}

.copyright,
.has-text-centered {
    text-align: center;
}

.copyright {
    margin: 5rem 0 -1rem;
    font-size: 12px;
}

@media (min-width: 768px) {
    .copyright {
        margin: 5rem 0 -5rem;
    }
}

.btn {
    padding: 1.5rem 2rem;
    display: inline-block;
    vertical-align: middle;
    border-radius: 3px;
    background: #20202b;
    font-weight: 700;
    color: #fff;
    text-decoration: none;
    text-transform: uppercase;
    cursor: pointer;
}

.btn:hover {
    background: #e5d916;
    color: #20202b;
}

.btn.btn-standout {
    background: #1bb752;
    color: #fff;
}

.btn.btn-standout:hover {
    background: #4041ab;
    color: #fff;
}

.container {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 2rem;
}

@media (min-width: 768px) {
    .container {
        padding: 0 4rem;
    }
}

/* --------------------------------------------------------- floating box */

.floating-box {
    max-width: 900px;
    margin: -80px auto 0;
    padding: 3rem;
    position: relative;
    border-radius: 10px;
    box-shadow: 0 0 79px 0 rgba(32, 32, 43, .41);
    background-attachment: fixed;
    animation: moveLettersGreenFixed .5s linear infinite;
}

@media (max-width: 767px) {
    .floating-box {
        padding: 2rem;
    }
}

/* ---------------------------------------------------------------- hero */

.hero {
    width: 100%;
    height: 400px;
    background: url("../img/bg-hero.png") no-repeat 50%;
    background-size: cover;
    -ms-interpolation-mode: nearest-neighbor;
    image-rendering: -webkit-optimize-contrast;
    image-rendering: -moz-crisp-edges;
    image-rendering: -o-pixelated;
    image-rendering: pixelated;
    display: flex;
    align-items: center;
    text-align: center;
    color: #fff;
}

@media (min-width: 768px) {
    .hero {
        height: 600px;
    }
}

@media (min-width: 1025px) {
    .hero {
        height: 800px;
    }
}

.hero .container {
    justify-content: center;
}

.hero-typing,
.hero .container {
    display: flex;
}

.hero-typing {
    flex-direction: column;
    align-self: center;
}

.hero-title {
    margin: 0 auto;
    padding: .05em .05em 0 0;
}

.hero-title:after {
    content: "|";
    display: inline-block;
    animation: blink-caret .9s step-end infinite;
    transform: scale(1.5);
    margin-left: .1em;
}

.hero-subtitle {
    min-height: 44px;
    margin: 1rem auto 0;
    padding: .5rem 1.25rem;
    display: inline-block;
    background: #e5d916;
    font-size: 1.2rem;
    color: #20202b;
    transition: opacity .8s, transform .8s;
    opacity: 0;
    transform: translateY(20px);
}

@media (min-width: 768px) {
    .hero-subtitle {
        min-height: 52px;
        font-size: 1.5rem;
    }
}

@media (min-width: 1025px) {
    .hero-subtitle {
        min-height: 59px;
        font-size: 1.8rem;
    }
}

.hero-subtitle:empty {
    background: transparent;
}

.hero-subtitle.active {
    opacity: 1;
    transform: translateY(0);
}

@keyframes blink-caret {
    0%, to { color: transparent; }
    50% { color: #e5d916; }
}

/* -------------------------------------------------------------- navbar */

.navbar {
    width: 100%;
    display: flex;
    justify-content: center;
}

@media (min-width: 980px) {
    .navbar {
        justify-content: space-between;
    }
}

.navbar-logo img {
    width: 100%;
    max-width: 150px;
    height: auto;
    display: inline-block;
    vertical-align: middle;
}

.navbar-logo .icon {
    width: 48px;
    margin: 0 5px 0 0;
    position: relative;
    top: -3px;
}

.navbar-menu {
    margin: 0;
    padding: 0;
    list-style: none;
    color: #fff;
    display: flex;
    align-items: center;
}

.navbar-menu a {
    font-size: 18px;
    font-weight: 700;
    color: inherit;
    text-decoration: none;
    text-transform: uppercase;
}

.navbar-menu a:hover {
    color: #1bb752;
}

@media (max-width: 979px) {
    .navbar-menu li {
        display: none;
    }

    .navbar-menu li.navbar-menu-cta-li {
        display: block;
        position: fixed;
        z-index: 5;
        bottom: 10px;
        right: 10px;
    }
}

.navbar-menu li + li {
    margin-left: 30px;
}

.navbar-menu-cta {
    padding: .75rem 1.25rem;
    background: #1bb752;
    border-radius: 3px;
}

.navbar-menu-cta:hover {
    background: #fff;
}

.navbar-menu-cta i {
    margin: 0 .25rem 0 -.25rem;
    display: inline-block;
}

/* Stands in for the Font Awesome webfont glyph the WordPress build loaded. */
.icon-paper-plane svg {
    width: 1em;
    height: 1em;
    vertical-align: -.125em;
    overflow: visible;
}

@media (max-width: 939px) {
    .navbar-menu-cta {
        width: 44px;
        height: 44px;
        padding: .5rem .9rem .5rem .75rem;
        display: block;
        border-radius: 50%;
    }

    .navbar-menu-cta:hover {
        background: #1bb752;
        color: #fff !important;
    }

    .navbar-menu-cta .text {
        display: none;
    }

    .navbar-menu-cta i {
        margin: 0;
        position: relative;
        top: 1px;
    }
}

.page-header {
    width: 100%;
    padding: 3rem 0;
    position: absolute;
}

/* ---------------------------------------------------------- principles */

.principles {
    margin: 1.5rem 0 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-flow: row wrap;
}

.principles.active + .principles-toggler {
    display: none;
}

@media (min-width: 768px) {
    .principles-toggler {
        display: none;
    }
}

.principle {
    margin: 1.5rem 0 0;
    padding: 0 1.5rem;
    flex: 1 50%;
    border-left: 2px solid #ccc;
    line-height: 1;
}

@media (max-width: 767px) {
    .principle {
        max-height: 0;
        margin: 0;
        transition: max-height .8s, margin .8s;
        overflow: hidden;
    }

    .active .principle,
    .principle:first-child,
    .principle:nth-child(2) {
        max-height: 480px;
        margin: 1.5rem 0 0;
    }
}

@media (min-width: 768px) {
    .principle {
        min-width: 400px;
    }
}

.principle strong {
    font-weight: 600;
}

.principle p + p {
    margin-top: .5rem;
    font-size: 18px;
    line-height: 1.3;
}

@media (max-width: 539px) {
    .principle {
        flex: 1 100%;
    }
}

/* ------------------------------------------------------------- sections */

.section {
    padding: 8rem 0;
    position: relative;
}

.section .container {
    position: relative;
    z-index: 2;
}

@media (max-width: 767px) {
    .section {
        padding: 4rem 0;
    }
}

.section.is-slim-top {
    padding-top: 2rem;
}

.section.is-slim {
    padding: 4rem 0;
}

.section.is-fullheight {
    min-height: 100vh;
    display: flex;
    align-items: center;
}

.section.has-border-top {
    border-top: 10px solid #eee;
}

.section.is-dark {
    color: #656584;
}

.section.is-dark .title {
    color: #1bb752;
}

.section.is-light {
    background: #eee;
}

/* --------------------------------------------------------------- tools */

.tools {
    margin: 1rem -1rem -1rem;
    padding: 0;
    list-style: none;
    display: flex;
    flex-flow: row wrap;
    align-items: center;
}

@media (max-width: 767px) {
    .tools {
        justify-content: center;
    }
}

.tool {
    margin: 1rem;
}

.tool img {
    max-width: 100%;
    height: auto;
    image-rendering: optimizeQuality;
}

/* ------------------------------------------------------- contact / CTA */

.contact-action {
    margin-top: 3rem;
}

/* ---------------------------------------------------- reduced motion */

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    .has-animated-letters,
    .has-animated-letters.is-yellow,
    .floating-box,
    .hero-title:after {
        animation: none;
    }

    .hero-title:after {
        color: #e5d916;
    }

    .hero-subtitle {
        transition: none;
    }
}
