@import url(variables.css);
/*-------------------------
        Simple reset
--------------------------*/
@import url(components/swiper.min.css);
*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0; }

html {
  --scroll-behavior: smooth;
  scroll-behavior: smooth;
  overflow-x: hidden; }

body {
  font: normal 400 16px/28px 'DMSans', sans-serif;
  letter-spacing: 0.04em;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeSpeed;
  overflow-x: hidden; }

a, a:hover, a:visited, a:focus {
  text-decoration: none;
  background: none;
  border: none;
  outline: none;
  transition: all 0.3s ease; }

ol, ul {
  list-style: none;
  padding: 0; }

img {
  display: block;
  border: 0 none;
  height: auto;
  max-width: 100%; }

/* fix the feature of 'hidden' attribute. */
:where([hidden]) {
  display: none; }

section, footer, header, article, nav {
  display: block; }

@font-face {
  font-family: 'DMSans';
  src: url("/fonts/DMSans-Regular.ttf") format("truetype");
  font-weight: normal;
  font-style: normal;
  font-display: swap; }
@font-face {
  font-family: 'Icons';
  src: url("/fonts/modes.woff") format("woff"), url("/fonts/modes.ttf") format("truetype"), url("/fonts/modes.svg") format("svg");
  font-weight: normal;
  font-style: normal;
  font-display: swap; }
h1 {
  font-size: var(--h1-size);
  line-height: var(--h1-line); }

h2 {
  font-size: var(--h2-size);
  line-height: var(--h2-line); }

h3 {
  font-size: var(--h3-size);
  line-height: var(--h3-line); }

.subtitle {
  font-size: var(--sub-size);
  line-height: var(--sub-line); }

.fade-in-fwd {
  -webkit-animation: fade-in-fwd 1s cubic-bezier(0.39, 0.575, 0.565, 1) both;
  animation: fade-in-fwd 1s cubic-bezier(0.39, 0.575, 0.565, 1) both; }

@-webkit-keyframes fade-in-fwd {
  0% {
    -webkit-transform: translateZ(-80px);
    transform: translateZ(-80px);
    opacity: 0; }
  100% {
    -webkit-transform: translateZ(0);
    transform: translateZ(0);
    opacity: 1; } }
@keyframes fade-in-fwd {
  0% {
    -webkit-transform: translateZ(-80px);
    transform: translateZ(-80px);
    opacity: 0; }
  100% {
    -webkit-transform: translateZ(0);
    transform: translateZ(0);
    opacity: 1; } }
.fade-out {
  -webkit-animation: fade-out 1s ease-out both;
  animation: fade-out 1s ease-out both; }

@-webkit-keyframes fade-out {
  0% {
    opacity: 1; }
  100% {
    opacity: 0; } }
@keyframes fade-out {
  0% {
    opacity: 1; }
  100% {
    opacity: 0; } }
.fade-in-left {
  -webkit-animation: fade-in-left 0.6s cubic-bezier(0.39, 0.575, 0.565, 1) both;
  animation: fade-in-left 0.6s cubic-bezier(0.39, 0.575, 0.565, 1) both; }

.fade-in-left__02-delay {
  -webkit-animation: fade-in-left 0.6s cubic-bezier(0.39, 0.575, 0.565, 1) 0.2s both;
  animation: fade-in-left 0.6s cubic-bezier(0.39, 0.575, 0.565, 1) 0.2s both; }

@-webkit-keyframes fade-in-left {
  0% {
    -webkit-transform: translateX(-50px);
    transform: translateX(-50px);
    opacity: 0; }
  100% {
    -webkit-transform: translateX(0);
    transform: translateX(0);
    opacity: 1; } }
@keyframes fade-in-left {
  0% {
    -webkit-transform: translateX(-50px);
    transform: translateX(-50px);
    opacity: 0; }
  100% {
    -webkit-transform: translateX(0);
    transform: translateX(0);
    opacity: 1; } }
.fade-in-right__01-delay {
  -webkit-animation: fade-in-right 0.6s cubic-bezier(0.39, 0.575, 0.565, 1) 0.1s both;
  animation: fade-in-right 0.6s cubic-bezier(0.39, 0.575, 0.565, 1) 0.1s both; }

