@charset "UTF-8";
/*********************************************************************************/
/* Functions */
/*********************************************************************************/
/*********************************************************************************/
/* Mixins */
/*********************************************************************************/
/*********************************************************************************/
/* Properties / Variables */
/*********************************************************************************/
:root {
  --font-size: 1.8rem;
  --font-primary: 'articulat-cf', sans-serif;
  --font-secondary: 'gyst-variable', sans-serif;
  --font-tertiary: 'Space Mono', sans-serif;
  --grid-gap: 3.2rem;
  --max-height-viewport: calc(var(--viewport-height) - var(--site-header-height) - 2rem);
  --max-width: 144rem;
  --max-width-large: 179.2rem;
  --max-width-text: 96rem;
  --max-width-text-small: 56rem;
  --radius: 1.6rem;
  --radius-large: 4.4rem;
  --radius-medium: 3.2rem;
  --radius-small: 0.8rem;
  --ratio-5-3: 5 / 3;
  --ratio-9-4: 9 / 4;
  --security-padding-x: 4rem;
  --security-padding-y: 8rem;
  --shadow: 0 1rem 2rem rgba(0, 0, 0, 0.2);
  --site-header-height: 13.2rem;
  --transition-duration: 0.65s;
  --transition-duration-long: 1.2s;
  --transition-timing-function: cubic-bezier(.19,1,.22,1);
  --viewport-height: 100dvh;
  --viewport-width: 100dvw;
  --aurora: #CFF390;
  --cloud: #F4F3F0;
  --dawn: #FD998C;
  --dune: #DDD9D5;
  --dusk: #BD9AF8;
  --error: #F54655;
  --night: #141414;
  --sand: #FCDD99;
  --shade: #C4BFBA;
  --sky: #653DE2;
  --success: #5FBE19;
  --sun: #FFA952;
  --white: #FFF;
  --scheme-primary: var(--night);
  --scheme-primary-grade-1: #1e1e1e;
  --scheme-primary-grade-2: rgba(255, 255, 255, 0.1);
  --scheme-primary-grade-3: #505050;
  --scheme-contrast: var(--white); }
  @media (max-width: 767px) {
    :root {
      --max-width-text-small: 100%;
      --ratio-5-3: 3 / 4;
      --ratio-9-4: 7 / 10;
      --security-padding-x: 1.6rem;
      --security-padding-y: 6.4rem;
      --site-header-height: 11.6rem; } }

/*********************************************************************************/
/* Normalize / Reset */
/*********************************************************************************/
* {
  box-sizing: border-box; }

::selection {
  background: var(--aurora);
  color: var(--night);
  -webkit-text-fill-color: var(--night); }

html {
  font-size: 62.5%;
  height: 100%;
  scroll-behavior: smooth; }

body {
  background: var(--scheme-primary);
  color: var(--scheme-contrast);
  font-family: var(--font-primary);
  font-size: var(--font-size);
  font-weight: 600;
  line-height: 1.25;
  margin: 0;
  min-height: 100%;
  scroll-behavior: smooth;
  -webkit-font-smoothing: antialiased;
  -webkit-text-size-adjust: 100%; }
  body:not(.js-user-keyboard) a,
  body:not(.js-user-keyboard) button,
  body:not(.js-user-keyboard) input,
  body:not(.js-user-keyboard) select,
  body:not(.js-user-keyboard) textarea {
    outline: none; }

a {
  color: inherit;
  text-decoration: none; }

button {
  background: none;
  border: none;
  color: inherit;
  cursor: pointer;
  font-family: inherit;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
  padding: 0;
  text-align: left; }

fieldset {
  border: 0;
  display: block;
  margin: 0;
  padding: 0;
  width: 100%; }
  fieldset legend {
    margin: 0; }

h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: inherit;
  font-size: inherit;
  font-weight: inherit;
  margin: 0; }

img {
  display: block;
  height: auto;
  width: 100%; }

input,
select,
textarea {
  appearance: none;
  background: transparent;
  border: none;
  color: inherit;
  display: block;
  font-family: inherit;
  font-size: inherit;
  font-weight: inherit;
  letter-spacing: inherit;
  line-height: inherit;
  margin: 0;
  padding: 0;
  resize: none; }

input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
  transition: background-color 5000000s ease-in-out 0s; }

p {
  margin: 0; }

select {
  cursor: pointer; }

svg {
  display: block;
  height: auto;
  max-height: 100%;
  pointer-events: none;
  width: 100%; }

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

.hero--basic .js-fillout-button {
  display: none; }

@media (max-width: 767px) {
  .hero--basic .js-fillout-button {
    display: block; } }
@media (prefers-reduced-motion: reduce) {
  * {
    animation-delay: 0s !important;
    animation-duration: 0s !important;
    transition-delay: 0s !important;
    transition-duration: 0s !important; }

  .js-parallax {
    transform: none !important; } }
