/* ============================================================
   Developer Office — cantor8.io-style rebuild
   Design system: cobalt #044ab3 / #151515 / #fff, 1vw em scaling
   ============================================================ */

/* ---------- Fonts ---------- */
@font-face {
  font-family: "Neue Grotesk";           /* PP Neue Montreal substitute */
  src: url("../fonts/instrument-sans-vf.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Fragment Mono";
  src: url("../fonts/fragment-mono-400.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

/* ---------- Root / base ---------- */
:root {
  --blue: #044ab3;
  --white: #fff;
  --black: #151515;
  --accent: #6fe3ff;
  --font-sans: "Neue Grotesk", "Helvetica Neue", Tahoma, sans-serif;
  --font-mono: "Fragment Mono", monospace;
  --ease-out-quint: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
  --float-ease: cubic-bezier(0.33, 1, 0.68, 1);
  --float-dur: 0.35s;
  --gutter: 1.75rem;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; overflow-x: clip; }
body {
  background-color: var(--blue);
  color: var(--white);
  font-family: var(--font-sans);
  font-size: 1vw;
  font-weight: 400;
  line-height: 1;
  letter-spacing: -0.01em;
  -webkit-font-smoothing: antialiased;
  overflow-x: clip;
}
::-webkit-scrollbar { width: 0; height: 0; }
::selection { background: #fff; color: #0066cc; }
img, svg, video { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
ul, ol { list-style: none; }
button, input, textarea { font: inherit; color: inherit; background: none; border: none; }
.mono, .tag_txt, .caption, .tagline_product, .name_desc, .title_cap, .text_cap, .news_tag {
  font-family: var(--font-mono);
  text-transform: uppercase;
  font-weight: 400;
}

/* ---------- Header ---------- */
.header {
  position: fixed;
  inset: 0 0 auto;
  z-index: 99;
}
.wrapper_header { padding: 0.875em var(--gutter); }
.flexbox_header {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
}
.logotype {
  display: flex;
  align-items: center;
  gap: 0.55em;
  height: 2em;
}
.logotype img { height: 1.6em; width: auto; }
.logotype .logo_word {
  font-weight: 600;
  font-size: 1.05em;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  font-family: var(--font-mono);
  white-space: nowrap;
}
.menu, .right_menu {
  display: flex;
  align-items: center;
  gap: 0.25em;
  padding: 0.25em;
  border-radius: 0.25em;
  background-color: #00000047;
  -webkit-backdrop-filter: blur(7px);
  backdrop-filter: blur(7px);
  transition: background-color 420ms var(--ease-out-quint);
}
.menu { justify-self: center; }
.right_menu { justify-self: end; padding: 0.25em 0.375em 0.25em 0.25em; }
.link_header {
  color: var(--white);
  padding: 0.75em 1.125em;
  font-size: 0.84em;
  font-weight: 500;
  line-height: 1;
  border-radius: 0.18em;
  transition: opacity 320ms var(--ease-out-quint);
  white-space: nowrap;
}
.link_header.w--current { background-color: var(--white); color: var(--blue); }
.menu:hover .link_header:not(:hover):not(.w--current),
.right_menu:hover .link_header:not(:hover):not(.w--current):not(.button_primary) { opacity: 0.65; }
.header.is-light-section .menu,
.header.is-light-section .right_menu { background-color: var(--blue); }
.header .logotype { transition: opacity 280ms var(--ease-out-quint); }
.logo_dark { display: none; }
.header.is-light-section .logo_light { display: none; }
.header.is-light-section .logo_dark { display: block; }
.header .logo_word { transition: color 280ms var(--ease-out-quint); }
.header.is-light-section .logo_word { color: var(--blue); }

/* header CTA (button_primary inside right_menu) */
.button_primary {
  display: flex;
  align-items: center;
  background-color: var(--white);
  color: var(--blue);
  letter-spacing: -0.02em;
  border-radius: 0.1875em;
  padding: 0.25em 0.25em 0.25em 0.75em;
  font-size: 0.82em;
  font-weight: 500;
}
.flex_button { display: flex; align-items: center; gap: 1.125em; }
.icon_arrow {
  aspect-ratio: 1;
  width: 1.875em;
  background-color: var(--blue);
  border-radius: 0.1875em;
  padding: 0.5em;
  position: relative;
  overflow: hidden;
}

/* hamburger (mobile) */
.hamburger_link { display: none; align-items: center; gap: 10px; cursor: pointer; font-size: 14px; font-weight: 500; }
.hamburger { display: grid; grid-template-columns: repeat(2, 8px); grid-gap: 4px; }
.cube_hamb { width: 8px; height: 8px; background: var(--white); border-radius: 0.5px; }
.hamburger_link .close_txt { display: none; }
.hamburger_link .open_txt { display: block; }
.hamburger_link.is-open .close_txt { display: block; }
.hamburger_link.is-open .open_txt { display: none; }

/* ---------- Buttons ---------- */
.button {
  display: inline-flex;
  background-color: var(--white);
  color: var(--blue);
  letter-spacing: 0;
  border-radius: 0.1875em;
  padding: 0.25em 0.25em 0.25em 1em;
  font-size: 0.95em;
  font-weight: 500;
  cursor: pointer;
}
.button.blue { background-color: var(--blue); color: var(--white); font-size: 0.9em; }
.flex_button_general { display: flex; align-items: center; gap: 4.5em; }
.arrow_button {
  position: relative;
  width: 2.375em;
  height: 2.375em;
  background-color: var(--blue);
  border-radius: 0.1875em;
  overflow: hidden;
}
.button.blue .arrow_button { background-color: var(--white); }

/* arrow swap hover mechanic */
.arrow_button .arrow_icon,
.arrow_button::after,
.icon_arrow .arrow_icon,
.icon_arrow::after,
.product_arrow .arrow_icon,
.product_arrow::after {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 45%;
  height: 45%;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  transform: translate(-50%, -50%) scale(1);
  opacity: 1;
  z-index: 2;
  transition: transform 620ms var(--ease-out-quint), opacity 620ms var(--ease-out-quint);
}
.arrow_button::after, .icon_arrow::after, .product_arrow::after {
  content: "";
  transform: translate(calc(-50% - 24px), calc(-50% + 24px)) scale(0.85);
  opacity: 0;
  z-index: 1;
}
.arrow_icon, .arrow_button::after, .icon_arrow::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3 13 13 3M5 3h8v8' stroke='white' stroke-width='1.8' stroke-linecap='square'/%3E%3C/svg%3E");
}
.button:not(.blue) .arrow_icon, .button:not(.blue) .arrow_button::after,
.icon_arrow .arrow_icon, .icon_arrow::after,
.tag_link .arrow_icon, .tag_link .product_arrow::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3 13 13 3M5 3h8v8' stroke='white' stroke-width='1.8' stroke-linecap='square'/%3E%3C/svg%3E");
}
.tag_link .product_arrow .arrow_icon, .tag_link .product_arrow::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3 13 13 3M5 3h8v8' stroke='%23044ab3' stroke-width='1.8' stroke-linecap='square'/%3E%3C/svg%3E");
}

@media (min-width: 992px) and (hover: hover) and (pointer: fine) {
  a:hover .arrow_button .arrow_icon,
  .button:hover .arrow_button .arrow_icon,
  .button_primary:hover .icon_arrow .arrow_icon,
  .tag_link:hover .product_arrow .arrow_icon {
    transform: translate(calc(-50% + 24px), calc(-50% - 24px)) scale(0.85);
    opacity: 0;
  }
  a:hover .arrow_button::after,
  .button:hover .arrow_button::after,
  .button_primary:hover .icon_arrow::after,
  .tag_link:hover .product_arrow::after {
    transform: translate(-50%, -50%) scale(1);
    opacity: 1;
  }
}

/* line reveal (text roll-up) */
@media (min-width: 992px) and (hover: hover) and (pointer: fine) {
  [data-line-reveal] > div,
  .button .flex_button_general > div:first-child,
  .button_primary .flex_button > div:first-child,
  .subscribe_button > div {
    position: relative;
    display: block;
    overflow: hidden;
    height: 1.25em;
    line-height: 1.25em;
  }
  .line-inner {
    position: relative;
    display: block;
    transform: translateY(0%);
    transition: transform 950ms var(--ease-out-expo);
    will-change: transform;
  }
  .line-inner::after {
    content: attr(data-text);
    position: absolute;
    left: 0;
    top: 100%;
    white-space: nowrap;
  }
  [data-line-reveal]:hover .line-inner,
  .button:hover .line-inner,
  .button_primary:hover .line-inner,
  .subscribe_button:hover .line-inner { transform: translateY(-100%); }
}

/* ---------- Generic wrappers ---------- */
.wrapper_general { padding: 13.25em var(--gutter); position: relative; }
.wrapper_gen { padding: 12em var(--gutter) 4em; position: relative; }
section { position: relative; }
.section_light { background: var(--white); color: var(--blue); }
.section_black { background: var(--black); color: var(--white); }

/* eyebrow */
.tag_txt {
  display: flex;
  align-items: center;
  gap: 1em;
  font-size: 0.75em;
  letter-spacing: -0.02em;
}
.cube_tag {
  width: 0.375em;
  height: 0.375em;
  background: currentColor;
  border-radius: 1px;
  animation: cubeTagFlickerSmooth 1.2s ease-in-out infinite;
}
@keyframes cubeTagFlickerSmooth {
  0% { opacity: 1; filter: brightness(1); }
  25% { opacity: 0.52; filter: brightness(1.08); }
  50% { opacity: 0.25; filter: brightness(1.16); }
  75% { opacity: 0.9; filter: brightness(1.06); }
  100% { opacity: 1; filter: brightness(1); }
}

/* ---------- Hero ---------- */
.hero { position: relative; min-height: 100vh; }
.wrapper_hero {
  position: relative;
  z-index: 2;
  min-height: 100vh;
  padding: 8.5rem var(--gutter) 2.5em;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}
.flexbox_hero {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
}
.h1 { font-size: 3.9em; font-weight: 400; line-height: 1; }
.h1.bigger { font-size: 5em; }
.hero_headline { margin-bottom: 0.6em; }
.button_wrap { display: flex; }
.caption { font-size: 0.82em; letter-spacing: -0.02em; opacity: 0.65; }
.background_webgl {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
}
.strings-viewport {
  width: 100%;
  height: 100vh;
  min-height: 560px;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #044ab3;
  --strings-scale: clamp(0.72, 0.62 + 0.45vw, 0.9);
}
#strings-wrap {
  width: calc(100% / var(--strings-scale));
  height: calc(100vh / var(--strings-scale));
  transform: scale(var(--strings-scale));
  transform-origin: center center;
  flex: none;
}
#strings-canvas { display: block; width: 100%; height: 100%; }
.overlay_hero {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 7rem;
  background: linear-gradient(#044ab300, #044ab3);
  z-index: 1;
  pointer-events: none;
}

/* ---------- Headings ---------- */
.h2 { font-size: 5em; font-weight: 400; line-height: 1; }
.h2.small { font-size: 4.5em; text-align: center; }
.h2.smallest { font-size: 2.875em; }
.h2.blue { color: var(--blue); font-size: 4.5em; font-weight: 500; line-height: 0.9; max-width: 15ch; }
.h2.products_heading { font-size: 6em; }
.h2.small_heading { font-size: 2em; }
.md_txt { font-size: 2.3em; line-height: 1.15; }
.txt_title { font-size: 2.8em; line-height: 1.1; }
.p_gen { font-size: 0.9em; font-weight: 500; line-height: 1.3; letter-spacing: -0.005em; }
.p_gen.smaller { opacity: 0.65; }
.p_gen.blue { color: var(--blue); }
.text_desc { font-size: 0.9em; line-height: 1.3; }
.p_ch { max-width: 40ch; }
.middle_p { max-width: 47ch; }
.number_count { font-size: 4.5em; font-weight: 500; color: var(--blue); }

/* ---------- Shrimp flow (Foundation bg line) ---------- */
.built_for .wrapper_general { position: relative; }
.built_for .box_heading,
.built_for .execution_box,
.built_for .partners { position: relative; z-index: 2; }
.shrimp-flow {
  position: absolute;
  inset: 12em 0 auto 0;
  height: 64em;
  z-index: 1;
  pointer-events: none;
}
.shrimp-svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.shrimp-pulse {
  fill: none;
  stroke: #fff;
  stroke-width: 1.5;
  vector-effect: non-scaling-stroke;
  stroke-linecap: round;
  mix-blend-mode: screen;
}
#shrimpPulseMain { stroke-opacity: 0.9; stroke-dasharray: 120 880; stroke-dashoffset: 1000; }
#shrimpPulseSub { stroke-opacity: 0.55; stroke-dasharray: 90 910; stroke-dashoffset: 1040; }

/* ---------- Foundation section (flow lines bg) ---------- */
.foundation { position: relative; overflow: hidden; }
.foundation .content_col { max-width: 40ch; margin-left: 52%; margin-top: 17em; position: relative; z-index: 2; }
.foundation .content_col .txt_title { max-width: 18ch; }
.foundation .content_col .p_gen { margin: 1.6em 0 2.4em; }
.flow_svg {
  position: absolute;
  inset: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  pointer-events: none;
}
.flow_svg path {
  fill: none;
  stroke: #fff;
  stroke-opacity: 0.35;
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
  stroke-linecap: round;
}
.flow_svg .flow_pulse {
  stroke: #fff;
  stroke-opacity: 1;
  stroke-width: 1.5;
  stroke-dasharray: 120 880;
  mix-blend-mode: screen;
}

/* ---------- Products (pinned horizontal scroll, black) ---------- */
.products { background: var(--black); color: var(--white); }
.products_intro {
  position: absolute;
  inset: 0 0 auto 0;
  z-index: 3;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding: 6.5em var(--gutter) 0;
  gap: 4em;
  pointer-events: none;
}
.products_intro a { pointer-events: auto; }
.products_intro .side { max-width: 34ch; display: flex; flex-direction: column; gap: 2em; align-items: flex-start; }
.products_wrapper { position: relative; min-height: 420vh; }
.cms_products {
  position: sticky;
  top: 0;
  height: 100vh;
  display: flex;
  align-items: center;
  overflow: hidden;
}
.products_list {
  display: flex;
  align-items: center;
  gap: 62px;
  width: max-content;
  padding-left: clamp(120px, 10vw, 320px);
  will-change: transform;
}
.product_item { flex: 0 0 36em; transform-origin: left center; will-change: transform; }
@media (min-width: 992px) {
  .product_item { flex-basis: clamp(240px, 20vw, 340px); }
  .cms_products .products_list { height: 100%; }
}
.product_card {
  position: relative;
  background: var(--blue);
  color: var(--white);
  border-radius: 0.375em;
  overflow: hidden;
  display: block;
}
.product_visual {
  width: 100%;
  aspect-ratio: 1 / 1;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2.4em 1.6em 0;
}
@media (max-width: 991px) { .product_visual { aspect-ratio: auto; height: 21.5em; } }
.product_visual img, .product_visual svg { width: 100%; height: 100%; object-fit: contain; }
.about_product {
  padding: 0.5em 1.25em 1.25em;
  margin-top: 1.5em;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.product_title { font-size: 1.3em; font-weight: 400; max-width: 21ch; }
.product_desc { font-size: 1vw; line-height: 1.5; max-width: 38ch; opacity: 0.9; }
.tag_link {
  position: absolute;
  inset: 0 0 auto 0;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding: 0.5em 0.5em 1em 1.25em;
  z-index: 2;
}
.tagline_product {
  font-size: 0.6em;
  letter-spacing: 0.01em;
  background: #ffffff26;
  border-radius: 0.1875em;
  padding: 0.55em 0.8em;
  margin-top: 0.8em;
}
.product_arrow {
  position: relative;
  width: 2.25em;
  height: 2.25em;
  background: var(--white);
  border-radius: 3px;
  overflow: hidden;
}

/* ---------- Statement / execution ---------- */
.execution_box { padding: 17em var(--gutter); position: relative; z-index: 2; }
.execution_box .md_txt { max-width: 30ch; }

/* ---------- Feature (photo + heading, black) ---------- */
.feature { background: var(--black); color: var(--white); }
.feature_grid {
  display: grid;
  grid-template-columns: 1.25fr 1fr;
  gap: 2em;
  padding: 8em var(--gutter);
  align-items: stretch;
}
.feature_photo { border-radius: 0.25em; overflow: hidden; }
.feature_photo img { width: 100%; height: 100%; object-fit: cover; }
.feature_side { display: flex; flex-direction: column; justify-content: space-between; padding: 1em 0; }
.feature_side .h2 { font-size: 2.875em; line-height: 1.08; max-width: 16ch; }
.feature_side .bottom { display: flex; flex-direction: column; gap: 2em; align-items: flex-start; }
.feature_side .p_gen { max-width: 42ch; }

/* ---------- Capabilities (blue, flow lines + entries) ---------- */
.capabilities { position: relative; overflow: hidden; }
.capability_row { position: relative; z-index: 2; padding: 10em var(--gutter); }
.capability_row .inner { max-width: 44ch; }
.capability_row.right .inner { margin-left: 55%; }
.capability_row.center .inner { margin-left: 20%; }
.capability_title { display: flex; align-items: flex-start; gap: 0.5em; font-size: 2.8em; font-weight: 400; line-height: 1.1; }
.capability_title .cube { width: 0.16em; height: 0.16em; background: #fff; margin-top: 0.28em; border-radius: 1px; }
.capability_row .p_gen { margin-top: 1.4em; opacity: 0.9; max-width: 46ch; }

/* ---------- Partners (light) ---------- */
.partners_home { background: var(--white); color: var(--blue); }
.partners_home .wrapper_general { padding-bottom: 6em; }
.partners_head { text-align: center; max-width: 60ch; margin: 0 auto 8em; display: flex; flex-direction: column; gap: 2.4em; align-items: center; }
.partners_head .p_gen { max-width: 58ch; opacity: 0.9; }
.grid_partners {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  grid-auto-rows: minmax(88px, auto);
  gap: 1em;
}
.partner_item { min-height: 8em; }
.partner_tile {
  width: 100%;
  height: 100%;
  min-height: 8em;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #f1f1f126;
  border-radius: 4px;
  transition: all 0.4s;
  font-weight: 500;
  font-size: 1.35em;
  letter-spacing: 0.01em;
  color: var(--white);
  text-align: center;
  padding: 0 1em;
}
.partner_item:hover .partner_tile { background: #f1f1f112; }

/* ---------- Newsroom (light) ---------- */
.newsroom { background: var(--white); color: var(--blue); }
.newsroom .wrapper_general { padding-top: 8em; }
.newsroom_head { margin-bottom: 1.5em; }
.grid_news { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.article_item { border-radius: 0.25em; }
.article_link {
  display: flex;
  flex-direction: column;
  gap: 1em;
  background: #044ab314;
  border-radius: 0.25em;
  padding: 1em 1em 1.45em;
  transition: all 0.45s;
  height: 100%;
}
.article_link:hover { background: #044ab326; }
.image_article { border-radius: 0.25em; overflow: hidden; height: 23em; }
.image_article img { width: 100%; height: 100%; object-fit: cover; }
.article_meta { display: flex; gap: 0.5em; }
.news_tag {
  font-family: var(--font-sans);
  text-transform: none;
  font-size: 0.78em;
  font-weight: 500;
  background: #044ab31a;
  border-radius: 0.1875em;
  padding: 0.55em 0.8em;
}
.article_title { font-size: 1.4em; font-weight: 500; line-height: 1.3; }

/* ---------- CTA (light, drawn lines) ---------- */
.cta_box { position: relative; background: var(--white); color: var(--blue); height: 125vh; overflow: hidden; }
.wrapper_cta {
  position: relative;
  z-index: 2;
  padding: 6.5em var(--gutter) 4em;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.cta-lines-svg { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 1; pointer-events: none; }
.cta-lines-svg path { fill: none; stroke: #044ab3; stroke-opacity: 0.35; stroke-width: 1; vector-effect: non-scaling-stroke; }
.cta-lines-svg .cta-pulse-path { stroke: #044ab3; stroke-opacity: 1; stroke-width: 1.5; }
.cta-cap { font-family: var(--font-mono); font-size: 13px; letter-spacing: 0.08em; fill: #044ab3; text-transform: uppercase; opacity: 0; }
.cta_bottom { display: flex; justify-content: space-between; align-items: flex-end; }
.cta_bottom .p_gen { max-width: 34ch; }

/* ---------- Footer (black) ---------- */
.footer { background: var(--black); color: var(--white); }
.wrapper_footer { padding: 4.5em var(--gutter) 1.5em; }
.footer_top { display: flex; justify-content: space-between; gap: 4em; }
.subscribe_newsletter { width: 35%; display: flex; flex-direction: column; gap: 1.6em; }
.title_subscribe { font-size: 2em; line-height: 0.9; font-weight: 400; }
.subscribe_form { display: flex; gap: 0.5em; }
.input_field {
  flex: 1;
  height: 3.12em;
  background: transparent;
  border: 1px solid #ffffff40;
  border-radius: 0.25em;
  padding: 0.5em 1em;
  font-size: 0.85em;
  font-weight: 500;
  color: #fff;
  outline: none;
  transition: all 0.4s;
}
.input_field::placeholder { color: #ffffffa6; }
.input_field:hover, .input_field:focus { border-color: #ffffffa6; }
.subscribe_button {
  background: var(--blue);
  color: #fff;
  border-radius: 0.25em;
  height: 3.12em;
  padding: 0.75em 2.5em;
  font-size: 0.85em;
  font-weight: 500;
  cursor: pointer;
  transition: background-color 0.4s;
}
.subscribe_button:hover { background: #033a8c; }
.menu_grid {
  width: 50%;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6em 5em;
}
.menu_col { display: flex; flex-direction: column; gap: 0.9em; }
.title_menu { font-size: 0.9em; font-weight: 500; opacity: 0.65; margin-bottom: 0.4em; }
.footer_link { font-size: 0.9em; line-height: 1.3; transition: color 0.4s; width: fit-content; }
.footer_link:hover { color: #ffffffa6; }
.last_line {
  margin-top: 20em;
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 2em;
}
.footer_logo { display: flex; align-items: center; gap: 0.7em; }
.footer_logo img { height: 3.2em; width: auto; }
.footer_logo .logo_word { font-family: var(--font-mono); text-transform: uppercase; font-weight: 600; font-size: 2.4em; letter-spacing: 0.02em; }
.legal_row { display: flex; flex-direction: column; gap: 0.55em; }
.all_rights, .footer_last_link { font-size: 0.9em; font-weight: 500; opacity: 0.45; }
.footer_last_link:hover { opacity: 0.75; }

/* ---------- Pixel transition ---------- */
.pixel-transition {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  z-index: 2;
  pointer-events: none;
  overflow: hidden;
  background: var(--px-from, #044ab3);
  transform: translateZ(0);
  backface-visibility: hidden;
}
.pixel-grid {
  position: relative;
  display: grid;
  justify-content: start;
  margin: 0;
  gap: 0 !important;
  line-height: 0;
  font-size: 0;
  transform: none !important;
  background: var(--px-from, #044ab3);
}
.pixel {
  display: block;
  margin: 0 -1px -1px 0;
  width: calc(100% + 1px);
  height: calc(100% + 1px);
  position: relative;
  box-sizing: border-box;
  border: none !important;
  outline: none !important;
  box-shadow: none !important;
  background-clip: border-box;
}
.pixel-transition.is-solid,
.pixel-transition.is-solid .pixel-grid { background: var(--px-solid, #fff) !important; }
.pixel-transition.is-solid .pixel { background: var(--px-solid, #fff) !important; }

/* ---------- Contact page ---------- */
.wrapper_contact { padding: 12em var(--gutter) 11em; min-height: 100vh; position: relative; z-index: 2; }
.contact_grid { display: grid; grid-template-columns: 1fr 1fr; gap: 4em; margin-top: 10em; }
.title_get { font-size: 1.45em; font-weight: 500; }
.contact_left { display: flex; flex-direction: column; gap: 8em; }
.contact_left .block { display: flex; flex-direction: column; gap: 0.9em; }
.contact_left .p_gen { opacity: 0.9; max-width: 40ch; }
.form_grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.625em 1em; }
.form_grid .full { grid-column: 1 / -1; }
.chip_row { display: flex; flex-wrap: wrap; gap: 0.5em; margin: 1em 0 3em; }
.checkbox_form {
  position: relative;
  background: #00000047;
  border-radius: 0.25em;
  min-height: 3.8em;
  padding: 1.1em 2.3em;
  font-size: 0.82em;
  font-weight: 500;
  display: flex;
  align-items: center;
  cursor: pointer;
  transition: all 0.4s ease;
}
.checkbox_form input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.checkbox_form:has(input:checked) { background: var(--white); color: var(--blue); }
.form_field_wrap { position: relative; }
.floating_input {
  width: 100%;
  min-height: 4em;
  color: #fff;
  caret-color: #fff;
  background-color: rgba(0, 0, 0, 0.22);
  border: 0.0625em solid transparent;
  border-radius: 0.25em;
  padding: 1.55em 1.25em 0.6em;
  font-size: 0.82em;
  font-weight: 500;
  outline: none;
  transition: background-color var(--float-dur) var(--float-ease), border-color var(--float-dur) var(--float-ease);
}
.form_field_wrap:focus-within .floating_input { background-color: transparent; border-color: #fff; }
.floating_label {
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  padding-left: 1.55em;
  font-size: 0.82em;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.92);
  pointer-events: none;
  transform-origin: left top;
  transition: transform var(--float-dur) var(--float-ease), font-size var(--float-dur) var(--float-ease), top var(--float-dur) var(--float-ease);
}
.form_field_wrap:focus-within .floating_label,
.form_field_wrap.has-value .floating_label {
  top: 0.9em;
  transform: translate3d(0, -3px, 0) scale(0.75);
}
.areabox { min-height: 12rem; resize: none; padding-top: 2.2em; }
.form_field_wrap:has(.areabox) .floating_label { top: 2.2em; transform: none; }
.form_field_wrap:has(.areabox):focus-within .floating_label,
.form_field_wrap.has-value:has(.areabox) .floating_label { top: 0.9em; transform: translate3d(0, -3px, 0) scale(0.75); }
.submit_button {
  background: var(--white);
  color: var(--blue);
  border-radius: 4px;
  width: 50%;
  min-height: 3.3rem;
  font-size: 0.92em;
  font-weight: 500;
  cursor: pointer;
  margin-top: 1.5em;
  transition: opacity 0.4s;
}
.submit_button:hover { opacity: 0.85; }
.form_title_row { display: flex; align-items: center; gap: 0.6em; margin-bottom: 1.4em; }
.form_title_row .cube { width: 0.35em; height: 0.35em; background: currentColor; border-radius: 1px; margin-top: -0.8em; }
.form_section_title { font-size: 1.45em; font-weight: 500; }

/* ---------- Contact line pulses ---------- */
.contact-line-pulse {
  stroke-dasharray: 0.04 0.96;
  stroke-dashoffset: 0;
  stroke-linecap: round;
  animation: contact-line-pulse 3.2s linear infinite;
}
.contact-line-pulse--2 { animation-duration: 3.8s; animation-delay: 1.1s; }
@keyframes contact-line-pulse { to { stroke-dashoffset: -1; } }

/* ---------- Company page ---------- */
.company_hero { display: grid; grid-template-columns: 1fr 1fr; gap: 3em; padding: 12em var(--gutter) 10em; position: relative; z-index: 2; }
.company_hero .h1 { font-size: 3.9em; }
.company_hero .lead { font-size: 1.7em; line-height: 1.25; max-width: 26ch; }
.about_block { display: grid; grid-template-columns: 1fr 1fr; gap: 3em; padding: 8em var(--gutter); position: relative; z-index: 2; }
.about_block .h2 { font-size: 2.6em; line-height: 1.1; }
.about_block .col { display: flex; flex-direction: column; gap: 1.4em; }
.about_block .p_gen { opacity: 0.92; max-width: 46ch; }
.black_cards { background: var(--black); color: var(--white); }
.black_cards .wrapper_general { display: grid; grid-template-columns: 1fr 1.1fr; gap: 3em; }
.black_cards .sticky_col { position: sticky; top: 8em; align-self: start; display: flex; flex-direction: column; gap: 8em; }
.black_cards .h2 { font-size: 3.4em; line-height: 1.08; }
.op_card {
  background: var(--blue);
  border-radius: 0.375em;
  padding: 1.25em;
  min-height: 26em;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  margin-bottom: 1em;
}
.op_card .card_head { display: flex; justify-content: space-between; align-items: flex-start; gap: 2em; }
.op_card .card_title { font-size: 2.2em; line-height: 1.1; font-weight: 400; max-width: 14ch; }
.tag_white {
  background: var(--white);
  color: var(--blue);
  font-size: 0.78em;
  font-weight: 500;
  border-radius: 0.1875em;
  padding: 0.55em 0.9em;
}
.op_card .p_gen { max-width: 44ch; opacity: 0.95; }
.stats_row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1em; padding: 8em var(--gutter); position: relative; z-index: 2; }
.stat_box { display: flex; flex-direction: column; gap: 0.8em; }
.stat_box .p_gen { opacity: 0.75; }

/* ---------- Mobile menu ---------- */
.mobile_menu {
  position: fixed;
  inset: 0;
  z-index: 98;
  width: 100vw;
  height: 100dvh;
  background: #fff;
  color: var(--blue);
  transform: translateX(100%) scale(0.78);
  overflow-y: auto;
}
.wrapper_mobile_menu {
  min-height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 22em 1rem 8em;
}
.menu_links { display: flex; flex-direction: column; gap: 1.2em; }
.mobile_link {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: clamp(28px, 9vw, 44px);
  font-weight: 500;
  color: var(--blue);
  transition: padding-left 0.25s ease;
}
.cube_active {
  width: 8px;
  height: 8px;
  background: var(--blue);
  border-radius: 1px;
  opacity: 0;
  transform: scale(0.7);
  transition: opacity 0.25s ease, transform 0.25s ease;
}
.mobile_link.w--current .cube_active { opacity: 1; transform: scale(1); }
.bottom_side { display: flex; flex-direction: column; gap: 6em; margin-top: 10em; }
.box_sub { display: flex; flex-direction: column; gap: 1.6em; }
.splitter_mobile {
  height: 1px;
  background: linear-gradient(90deg, #044ab300, var(--blue) 50%, #044ab300);
}
.title_side { font-size: clamp(13px, 3.6vw, 17px); opacity: 0.65; color: var(--blue); }
.sub_links { display: flex; flex-direction: column; gap: 1em; }
.sub_link { font-size: clamp(17px, 4.6vw, 22px); font-weight: 500; color: var(--blue); }
.bottom_side { margin-top: 4em; }

.logo_img { height: 1.7em; width: auto; }
.partner_tile { will-change: transform; }
@media (min-width: 992px) and (hover: hover) and (pointer: fine) {
  .partner_tile { transition: background-color 0.4s, transform 0.5s cubic-bezier(0.25, 0.1, 0.25, 1); }
  .partner_item:hover .partner_tile { transform: scale(1.07); }
}
.heading_cutting { position: relative; z-index: 2; }

/* ---------- 404 / misc ---------- */
.page_404 { min-height: 100vh; display: flex; align-items: center; padding: 0 var(--gutter); }
._404_title { font-size: 3em; }

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}

/* ---------- Responsive ---------- */
@media (max-width: 991px) {
  :root { --gutter: 1.25rem; }
  .header { background: var(--blue); }
  .menu, .right_menu { display: none; }
  .hamburger_link { display: flex; justify-self: end; }
  .flexbox_header { grid-template-columns: 1fr auto; }
  .wrapper_header { padding: 14px var(--gutter); }
  .logo_img { height: 22px; }
  .logo_word { font-size: 12px; }
  .h1 { font-size: 5.6em; }
  .h1.bigger { font-size: 6em; }
  .h2 { font-size: 6.3em; }
  .h2.blue { font-size: 5.3em; }
  .h2.products_heading { font-size: 7.6em; }
  .md_txt { font-size: 3.5em; }
  .p_gen { font-size: 1.45em; }
  .text_desc { font-size: 1.3em; }
  .button { font-size: 1.5em; }
  .button_primary { font-size: 1.3em; }
  .link_header { font-size: 1.3em; }
  .tag_txt { font-size: 1.35em; }
  .caption { font-size: 1.25em; }
  .tagline_product { font-size: 1.2em; }
  .article_title { font-size: 2em; }
  .news_tag { font-size: 1.4em; }
  .footer_link, .title_menu, .all_rights, .footer_last_link { font-size: 1.5em; }
  .title_subscribe { font-size: 3em; }
  .input_field, .subscribe_button { font-size: 1.3em; }
  .products_list { gap: 24px; }
  .product_item { flex-basis: 30em; }
  .product_desc { font-size: 1.3em; }
  .product_title { font-size: 2em; }
  .feature_grid, .about_block, .company_hero, .contact_grid { grid-template-columns: 1fr; }
  .black_cards .wrapper_general { grid-template-columns: 1fr; }
  .black_cards .sticky_col { position: static; }
  .menu_grid { gap: 4em 3em; }
  .grid_news { grid-template-columns: repeat(3, 1fr); gap: 8px; }
  .stats_row { grid-template-columns: repeat(2, 1fr); gap: 3em 1em; }
  .foundation .content_col { margin-left: 10%; }
  .capability_row.right .inner, .capability_row.center .inner { margin-left: 8%; }
  .submit_button { width: 100%; }
}
@media (max-width: 767px) {
  :root { --gutter: 1rem; }
  .wrapper_general { padding: 92px var(--gutter); }
  .h1.bigger { font-size: 7em; }
  .h2.blue { font-size: 6em; }
  .md_txt { font-size: 4em; }
  .p_gen { font-size: 1.9em; }
  .text_desc { font-size: 1.7em; }
  .button { font-size: 1.85em; }
  .article_title { font-size: 2.3em; }
  .grid_news { grid-template-columns: 1fr; }
  .grid_partners { grid-template-columns: repeat(3, 1fr); }
  .products_list { flex-direction: column; width: auto; padding: 0 var(--gutter); }
  .products_wrapper { min-height: 0; }
  .cms_products { position: static; height: auto; overflow: visible; }
  .product_item { flex-basis: auto; }
  .footer_top { flex-direction: column; }
  .subscribe_newsletter, .menu_grid { width: 100%; }
  .cta_box { height: 90vh; }
  .footer_link, .title_menu { font-size: 1.95em; }
  .title_subscribe { font-size: 4.5em; }
}
@media (max-width: 479px) {
  .h1 { font-size: 8.4em; }
  .h1.bigger { font-size: 11em; }
  .h2 { font-size: 8.5em; }
  .h2.blue { font-size: 8.7em; }
  .md_txt { font-size: 7em; }
  .p_gen { font-size: 3.7em; }
  .text_desc { font-size: 3.4em; }
  .button { font-size: 3.6em; width: 100%; justify-content: space-between; }
  .wrapper_general { padding: 15em 1rem; }
  .wrapper_hero { padding: 25em 1rem 10em; min-height: 100svh; }
  .caption { display: none; }
  .tag_txt { font-size: 3em; }
  .tagline_product { font-size: 2.8em; }
  .article_title { font-size: 4.2em; }
  .news_tag { font-size: 3.2em; }
  .grid_partners { grid-template-columns: repeat(2, 1fr); }
  .title_subscribe { font-size: 7em; }
  .input_field, .subscribe_button { font-size: 3.5em; }
  .footer_link, .title_menu { font-size: 3.8em; }
  .all_rights, .footer_last_link { font-size: 3.4em; }
  .stats_row { grid-template-columns: 1fr; }
  .number_count { font-size: 8em; }
  .product_title { font-size: 4em; }
  .product_desc { font-size: 3em; }
  .article_meta .news_tag { font-size: 3.2em; }
  ._404_title { font-size: 4.2em; }
}