.fade-in-right__03-delay {
  -webkit-animation: fade-in-right 0.6s cubic-bezier(0.39, 0.575, 0.565, 1) 0.3s both;
  animation: fade-in-right 0.6s cubic-bezier(0.39, 0.575, 0.565, 1) 0.3s both; }

.fade-in-right__04-delay {
  -webkit-animation: fade-in-right 0.6s cubic-bezier(0.39, 0.575, 0.565, 1) 0.4s both;
  animation: fade-in-right 0.6s cubic-bezier(0.39, 0.575, 0.565, 1) 0.4s both; }

.fade-in-right__05-delay {
  -webkit-animation: fade-in-right 0.6s cubic-bezier(0.39, 0.575, 0.565, 1) 0.5s both;
  animation: fade-in-right 0.6s cubic-bezier(0.39, 0.575, 0.565, 1) 0.5s both; }

@-webkit-keyframes fade-in-right {
  0% {
    -webkit-transform: translateX(50px);
    transform: translateX(50px);
    opacity: 0; }
  100% {
    -webkit-transform: translateX(0);
    transform: translateX(0);
    opacity: 1; } }
@keyframes fade-in-right {
  0% {
    -webkit-transform: translateX(50px);
    transform: translateX(50px);
    opacity: 0; }
  100% {
    -webkit-transform: translateX(0);
    transform: translateX(0);
    opacity: 1; } }
.pulsate-fwd {
  -webkit-animation: pulsate-fwd 1s ease-in-out infinite both;
  animation: pulsate-fwd 1s ease-in-out infinite both; }

@-webkit-keyframes pulsate-fwd {
  0% {
    -webkit-transform: scale(1);
    transform: scale(1); }
  50% {
    -webkit-transform: scale(1.1);
    transform: scale(1.1); }
  100% {
    -webkit-transform: scale(1);
    transform: scale(1); } }
@keyframes pulsate-fwd {
  0% {
    -webkit-transform: scale(1);
    transform: scale(1); }
  50% {
    -webkit-transform: scale(1.1);
    transform: scale(1.1); }
  100% {
    -webkit-transform: scale(1);
    transform: scale(1); } }
/* responsive variables */
@media (min-width: 768px) {
  :root {
    --gap: 40px;
    --gutter: 60px;
    --h1-size: 60px;
    --h1-line: 68px;
    --h2-size: 40px;
    --h2-line: 56px;
    --h3-size: 24px;
    --h3-line: 36px;
    --sub-size: 20px;
    --sub-line: 28px; } }
@media (min-width: 1200px) {
  :root {
    --h1-size: 88px;
    --h1-line: 96px; }

    /*.section {
        min-height: 100vh;

        .article.contact {
            max-height: 310px;
        }
    }*/ }
.header {
  position: fixed;
  top: 0;
  width: 100%;
  background: var(--background);
  z-index: 2; }
  .header.on {
    border-bottom: 1px solid var(--dot-border); }
  .header-wrapper {
    display: flex;
    justify-content: space-between;
    padding: var(--gap); }

.logo-wrapper .logo-link {
  display: flex;
  background: none;
  transition: all 0.3s ease; }
  @media (hover: hover) {
    .logo-wrapper .logo-link:hover {
      opacity: 0.64;
      transition: all 0.3s ease; }
  }
.logo-wrapper svg {
  background: none; }
  .logo-wrapper svg path {
    fill: var(--logo); }

.mode-toggle {
  display: inline-flex; }

#mode-toggle {
  font-family: 'Icons', sans-serif;
  color: var(--nav-color);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  cursor: pointer; }
  #mode-toggle::before {
    content: var(--mode-icon);
    font-size: 22px;
    line-height: 22px;
    transition: all 0.3s ease; }
    @media (hover: hover) {
      #mode-toggle:hover {
        opacity: 0.65;
        transition: all 0.3s ease; }
    }
  #mode-toggle:focus::before {
    font-size: 28px;
    line-height: 28px;
    transition: all 0.3s ease; }

.nav {
  display: none; }