/*********************************************************************************/
/* Atoms */
/*********************************************************************************/
.button {
  --button-height: 4.5rem;
  --button-radius: 0;
  align-items: center;
  border-radius: var(--button-radius);
  gap: 1.2rem;
  display: inline-flex; }
  @media (max-width: 767px) {
    .button {
      font-size: 1.6rem; } }
  .button * {
    pointer-events: none; }
  .button:disabled {
    opacity: 0.3;
    pointer-events: none; }
  .button--filled {
    --button-background: var(--aurora);
    --button-color: var(--scheme-primary);
    --button-hover-background: var(--scheme-primary-grade-3);
    --button-hover-color: var(--aurora);
    --button-radius: var(--radius-large);
    background: var(--button-background);
    color: var(--button-color);
    flex-direction: column;
    font-family: var(--font-tertiary);
    font-weight: 400;
    gap: 0;
    height: var(--button-height);
    overflow: hidden;
    position: relative;
    text-transform: uppercase;
    white-space: nowrap; }
    .button--filled__content, .button--filled__hover {
      align-items: center;
      border-radius: var(--button-radius);
      display: flex;
      flex-shrink: 0;
      height: var(--button-height);
      padding: 0 2rem;
      transition: transform var(--transition-duration) var(--transition-timing-function); }
    .button--filled__content {
      transition-delay: 0.1s; }
    .button--filled__hover {
      background: var(--button-hover-background);
      color: var(--button-hover-color); }
    @media (hover: hover) and (pointer: fine) {
      .button--filled:hover .button--filled__content {
        transform: translateY(-100%);
        transition-delay: 0s; }
      .button--filled:hover .button--filled__hover {
        transform: translateY(-100%);
        transition-delay: 0.1s; } }
    .button--filled.theme {
      --button-background: var(--scheme-primary-grade-2);
      --button-color: var(--scheme-contrast);
      --button-hover-background: var(--theme-background);
      --button-hover-color: var(--theme-color); }
    .button--filled.button--round .button--filled__content,
    .button--filled.button--round .button--filled__hover {
      padding: 0 1.2rem; }
    .button--filled.button--small .button--filled__content,
    .button--filled.button--small .button--filled__hover {
      padding: 0 1.6rem; }
  .button--outlined {
    --button-radius: var(--radius-large);
    border: 0.1rem solid var(--scheme-primary-grade-3);
    font-family: var(--font-tertiary);
    font-weight: 400;
    height: var(--button-height);
    padding: 0 2rem;
    text-transform: uppercase;
    transition-duration: var(--transition-duration);
    transition-property: background-color, border-color, color;
    transition-timing-function: var(--transition-timing-function);
    white-space: nowrap; }
    @media (hover: hover) and (pointer: fine) {
      .button--outlined:hover {
        background: var(--scheme-primary-grade-2);
        border-color: var(--scheme-primary-grade-2);
        color: var(--scheme-contrast); } }
    .button--outlined.button--small {
      padding: 0 1.6rem; }
  .button--round {
    --button-radius: 100%;
    width: var(--button-height); }
  .button--small {
    --button-height: 3.2rem;
    font-size: 1.6rem; }
    @media (max-width: 767px) {
      .button--small {
        --button-height: 2.9rem;
        font-size: 1.4rem; } }

.h1 {
  font-size: 12rem;
  letter-spacing: -0.02em;
  line-height: 0.9;
  text-wrap: balance; }
  @media (max-width: 1439px) {
    .h1 {
      font-size: 9.6rem; } }
  @media (max-width: 1023px) {
    .h1 {
      font-size: 7.2rem; } }
  @media (max-width: 767px) {
    .h1 {
      font-size: 6.4rem; } }
  .h1 strong {
    color: var(--dusk);
    font-weight: inherit; }

.h2 {
  font-size: 9.6rem;
  letter-spacing: -0.02em;
  line-height: 1.09;
  text-wrap: balance; }
  @media (max-width: 1439px) {
    .h2 {
      font-size: 7.2rem; } }
  @media (max-width: 1279px) {
    .h2 {
      font-size: 6.4rem; } }
  @media (max-width: 767px) {
    .h2 {
      font-size: 4.8rem; } }
  .h2 strong {
    color: var(--dusk);
    font-weight: inherit; }
    .h2 strong:nth-child(2) {
      color: var(--aurora); }

.h3,
.wysiwyg h1 {
  font-size: 6.4rem;
  letter-spacing: -0.02em;
  line-height: 1.12;
  text-wrap: balance; }
  @media (max-width: 1023px) {
    .h3,
    .wysiwyg h1 {
      font-size: 5.6rem; } }
  @media (max-width: 767px) {
    .h3,
    .wysiwyg h1 {
      font-size: 3.2rem; } }
  .h3 strong,
  .wysiwyg h1 strong {
    color: var(--dusk);
    font-weight: inherit; }
    .h3 strong:nth-child(2),
    .wysiwyg h1 strong:nth-child(2) {
      color: var(--aurora); }

.h4,
.wysiwyg h2 {
  font-size: 4rem;
  letter-spacing: -0.02em;
  line-height: 1.2; }
  @media (max-width: 767px) {
    .h4,
    .wysiwyg h2 {
      font-size: 3.2rem; } }

.h5,
.wysiwyg h3 {
  font-size: 3.2rem;
  letter-spacing: -0.02em;
  line-height: 1.2;
  text-wrap: balance; }
  @media (max-width: 767px) {
    .h5,
    .wysiwyg h3 {
      font-size: 2.4rem; } }

.h6,
.wysiwyg h4,
.wysiwyg h5,
.wysiwyg h6 {
  font-size: 2rem;
  line-height: 1.2;
  white-space: nowrap; }
  .h6::before,
  .wysiwyg h4::before,
  .wysiwyg h5::before,
  .wysiwyg h6::before {
    color: var(--dusk);
    content: '/ '; }

.media {
  inset: 0;
  position: absolute; }
  .media__image {
    height: 100%;
    inset: 0;
    object-fit: cover;
    position: absolute; }
  .media .js-parallax {
    inset: 0;
    position: absolute; }

.pill-service {
  align-items: center;
  background: var(--theme-background);
  border-radius: var(--radius-medium);
  color: var(--theme-color);
  display: flex;
  font-family: var(--font-tertiary);
  font-size: 1.6rem;
  font-weight: 400;
  height: 3.2rem;
  padding: 0 1.6rem;
  text-transform: uppercase;
  white-space: nowrap; }

.theme {
  --theme-background: var(--scheme-contrast);
  --theme-color: var(--scheme-primary); }
  .theme--aurora {
    --theme-background: var(--aurora);
    --theme-color: var(--night); }
  .theme--dawn {
    --theme-background: var(--dawn);
    --theme-color: var(--night); }
  .theme--dusk {
    --theme-background: var(--dusk);
    --theme-color: var(--night); }
  .theme--sky {
    --theme-background: var(--sky);
    --theme-color: var(--white); }
  .theme--sand {
    --theme-background: var(--sand);
    --theme-color: var(--night); }
  .theme--sun {
    --theme-background: var(--sun);
    --theme-color: var(--night); }