@media (min-width: 768px) {
  .menu .nav {
    height: 100%;
    display: flex;
    align-items: center; }
    .menu .nav-item:not(:last-child) {
      margin-right: 24px; }
    .menu .nav-link {
      background: var(--nav-bg);
      border: 1px solid var(--nav-border);
      color: var(--nav-color);
      padding: 2px 12px;
      border-radius: 48px;
      -webkit-appearance: none;
      -moz-appearance: none;
      appearance: none;
      outline: none; }
      .menu .nav-link:hover {
        background: var(--nav-bg__hover); }
      .menu .nav-link.active {
        background: var(--red);
        color: var(--light);
        border: 1px solid rgba(0, 0, 0, 0.24); }
        .menu .nav-link.active:hover {
          opacity: 0.8; } }
.copyright-wrapper {
  display: block;
  color: var(--grey);
  padding: 50px var(--gap);
  text-align: center; }

.cookies-wrapper {
  position: fixed;
  bottom: 0;
  width: 100%;
  z-index: 1; }
.cookies-notice {
  margin: 0 auto;
  text-align: center;
  padding: calc(var(--gap) / 2);
  max-width: 850px;
  background: var(--background);
  border: 1px solid var(--box-border);
  border-bottom: 0;
  border-radius: 16px 16px 0 0;
  -webkit-text-size-adjust: 100%; }
  .cookies-notice span {
    font-size: 16px; }
.cookies-close {
  color: var(--nav-color);
  margin-left: 20px; }

.intro {
  background-image: var(--grid-url);
  background-repeat: no-repeat;
  height: 100%; }
  .intro .body {
    height: 100%; }
    .intro .body .content {
      display: flex;
      align-items: center;
      width: 100%; }
      .intro .body .content-wrapper h1 {
        margin-bottom: 24px; }
      .intro .body .content-wrapper .subtitle {
        color: #8C8B8B;
        font-weight: normal; }
  .intro .media {
    width: 100%; }
    .intro .media-icons {
      width: 60px;
      left: -75px;
      position: absolute;
      top: 40px;
      display: flex;
      flex-direction: column;
      align-items: flex-end; }
    .intro .media-icon {
      width: 35px;
      height: 35px;
      background-position: center;
      background-repeat: no-repeat;
      background-size: contain;
      margin-bottom: 15px; }
      .intro .media-icon.search {
        background-image: var(--search-icon); }
      .intro .media-icon.code {
        background-image: var(--code-icon);
        align-self: start; }
      .intro .media-icon.branch {
        background-image: var(--branch-icon); }
    .intro .media-phone {
      width: 200px;
      height: 385px;
      background-size: contain;
      position: relative;
      background-image: var(--phone-bg);
      background-position: center;
      background-repeat: no-repeat;
      display: flex;
      flex-direction: column;
      align-items: center; }
      .intro .media-phone .cutout {
        width: 64px;
        height: 16px;
        border: 1.5px solid rgba(255, 255, 255, 0.12);
        border-radius: 24px;
        margin: 24px;
        transform: matrix(-1, 0, 0, 1, 0, 0); }
      .intro .media-phone__clock {
        margin-bottom: 5px;
        text-align: center; }
        .intro .media-phone__clock .time {
          font-size: 37px;
          line-height: 37px;
          text-align: center;
          margin: 5px 0;
          text-transform: uppercase; }
        .intro .media-phone__clock .date {
          line-height: 28px;
          color: #8C8B8B;
          margin: 10px 0; }
      .intro .media-phone__item {
        width: 190px;
        height: 40px;
        background-size: contain;
        background-image: var(--message-icon);
        background-position: center;
        background-repeat: no-repeat;
        margin-bottom: 12px; }
        .intro .media-phone__item:nth-child(even) {
          margin-right: -36px; }
        .intro .media-phone__item:nth-child(odd) {
          margin-left: -36px; }
    .intro .media-tag {
      width: 150px;
      height: 100px;
      background-size: contain;
      left: -75px;
      bottom: -20px;
      position: absolute;
      background-image: var(--tag-icon);
      background-position: center;
      background-repeat: no-repeat; }

@media (max-width: 767px) {
  .intro {
    background-position: -25px 100%; }
    .intro .body .content {
      text-align: center; }
      .intro .body .content-wrapper {
        width: 100%; }
    .intro .body .media-phone {
      margin: 70px auto; } }