.visually-hidden {
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  height: 0.1rem;
  overflow: hidden;
  position: fixed;
  white-space: nowrap;
  width: 0.1rem; }

.wysiwyg {
  display: flex;
  flex-direction: column;
  font-size: 2rem;
  gap: 2.4rem;
  line-height: 1.5; }
  @media (max-width: 1023px) {
    .wysiwyg {
      font-size: inherit; } }
  @media (max-width: 767px) {
    .wysiwyg {
      font-size: 1.6rem; } }
  .wysiwyg a:not(.button) {
    border-bottom: 0.1rem solid var(--scheme-primary-grade-3);
    display: inline;
    transition: border-color var(--transition-duration) var(--transition-timing-function); }
    @media (hover: hover) and (pointer: fine) {
      .wysiwyg a:not(.button):hover {
        border-color: transparent; } }
  .wysiwyg h2:not(:first-child),
  .wysiwyg h3:not(:first-child),
  .wysiwyg h4:not(:first-child),
  .wysiwyg h5:not(:first-child),
  .wysiwyg h6:not(:first-child) {
    margin-top: 2.4rem; }
  .wysiwyg h4:not(:last-child),
  .wysiwyg h5:not(:last-child),
  .wysiwyg h6:not(:last-child) {
    margin-bottom: -1.2rem; }
  .wysiwyg ol {
    display: flex;
    flex-direction: column;
    gap: 2rem;
    padding-left: 1.5em; }
    .wysiwyg ol li {
      display: flex;
      flex-direction: column;
      gap: 2rem;
      list-style: decimal;
      position: relative; }
  .wysiwyg strong {
    font-weight: 800; }
  .wysiwyg table {
    border-collapse: collapse;
    display: block;
    width: 100%; }
    .wysiwyg table th,
    .wysiwyg table td {
      border-bottom: 0.1rem solid currentcolor;
      padding: 1.6rem 4rem 1.6rem 0;
      text-align: left; }
    .wysiwyg table tr:last-child th, .wysiwyg table tr:last-child td {
      border-bottom: none;
      padding-bottom: 0; }
  .wysiwyg ul {
    display: flex;
    flex-direction: column;
    gap: 2.4rem; }
    .wysiwyg ul li {
      display: flex;
      flex-direction: column;
      gap: 1.2rem;
      padding-left: 3.2rem;
      position: relative; }
      .wysiwyg ul li::before {
        color: var(--dusk);
        content: '•';
        display: block;
        font-size: 2em;
        left: 0;
        line-height: 0.85;
        position: absolute; }
  .wysiwyg--small {
    gap: 0.8rem; }
    .wysiwyg--small ol,
    .wysiwyg--small ul {
      gap: 0.8rem; }

/*********************************************************************************/
/* Molecules */
/*********************************************************************************/
/* Card - Service */
.card-service {
  background: var(--scheme-primary-grade-1);
  border-radius: var(--radius);
  display: grid;
  flex-grow: 1;
  grid-template-columns: 1fr 1fr;
  position: relative; }
  @media (max-width: 1023px) {
    .card-service {
      display: flex;
      flex-direction: column-reverse; } }
  .card-service__content {
    align-self: center;
    display: flex;
    flex-direction: column;
    gap: 3.2rem;
    padding: var(--security-padding-x); }
    @media (max-width: 1023px) {
      .card-service__content {
        align-self: flex-start;
        flex-grow: 1; } }
    @media (max-width: 767px) {
      .card-service__content {
        gap: 1.6rem;
        padding-bottom: calc(var(--security-padding-x) + 5.6rem); } }
  .card-service__title {
    font-size: 4.8rem;
    letter-spacing: -0.02em;
    line-height: 1.12;
    max-width: 62rem;
    text-wrap: balance; }
    @media (max-width: 1279px) {
      .card-service__title {
        font-size: 4rem; } }
    @media (max-width: 1023px) {
      .card-service__title {
        font-size: 3.2rem; } }
    @media (max-width: 767px) {
      .card-service__title {
        font-size: 2.4rem; } }
  .card-service__text {
    gap: 4.8rem;
    max-width: 62rem; }
    @media (max-width: 767px) {
      .card-service__text .card-service__services {
        display: none; } }
  .card-service__visual {
    padding: 1.2rem; }
    @media (max-width: 767px) {
      .card-service__visual {
        padding: 0.8rem 0.8rem 1.6rem; } }
    .card-service__visual img {
      aspect-ratio: 7 / 6;
      border-radius: var(--radius-small);
      height: 100%;
      object-fit: cover; }
      @media (max-width: 1023px) {
        .card-service__visual img {
          aspect-ratio: 16 / 9;
          height: auto; } }
  .wysiwyg .card-service__services {
    font-family: var(--font-tertiary);
    font-size: 1.6rem;
    text-transform: uppercase;
    font-weight: 400;
    gap: 0.8rem; }
    @media (max-width: 767px) {
      .wysiwyg .card-service__services {
        font-size: 1.3rem; } }
    .wysiwyg .card-service__services li {
      padding-left: 2.4rem; }
      .wysiwyg .card-service__services li::before {
        color: var(--theme-background);
        font-size: 1.5em;
        line-height: 1; }
  .card-service .js-marquee {
    inset: auto 0 var(--security-padding-x);
    overflow: hidden;
    position: absolute;
    width: 100%; }
    @media (min-width: 768px) {
      .card-service .js-marquee {
        display: none; } }
    .card-service .js-marquee .wysiwyg .card-service__services {
      flex-direction: row; }
      .card-service .js-marquee .wysiwyg .card-service__services li {
        flex-shrink: 0;
        white-space: nowrap; }

/* Modal - Site Header */
.modal-site-header {
  display: none; }
  @media (max-width: 767px) {
    .modal-site-header {
      display: block; } }
  .modal-site-header__toggler {
    position: fixed;
    right: calc(var(--security-padding-x) * 2);
    top: calc(var(--site-header-height) / 2 - 1.2rem);
    transition-duration: var(--transition-duration);
    transition-property: opacity, transform;
    transition-timing-function: var(--transition-timing-function);
    width: 2.4rem;
    z-index: 21; }
    @media (hover: hover) and (pointer: fine) {
      .modal-site-header__toggler:hover {
        opacity: 0.3; } }
  .modal-site-header__toggled {
    background: #1a1a1a;
    clip-path: inset(0 0 100% 0);
    inset: 0;
    pointer-events: none;
    position: fixed;
    transition: clip-path var(--transition-duration) var(--transition-timing-function);
    z-index: 19; }
    .modal-site-header__toggled-ctn {
      display: flex;
      flex-direction: column;
      gap: var(--security-padding-x);
      height: 100%;
      overflow: auto;
      padding: var(--site-header-height) var(--security-padding-x) 3.2rem; }
  .modal-site-header__nav {
    background: var(--scheme-primary-grade-2);
    border-radius: var(--radius);
    font-size: 2.4rem;
    padding: 0 var(--security-padding-x); }
    .modal-site-header__nav a {
      display: block;
      padding: 2.4rem 0;
      transition: opacity var(--transition-duration) var(--transition-timing-function); }
      @media (hover: hover) and (pointer: fine) {
        .modal-site-header__nav a:hover {
          opacity: 0.3; } }
    .modal-site-header__nav li + li {
      border-top: 0.1rem solid var(--scheme-primary-grade-3); }
  .modal-site-header__cta {
    display: flex;
    justify-content: center;
    margin: var(--security-padding-x) 0 calc(var(--security-padding-x) * 3); }
  .modal-site-header__socials {
    align-items: center;
    display: flex;
    gap: 0.8rem;
    justify-content: center;
    margin-top: auto; }
    .modal-site-header__socials a {
      align-items: center;
      background: var(--scheme-primary-grade-2);
      border-radius: 100%;
      color: var(--scheme-contrast);
      display: flex;
      height: 4.4rem;
      justify-content: center;
      padding: 1.2rem;
      width: 4.4rem; }
      @media (hover: hover) and (pointer: fine) {
        .modal-site-header__socials a:hover {
          background: var(--scheme-contrast);
          color: var(--scheme-primary); } }
  .modal-site-header__copyright {
    color: rgba(255, 255, 255, 0.6);
    font-size: 1.6rem;
    margin-top: var(--security-padding-x);
    text-align: center; }
  .modal-site-header.js-visible .modal-site-header__toggler {
    transform: rotateZ(-135deg); }
  .modal-site-header.js-visible .modal-site-header__toggled {
    clip-path: inset(0);
    pointer-events: auto; }
  body:not(.js-loaded) .modal-site-header .modal-site-header__toggler {
    transform: translateY(calc(var(--site-header-height) * -1.01)); }

/*********************************************************************************/
/* Organisms */
/*********************************************************************************/
/* Component */
.component {
  padding: var(--security-padding-y) var(--security-padding-x);
  position: relative;
  width: 100%; }
  .component__ctn {
    margin: 0 auto;
    max-width: var(--max-width); }
  .component--large .component__ctn {
    max-width: var(--max-width-large); }

/* Component - About */
.component-about {
  display: flex;
  flex-direction: column;
  gap: 3.2rem; }
  .component-about__subtitle {
    max-width: 74rem; }
  .component-about__item {
    background: var(--theme-background);
    border-radius: var(--radius);
    color: var(--theme-color);
    display: flex;
    flex-direction: column;
    gap: 3.2rem;
    justify-content: center;
    overflow: hidden;
    padding: 4rem var(--security-padding-x);
    position: relative;
    text-align: center;
    width: 100%; }
    @media (min-width: 768px) {
      .component-about__item {
        padding: 6.4rem var(--security-padding-x); } }
    @media (min-width: 1024px) {
      .component-about__item {
        height: 48rem;
        padding: 0; } }
    @media (min-width: 1280px) {
      .component-about__item {
        height: 42rem; } }
    .component-about__item-header {
      display: flex;
      flex-direction: column;
      gap: 0.4rem; }
      @media (min-width: 1024px) {
        .component-about__item-header {
          inset: 0 0 auto;
          padding: 6.4rem 0;
          position: absolute;
          transition-duration: var(--transition-duration);
          transition-property: top, transform;
          transition-timing-function: var(--transition-timing-function); } }
    .component-about__item-value {
      font-size: 9.6rem;
      letter-spacing: -0.02em;
      line-height: 1.04; }
      @media (min-width: 1024px) {
        .component-about__item-value {
          transition: font-size var(--transition-duration) var(--transition-timing-function); } }
      @media (max-width: 767px) {
        .component-about__item-value {
          font-size: 6.4rem; } }
    .component-about__item-label {
      font-family: var(--font-tertiary);
      font-size: 1.6rem;
      font-weight: 400;
      text-transform: uppercase; }
      @media (min-width: 1024px) {
        .component-about__item-label {
          transition: font-size var(--transition-duration) var(--transition-timing-function); } }
    @media (min-width: 1024px) {
      .component-about__item-text {
        inset: auto auto 0 50%;
        padding: 6.4rem var(--security-padding-x);
        position: absolute;
        transform: translateX(-50%);
        transition: opacity var(--transition-duration) var(--transition-timing-function);
        width: calc(var(--width-ctn) * (2.2 / (var(--nb-items) + 1))); } }
  .component-about .swiper {
    margin-top: 2.4rem; }
    @media (min-width: 1024px) {
      .component-about .swiper-wrapper {
        transform: none !important;
        width: 100% !important; } }
    @media (min-width: 1024px) {
      .component-about .swiper-slide {
        flex-grow: 1;
        transition: all var(--transition-duration) var(--transition-timing-function);
        width: auto !important; }
        .component-about .swiper-slide:not(.js-active) .component-about__item-header {
          top: 50%;
          transform: translateY(-50%); }
        .component-about .swiper-slide:not(.js-active) .component-about__item-value {
          font-size: 6.4rem; }
        .component-about .swiper-slide:not(.js-active) .component-about__item-label {
          font-size: 1.4rem; }
        .component-about .swiper-slide:not(.js-active) .component-about__item-text {
          opacity: 0; }
        .component-about .swiper-slide.js-active {
          flex-grow: 2.4; } }