@media (min-width: 768px) {
  .intro {
    background-position: 160% 50%; }
    .intro .body {
      display: flex; }
      .intro .body .content {
        max-width: 50%; }
      .intro .body .media {
        max-width: 50%; }
        .intro .body .media-phone {
          margin: 108px 15% 140px auto; } }
@media (max-width: 919px) {
  .intro {
    background-size: contain; }
    .intro .media-phone__clock .date {
      font-size: 14px; } }
@media (min-width: 920px) {
  .intro .media-icons {
    width: 85px;
    left: -130px; }
  .intro .media-icon {
    width: 56px;
    height: 56px; }
  .intro .media-phone {
    width: 290px;
    height: 576px; }
    .intro .media-phone .cutout {
      width: 96px;
      height: 24px; }
    .intro .media-phone__clock .time {
      font-size: 56px;
      line-height: 56px; }
    .intro .media-phone__clock .date {
      font-size: 16px; }
    .intro .media-phone__item {
      width: 288px;
      height: 60px; }
  .intro .media-tag {
    left: -135px;
    bottom: 0;
    width: 270px;
    height: 144px; } }
#about {
  display: grid;
  grid-gap: var(--gap); }
  #about .about {
    margin: 0 auto 80px; }
    #about .about .grey {
      margin-top: 24px; }
  #about .article:not(.about) {
    padding: var(--gutter);
    background: var(--box-bg);
    border: 1px solid var(--box-border);
    border-radius: 16px; }
    #about .article:not(.about) .article-wrapper {
      height: 100%; }
    #about .article:not(.about) .image img {
      width: 80px;
      height: 80px; }
    #about .article:not(.about) .body {
      padding-top: var(--gutter); }

@media (min-width: 920px) {
  #about {
    grid-template-columns: repeat(4, 2fr); }
    #about .about {
      grid-column: span 4;
      max-width: 584px;
      margin: 0 auto 140px; }
    #about .article:not(.about) {
      grid-column: span 2; }
      #about .article:not(.about) .article-wrapper {
        display: flex;
        flex-direction: column;
        justify-content: space-between; } }
#projects {
  position: relative;
  padding-bottom: 125px; }
  #projects .project {
    background: var(--box-bg);
    border: 1px solid var(--box-border);
    border-radius: 16px;
    padding: var(--gutter);
    margin-bottom: var(--gap); }
    #projects .project .image {
      width: 100%;
      margin-bottom: 40px; }
      #projects .project .image img {
        margin: 0 auto; }
    #projects .project .body {
      display: flex;
      flex-direction: column;
      align-self: center; }
      #projects .project .body h2 {
        margin: 15px 0; }
      #projects .project .body .grey {
        margin-bottom: var(--gutter); }
      #projects .project .body .button {
        display: inline-block;
        height: 40px;
        font-size: 0;
        outline: none;
        border: none; }
        #projects .project .body .button.apple {
          width: 120px;
          background: url("/images/app-store.svg") no-repeat center;
          margin-right: 15px; }
        #projects .project .body .button.android {
          width: 136px;
          background: url("/images/google-play.svg") no-repeat center; }
        #projects .project .body .button:hover {
          opacity: 0.7; }
  #projects > .subtitle.red {
    text-align: center;
    margin: 130px auto 24px;
    padding: 0 46px; }
  #projects .testimonials-wrapper {
    position: relative;
    width: 100%;
    max-width: 790px;
    margin: 0 auto;
    text-align: center;
    overflow: hidden; }
  #projects .slider-nav {
    display: flex;
    justify-content: center;
    height: 140px; }
    #projects .slider-nav .swiper-pagination-bullet {
      text-align: center; }
      #projects .slider-nav .swiper-pagination-bullet-active {
        width: 120px; }
        #projects .slider-nav .swiper-pagination-bullet-active .testimonial-meta {
          position: relative;
          display: inline-flex;
          flex-direction: column;
          align-items: center;
          width: 120px;
          height: 140px;
          z-index: 1; }
          #projects .slider-nav .swiper-pagination-bullet-active .testimonial-meta > *:not(.dot) {
            opacity: 1;
            visibility: visible;
            transition: all 0.3s ease; }
          #projects .slider-nav .swiper-pagination-bullet-active .testimonial-meta img {
            width: 40px;
            height: 56px;
            border-radius: 32px;
            margin-bottom: 24px; }
          #projects .slider-nav .swiper-pagination-bullet-active .testimonial-meta .dot {
            display: none; }
      #projects .slider-nav .swiper-pagination-bullet:not(.swiper-pagination-bullet-active) {
        width: 24px;
        height: 24px;
        align-self: center;
        margin: 0 50px; }
        #projects .slider-nav .swiper-pagination-bullet:not(.swiper-pagination-bullet-active) .testimonial-meta {
          width: 24px;
          height: 24px;
          display: flex;
          align-items: center;
          justify-content: center; }
          #projects .slider-nav .swiper-pagination-bullet:not(.swiper-pagination-bullet-active) .testimonial-meta > *:not(.dot) {
            width: 0;
            height: 0;
            opacity: 0;
            visibility: hidden;
            transition: all 0.3s ease; }
          #projects .slider-nav .swiper-pagination-bullet:not(.swiper-pagination-bullet-active) .testimonial-meta > .dot {
            display: block;
            box-sizing: content-box;
            width: 14px;
            height: 14px;
            margin: 0 auto;
            background: var(--dot-bg);
            border: 1px solid var(--dot-border);
            border-radius: 32px;
            transition: all 0.3s ease; }
        #projects .slider-nav .swiper-pagination-bullet:not(.swiper-pagination-bullet-active):hover .testimonial-meta > .dot {
          padding: 4px;
          transition: all 0.3s ease; }
  #projects .logo-bg {
    display: none; }