/* Component - Contact */
.component-contact {
  align-items: center;
  display: flex;
  flex-direction: column;
  gap: var(--security-padding-y); }
  .component-contact__title {
    max-width: 74rem;
    text-align: center; }
  .component-contact__items {
    display: grid;
    gap: 1.6rem;
    grid-template-columns: 1fr 1fr 1fr; }
    @media (max-width: 1023px) {
      .component-contact__items {
        grid-template-columns: 1fr; } }
    @media (max-width: 767px) {
      .component-contact__items {
        gap: 0.8rem; } }
  .component-contact__item {
    background: var(--scheme-primary);
    border: 0.1rem solid var(--scheme-primary-grade-1);
    border-radius: var(--radius);
    display: flex;
    flex-direction: column;
    gap: 1.6rem;
    padding: 2.4rem;
    text-align: center; }
    @media (min-width: 768px) {
      .component-contact__item {
        gap: 2.4rem;
        padding: 4rem 3.2rem; } }
    .component-contact__item-id {
      margin: 0 auto 1.2rem;
      width: 4rem; }
  .component-contact__fillout {
    display: flex;
    justify-content: center; }
  .component-contact__decoration {
    left: 0;
    max-width: 94rem;
    pointer-events: none;
    position: absolute;
    top: 0;
    width: 50%;
    z-index: -1; }
    @media (max-width: 1023px) {
      .component-contact__decoration {
        width: 80%; } }
    .component-contact__decoration svg {
      animation: js-rotate-shape-contact 60s forwards infinite linear;
      transform: translate(-60%, -40%); }
@keyframes js-rotate-shape-contact {
  0% {
    transform: translate(-60%, -40%) rotateZ(0deg); }
  100% {
    transform: translate(-60%, -40%) rotateZ(-360deg); } }
/* Component - Partners */
.component-partners {
  display: flex;
  flex-direction: column;
  gap: var(--security-padding-y); }
  .component-partners__title {
    margin: 0 auto;
    max-width: 74rem;
    text-align: center; }
  .component-partners__marquee {
    left: 50%;
    margin-left: calc(var(--viewport-width) * -0.5);
    position: relative;
    width: var(--viewport-width); }
  .component-partners__items {
    align-items: center;
    display: flex;
    flex-shrink: 0; }
  .component-partners__item {
    flex-shrink: 0;
    padding-left: var(--security-padding-y); }
    .component-partners__item img {
      height: 8rem;
      object-fit: contain;
      object-position: center;
      opacity: 0.6;
      max-width: 19rem; }
      @media (max-width: 767px) {
        .component-partners__item img {
          height: 6.4rem;
          max-width: 16rem; } }

/* Component - Projects */
.component-projects {
  display: flex;
  flex-direction: column;
  gap: 3.2rem; }
  .component-projects__title {
    max-width: 74rem; }
  .component-projects__item {
    display: flex;
    flex-direction: column;
    gap: 4rem;
    width: 100%; }
    @media (max-width: 767px) {
      .component-projects__item {
        gap: 2.4rem; } }
    .component-projects__item-visual {
      aspect-ratio: 2 / 1;
      background: var(--scheme-primary-grade-1);
      border-radius: var(--radius);
      overflow: hidden;
      position: relative; }
      @media (max-width: 767px) {
        .component-projects__item-visual {
          aspect-ratio: 1; } }
      .component-projects__item-visual picture,
      .component-projects__item-visual video {
        height: 100%;
        inset: 0;
        object-fit: cover;
        opacity: 0;
        position: absolute;
        transition: opacity var(--transition-duration) var(--transition-timing-function);
        width: 100%; }
        .component-projects__item-visual picture img,
        .component-projects__item-visual video img {
          height: 100%;
          inset: 0;
          object-fit: cover;
          position: absolute; }
        .component-projects__item-visual picture.js-active,
        .component-projects__item-visual video.js-active {
          opacity: 1; }
      .component-projects__item-visual ul {
        background: linear-gradient(to bottom, rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0));
        display: flex;
        gap: 0.8rem;
        height: 20rem;
        inset: 0 0 auto;
        justify-content: center;
        padding: 1.6rem;
        position: absolute; }
      .component-projects__item-visual li {
        background: rgba(255, 255, 255, 0.3);
        border-radius: 6rem;
        height: 0.4rem;
        overflow: hidden;
        position: relative;
        width: 7.4rem; }
        .component-projects__item-visual li::after {
          background: #fff;
          content: '';
          display: block;
          inset: 0 auto 0 0;
          position: absolute;
          width: 0; }
        .component-projects__item-visual li.js-past-active::after {
          width: 100%; }
    .component-projects__item-content {
      align-items: center;
      display: flex;
      gap: 2.4rem;
      transition: opacity var(--transition-duration) var(--transition-timing-function); }
      @media (max-width: 1023px) {
        .component-projects__item-content {
          flex-wrap: wrap; } }
      @media (max-width: 767px) {
        .component-projects__item-content {
          align-items: baseline;
          display: grid;
          grid-template-areas: 'a b' 'c c';
          grid-template-columns: auto 1fr;
          gap: 1.2rem; } }
    .component-projects__item-count {
      flex-shrink: 0;
      grid-area: a;
      opacity: 0.3;
      white-space: nowrap; }
      @media (max-width: 767px) {
        .component-projects__item-count {
          font-size: 2.4rem; } }
    .component-projects__item-title {
      flex-shrink: 0;
      grid-area: b; }
      @media (max-width: 767px) {
        .component-projects__item-title {
          font-size: 2.4rem; } }
    .component-projects__item-services {
      display: flex;
      flex-wrap: wrap;
      font-family: var(--font-tertiary);
      font-size: 1.5rem;
      font-weight: 400;
      gap: 0.8rem;
      grid-area: c;
      justify-content: flex-end;
      margin-left: auto;
      text-transform: uppercase; }
      @media (max-width: 1023px) {
        .component-projects__item-services {
          justify-content: flex-start;
          width: 100%; } }
      @media (max-width: 767px) {
        .component-projects__item-services {
          font-size: 1.3rem; } }
    .component-projects__item-service:not(:last-child)::after {
      content: '•';
      color: var(--dusk); }
  .component-projects .swiper {
    margin-top: 2.4rem; }
    .component-projects .swiper-wrapper {
      cursor: none; }
      @media (hover: hover) and (pointer: fine) {
        .component-projects .swiper-wrapper:hover + .swiper-cursor {
          clip-path: inset(0 round 100%);
          opacity: 1; } }
    .component-projects .swiper-slide {
      transition: opacity var(--transition-duration) var(--transition-timing-function); }
      .component-projects .swiper-slide:not(.swiper-slide-active) {
        opacity: 0.15; }
        .component-projects .swiper-slide:not(.swiper-slide-active) .component-projects__item-content {
          opacity: 0; }
    .component-projects .swiper-cursor {
      clip-path: inset(10% round 100%);
      left: 0;
      opacity: 0;
      pointer-events: none;
      position: absolute;
      top: 0;
      transform: translate(-50%, -50%);
      transition-duration: var(--transition-duration);
      transition-property: clip-path, opacity;
      transition-timing-function: var(--transition-timing-function);
      width: 9.6rem;
      z-index: 2; }
      .component-projects .swiper-cursor svg * {
        transition: fill var(--transition-duration) var(--transition-timing-function); }
      @media (hover: none) {
        .component-projects .swiper-cursor {
          display: none; } }
    .component-projects .swiper.js-visible .swiper-slide-active .component-projects__item-visual li.js-active::after {
      animation: js-component-projects-control var(--duration) forwards linear; }
@keyframes js-component-projects-control {
  0% {
    width: 0; }
  100% {
    width: 100%; } }
/* Component - Services */
.component-services {
  display: flex;
  flex-direction: column;
  gap: 3.2rem; }
  .component-services__subtitle {
    max-width: 72rem; }
  .component-services__more {
    align-items: center;
    background: var(--scheme-primary-grade-1);
    border-radius: var(--radius);
    display: flex;
    flex-direction: column;
    flex-grow: 1;
    gap: 3.2rem;
    justify-content: center;
    overflow: hidden;
    padding: var(--security-padding-y) var(--security-padding-x);
    position: relative;
    text-align: center; }
    .component-services__more::before {
      aspect-ratio: 1;
      background: url(../images/decoration-light.svg) no-repeat center;
      content: '';
      display: block;
      pointer-events: none;
      position: absolute;
      right: 0;
      top: 0;
      transform: translate(50%, -50%);
      width: 45%; }
    .component-services__more::after {
      aspect-ratio: 1;
      background: url(../images/decoration-light.svg) no-repeat center;
      bottom: 0;
      content: '';
      display: block;
      left: 0;
      pointer-events: none;
      position: absolute;
      transform: translate(-50%, 50%);
      width: 45%; }
    .component-services__more-title {
      font-size: 4.8rem;
      letter-spacing: -0.02em;
      line-height: 1.12;
      max-width: 62rem;
      position: relative;
      z-index: 1; }
      @media (max-width: 1279px) {
        .component-services__more-title {
          font-size: 4rem; } }
      @media (max-width: 1023px) {
        .component-services__more-title {
          font-size: 3.6rem; } }
    .component-services__more-text {
      max-width: 62rem;
      position: relative;
      z-index: 1; }
    .component-services__more .button {
      margin-top: 1.6rem;
      position: relative;
      z-index: 1; }
  .component-services .swiper-controls {
    margin-top: 2.4rem; }
    .component-services .swiper-controls .swiper-slide {
      cursor: pointer; }
      .component-services .swiper-controls .swiper-slide.js-active .button--filled__content {
        transform: translateY(-100%);
        transition-delay: 0s; }
      .component-services .swiper-controls .swiper-slide.js-active .button--filled__hover {
        transform: translateY(-100%);
        transition-delay: 0.1s; }
  .component-services .swiper-main {
    margin-top: 0.8rem; }
    .component-services .swiper-main .swiper-wrapper {
      cursor: none; }
      @media (hover: hover) and (pointer: fine) {
        .component-services .swiper-main .swiper-wrapper:hover + .swiper-cursor {
          clip-path: inset(0 round 100%);
          opacity: 1; } }
    .component-services .swiper-main .swiper-slide {
      transition: opacity var(--transition-duration) var(--transition-timing-function); }
      .component-services .swiper-main .swiper-slide:not(.swiper-slide-active) {
        opacity: 0.15; }
    .component-services .swiper-main .swiper-cursor {
      clip-path: inset(10% round 100%);
      left: 0;
      opacity: 0;
      pointer-events: none;
      position: absolute;
      top: 0;
      transform: translate(-50%, -50%);
      transition-duration: var(--transition-duration);
      transition-property: clip-path, opacity;
      transition-timing-function: var(--transition-timing-function);
      width: 9.6rem;
      z-index: 2; }
      .component-services .swiper-main .swiper-cursor svg * {
        transition: fill var(--transition-duration) var(--transition-timing-function); }
      @media (hover: none) {
        .component-services .swiper-main .swiper-cursor {
          display: none; } }

/* Hero */
.hero {
  padding: calc(var(--site-header-height) + var(--security-padding-y) * 1.5) var(--security-padding-x) 0;
  position: relative;
  width: 100%; }
  .hero__ctn {
    margin: 0 auto;
    max-width: var(--max-width); }
  .hero--large .hero__ctn {
    max-width: var(--max-width-large); }