@media (max-width: 919px) {
  #projects .project:nth-child(2) > .image {
    background: #4dc3cf; }
  #projects .project:nth-child(3) > .image {
    background: #333a40; } }
@media (min-width: 920px) {
  #projects .project {
    display: flex; }
    #projects .project .image {
      max-width: 410px;
      margin-right: 80px;
      margin-bottom: 0; }
  #projects > .subtitle.red {
    margin: 260px auto 24px; }

  .logo-bg {
    display: block;
    position: absolute;
    bottom: 0; }
    .logo-bg svg path {
      fill: var(--logo); }
    .logo-bg.left {
      right: calc(100% - 120px); }
    .logo-bg.right {
      left: calc(100% - 120px); } }
#contact {
  display: grid;
  grid-gap: var(--gap);
  margin: 0 auto 200px; }
  #contact .contact {
    padding: var(--gutter);
    background: var(--box-bg);
    border: 1px solid var(--box-border);
    border-radius: 16px;
    text-align: center;
    min-width: 100%; }
    #contact .contact .image {
      margin-bottom: 24px; }
      #contact .contact .image img {
        margin: 0 auto;
        width: 80px;
        height: 80px; }

@media (min-width: 920px) {
  #contact {
    grid-template-columns: repeat(3, 2fr); }
    #contact .section-header {
      grid-column: span 3; } }
.wrapper {
  width: 100%;
  max-width: 1512px;
  margin: 0 auto; }

.main {
  margin: 112px auto; }

.section {
  max-width: 1288px;
  margin: 0 auto;
  padding: 0 var(--gap); }
  .section-header {
    margin: 60px auto 80px;
    max-width: 790px;
    text-align: center; }
    .section-header .subtitle {
      margin-bottom: 15px; }

section.section {
  padding-top: 115px; }

.red {
  color: var(--red); }

.grey {
  color: var(--grey); }

.article.goal, .article.vision, .article.project, .article.contact {
  transition: all 0.3s ease; }
  .article.goal:hover, .article.vision:hover, .article.project:hover, .article.contact:hover {
    box-shadow: 0 0 5px 2px var(--box-border);
    transition: all 0.3s ease; }
.article.goal:hover .image img, .article.vision:hover .image img, .article.contact:hover .image img {
  -webkit-animation: pulsate-fwd 1s ease-in-out infinite both;
  animation: pulsate-fwd 1s ease-in-out infinite both; }

section > * {
  opacity: 0;
  /*-webkit-animation: fade-out 1s ease-out both;
  animation: fade-out 1s ease-out both;*/ }