/* Hero - Basic */
.hero-basic {
  display: flex;
  flex-direction: column;
  gap: var(--security-padding-y);
  padding-bottom: var(--security-padding-y); }
  .hero-basic__grid {
    display: flex;
    flex-direction: column;
    gap: 4.8rem;
    margin: 0 auto;
    max-width: 100%;
    width: var(--max-width); }
    @media (max-width: 767px) {
      .hero-basic__grid {
        gap: 3.2rem; } }
  @media (max-width: 767px) {
    .hero-basic__title {
      font-size: 1.8rem; } }
  .hero-basic__title strong {
    color: var(--aurora);
    font-weight: inherit; }
  .hero-basic__subtitle {
    max-width: 108rem; }
    @media (max-width: 767px) {
      .hero-basic__subtitle {
        font-size: 3.6rem; } }
  .hero-basic__content {
    display: flex;
    flex-direction: column;
    gap: 3.2rem;
    max-width: var(--max-width-text-small); }
  @media (min-width: 768px) {
    .hero-basic__button {
      display: none; } }
  .hero-basic__media {
    aspect-ratio: var(--ratio-9-4);
    background: var(--scheme-primary-grade-2);
    border-radius: var(--radius-medium);
    overflow: hidden;
    position: relative;
    width: 100%; }
  .hero-basic__decoration {
    max-width: 94rem;
    pointer-events: none;
    position: absolute;
    right: 0;
    top: 0;
    width: 50%;
    z-index: -1; }
    @media (max-width: 1023px) {
      .hero-basic__decoration {
        width: 80%; } }
    .hero-basic__decoration svg {
      animation: js-rotate-shape-hero 60s forwards infinite linear;
      transform: translate(40%, -20%); }
  .hero-basic:not(.hero-basic--padded) .hero-basic__grid {
    grid-template-columns: 1fr; }
  .hero-basic--padded {
    padding-bottom: var(--security-padding-y); }
@keyframes js-rotate-shape-hero {
  0% {
    transform: translate(40%, -20%) rotateZ(0deg); }
  100% {
    transform: translate(40%, -20%) rotateZ(360deg); } }
/* Static Hero - Error */
.static-hero-error {
  align-items: center;
  display: flex;
  flex-direction: column;
  gap: 3.2rem;
  margin: 0 auto;
  max-width: var(--max-width-text);
  padding-bottom: var(--security-padding-y);
  text-align: center; }
  .static-hero-error__text {
    max-width: 72rem; }
  .static-hero-error__button {
    margin-top: 1.2rem; }

/*********************************************************************************/
/* Site */
/*********************************************************************************/
/* Site - Footer */
.site-footer {
  padding: 0 var(--security-padding-x);
  position: relative; }
  .site-footer__ctn {
    display: flex;
    flex-direction: column;
    gap: 4rem;
    margin: 0 auto;
    max-width: var(--max-width);
    padding: var(--security-padding-y) 0;
    position: relative; }
    @media (max-width: 767px) {
      .site-footer__ctn {
        padding-bottom: 0.4rem;
        text-align: center; } }
  .site-footer__contact {
    font-size: 3.2rem; }
    @media (max-width: 767px) {
      .site-footer__contact {
        font-size: 2.4rem; } }
  .site-footer__socials {
    align-items: center;
    display: flex;
    gap: 0.8rem; }
    @media (max-width: 767px) {
      .site-footer__socials {
        justify-content: center; } }
    .site-footer__socials a {
      align-items: center;
      background: var(--scheme-primary-grade-2);
      border-radius: 100%;
      color: var(--scheme-contrast);
      display: flex;
      height: 4.4rem;
      justify-content: center;
      padding: 1.2rem;
      transition-duration: var(--transition-duration);
      transition-property: background-color, color;
      transition-timing-function: var(--transition-timing-function);
      width: 4.4rem; }
      @media (hover: hover) and (pointer: fine) {
        .site-footer__socials a:hover {
          background: var(--scheme-contrast);
          color: var(--scheme-primary); } }
  .site-footer__copyright {
    color: var(--scheme-primary-grade-3); }
  .site-footer__logo {
    bottom: 0;
    max-width: 32rem;
    position: absolute;
    right: 0;
    width: 33%; }
    @media (max-width: 767px) {
      .site-footer__logo {
        display: none; } }
    .site-footer__logo svg {
      transform: translateY(10%) rotateZ(-12deg);
      transform-origin: center; }
      @media (max-width: 767px) {
        .site-footer__logo svg {
          transform: rotateZ(-12deg); } }
      .site-footer__logo svg path:first-child {
        animation: js-rotate-shape-footer 30s forwards infinite linear;
        transform-origin: center; }
@keyframes js-rotate-shape-footer {
  0% {
    transform: rotateZ(0deg); }
  100% {
    transform: rotateZ(360deg); } }
/* Site - Header */
.site-header {
  display: flex;
  height: var(--site-header-height);
  inset: 0 0 auto;
  padding: 2.4rem var(--security-padding-x);
  position: fixed;
  transition-duration: var(--transition-duration);
  transition-property: height, transform;
  transition-timing-function: var(--transition-timing-function);
  z-index: 20; }
  @media (max-width: 767px) {
    .site-header {
      padding: var(--security-padding-x); } }
  .site-header__ctn {
    align-items: center;
    backdrop-filter: blur(12px);
    background: var(--scheme-primary-grade-2);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    color: var(--scheme-contrast);
    display: flex;
    flex-grow: 1;
    gap: 7.2rem;
    margin: 0 auto;
    max-width: var(--max-width-large);
    padding: 2rem var(--security-padding-x); }
    @media (max-width: 767px) {
      .site-header__ctn {
        gap: var(--grid-gap); } }
  .site-header__logo {
    transform: translateY(-15%);
    width: 12rem; }
  .site-header__cta {
    margin-left: auto; }
    @media (max-width: 767px) {
      .site-header__cta {
        display: none; } }
  body:not(.js-loaded) .site-header {
    transform: translateY(-101%); }

/* Site - Loader */
.site-loader {
  align-items: center;
  background: var(--aurora);
  clip-path: inset(0);
  display: flex;
  inset: 0;
  justify-content: center;
  padding: var(--security-padding-x);
  position: fixed;
  transition: clip-path var(--transition-duration) 0.1s var(--transition-timing-function);
  z-index: 100; }
  .site-loader__logo {
    max-width: 24rem;
    opacity: 0;
    transform: translateY(8rem);
    transition-duration: var(--transition-duration-long);
    transition-property: opacity, transform;
    transition-timing-function: var(--transition-timing-function);
    width: 100%; }
  .site-loader.js-loading .site-loader__logo {
    opacity: 1;
    transform: none; }
  .site-loader.js-leaving {
    clip-path: inset(0 0 100% 0);
    pointer-events: none; }
    .site-loader.js-leaving .site-loader__logo {
      opacity: 0;
      transform: translateY(-8rem); }
  .site-loader.js-page-leaving {
    clip-path: inset(0);
    pointer-events: auto;
    transform: scale(-1);
    transition-delay: 0;
    transition-duration: 0.35s; }

/* Site - Main */
.site-main {
  display: flex;
  flex-direction: column;
  flex-grow: 1;
  position: relative;
  transition: padding-top var(--transition-duration) var(--transition-timing-function);
  width: 100%; }

/* Site - Skip */
.site-skip {
  left: 1.2rem;
  position: absolute;
  top: -24rem;
  z-index: 90; }
  .site-skip:focus-visible {
    top: 1.2rem; }

/* Site - Wrapper */
.site-wrapper {
  display: flex;
  flex-direction: column;
  min-height: var(--viewport-height);
  overflow: hidden;
  position: relative; }

/*********************************************************************************/
/* Javascript */
/*********************************************************************************/
.js-autoplay-video {
  inset: 0;
  position: absolute; }
  .js-autoplay-video-toggled {
    height: 100%;
    inset: 0;
    object-fit: cover;
    position: absolute;
    width: 100%; }
  .js-autoplay-video-controls {
    bottom: 2.4rem;
    display: flex;
    gap: 0.8rem;
    position: absolute;
    right: 2.4rem; }
    .js-autoplay-video-controls button {
      align-items: center;
      aspect-ratio: 1;
      background: var(--white);
      border: 0.1rem solid var(--scheme-primary-grade-2);
      border-radius: 100%;
      color: var(--scheme-primary);
      display: flex;
      justify-content: center;
      opacity: 0.5;
      transition: opacity var(--transition-duration) var(--transition-timing-function);
      width: 3.2rem; }
      .js-autoplay-video-controls button svg {
        height: 1.4rem;
        width: 1.4rem; }
      @media (hover: hover) and (pointer: fine) {
        .js-autoplay-video-controls button:hover {
          opacity: 1; } }
  .js-autoplay-video-toggler-icon-play {
    display: none; }
  .js-autoplay-video-sound-toggler-icon-unmute {
    display: none; }
  .js-autoplay-video.js-unmuted .js-autoplay-video-sound-toggler-icon-mute {
    display: none; }
  .js-autoplay-video.js-unmuted .js-autoplay-video-sound-toggler-icon-unmute {
    display: block; }
  .js-autoplay-video.js-paused .js-autoplay-video-toggler-icon-play {
    display: block; }
  .js-autoplay-video.js-paused .js-autoplay-video-toggler-icon-pause {
    display: none; }

.js-marquee {
  overflow: hidden;
  position: relative;
  width: 100%; }
  .js-marquee-wrapper {
    animation: js-marquee-loop var(--duration) forwards infinite linear;
    display: flex;
    position: relative;
    z-index: 1; }
  .js-marquee-item, .js-marquee-item-duplicate {
    display: flex;
    flex-shrink: 0; }
  .js-marquee[data-js-marquee-direction="vertical"] {
    height: 100%; }
    .js-marquee[data-js-marquee-direction="vertical"] .js-marquee-wrapper {
      animation: js-marquee-loop-vertical var(--duration) forwards infinite linear;
      flex-direction: column; }
  .js-marquee:not(.js-visible) .js-marquee-wrapper, .js-marquee.js-paused .js-marquee-wrapper {
    animation-play-state: paused; }
@keyframes js-marquee-loop {
  0% {
    transform: none; }
  100% {
    transform: translate3d(var(--translation), 0, 0); } }
@keyframes js-marquee-loop-vertical {
  0% {
    transform: none; }
  100% {
    transform: translate3d(0, var(--translation), 0); } }
.js-reveal-on-scroll {
  transition-duration: var(--transition-duration-long);
  transition-property: opacity, transform;
  transition-timing-function: var(--transition-timing-function); }
  .js-reveal-on-scroll:not(.js-visible), body:not(.js-loaded) .js-reveal-on-scroll {
    opacity: 0;
    transform: translateY(4rem);
    transition-delay: 0s !important;
    transition-duration: 0s !important; }
  .js-reveal-on-scroll.js-reveal-on-scroll--delay-1 {
    transition-delay: 100ms; }
  .js-reveal-on-scroll.js-reveal-on-scroll--delay-2 {
    transition-delay: 200ms; }
  .js-reveal-on-scroll.js-reveal-on-scroll--delay-3 {
    transition-delay: 300ms; }
  .js-reveal-on-scroll.js-reveal-on-scroll--delay-4 {
    transition-delay: 400ms; }
  .js-reveal-on-scroll.js-reveal-on-scroll--delay-5 {
    transition-delay: 500ms; }
  .js-reveal-on-scroll.js-reveal-on-scroll--delay-6 {
    transition-delay: 600ms; }

.js-window-sizer {
  inset: 0;
  opacity: 0;
  position: fixed;
  pointer-events: none; }

.swiper {
  position: relative;
  width: 100%; }
  .swiper-wrapper {
    display: flex;
    position: relative;
    transition-timing-function: var(--transition-timing-function);
    width: 100%; }
  .swiper-slide {
    display: flex;
    flex-shrink: 0; }
  .swiper-notification {
    display: none; }

/*# sourceMappingURL=main.css.map */
