/* ==========================================================================
   Tailwind CSS Utilities — production build (compiled via Tailwind CLI)
   ========================================================================== */

*,
:after,
:before {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x: ;
  --tw-pan-y: ;
  --tw-pinch-zoom: ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position: ;
  --tw-gradient-via-position: ;
  --tw-gradient-to-position: ;
  --tw-ordinal: ;
  --tw-slashed-zero: ;
  --tw-numeric-figure: ;
  --tw-numeric-spacing: ;
  --tw-numeric-fraction: ;
  --tw-ring-inset: ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgba(59, 130, 246, 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur: ;
  --tw-brightness: ;
  --tw-contrast: ;
  --tw-grayscale: ;
  --tw-hue-rotate: ;
  --tw-invert: ;
  --tw-saturate: ;
  --tw-sepia: ;
  --tw-drop-shadow: ;
  --tw-backdrop-blur: ;
  --tw-backdrop-brightness: ;
  --tw-backdrop-contrast: ;
  --tw-backdrop-grayscale: ;
  --tw-backdrop-hue-rotate: ;
  --tw-backdrop-invert: ;
  --tw-backdrop-opacity: ;
  --tw-backdrop-saturate: ;
  --tw-backdrop-sepia: ;
  --tw-contain-size: ;
  --tw-contain-layout: ;
  --tw-contain-paint: ;
  --tw-contain-style: ;
}
::backdrop {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x: ;
  --tw-pan-y: ;
  --tw-pinch-zoom: ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position: ;
  --tw-gradient-via-position: ;
  --tw-gradient-to-position: ;
  --tw-ordinal: ;
  --tw-slashed-zero: ;
  --tw-numeric-figure: ;
  --tw-numeric-spacing: ;
  --tw-numeric-fraction: ;
  --tw-ring-inset: ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgba(59, 130, 246, 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur: ;
  --tw-brightness: ;
  --tw-contrast: ;
  --tw-grayscale: ;
  --tw-hue-rotate: ;
  --tw-invert: ;
  --tw-saturate: ;
  --tw-sepia: ;
  --tw-drop-shadow: ;
  --tw-backdrop-blur: ;
  --tw-backdrop-brightness: ;
  --tw-backdrop-contrast: ;
  --tw-backdrop-grayscale: ;
  --tw-backdrop-hue-rotate: ;
  --tw-backdrop-invert: ;
  --tw-backdrop-opacity: ;
  --tw-backdrop-saturate: ;
  --tw-backdrop-sepia: ;
  --tw-contain-size: ;
  --tw-contain-layout: ;
  --tw-contain-paint: ;
  --tw-contain-style: ;
} /*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/
*,
:after,
:before {
  box-sizing: border-box;
  border: 0 solid #e5e7eb;
}
:after,
:before {
  --tw-content: "";
}
:host,
html {
  line-height: 1.5;
  -webkit-text-size-adjust: 100%;
  -moz-tab-size: 4;
  -o-tab-size: 4;
  tab-size: 4;
  font-family:
    "Plus Jakarta Sans", Arial, sans-serif;
  font-feature-settings: normal;
  font-variation-settings: normal;
  -webkit-tap-highlight-color: transparent;
}
body {
  margin: 0;
  line-height: inherit;
}
hr {
  height: 0;
  color: inherit;
  border-top-width: 1px;
}
abbr:where([title]) {
  -webkit-text-decoration: underline dotted;
  text-decoration: underline dotted;
}
h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}
a {
  color: inherit;
  text-decoration: inherit;
}
b,
strong {
  font-weight: 700;
}
code,
kbd,
pre,
samp {
  font-family:
    "Plus Jakarta Sans", Arial, sans-serif;
  font-feature-settings: normal;
  font-variation-settings: normal;
  font-size: 1em;
}
small {
  font-size: 80%;
}
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sub {
  bottom: -0.25em;
}
sup {
  top: -0.5em;
}
table {
  text-indent: 0;
  border-color: inherit;
  border-collapse: collapse;
}
button,
input,
optgroup,
select,
textarea {
  font-family: "Plus Jakarta Sans", Arial, sans-serif;
  font-feature-settings: inherit;
  font-variation-settings: inherit;
  font-size: 100%;
  font-weight: inherit;
  line-height: inherit;
  letter-spacing: inherit;
  color: inherit;
  margin: 0;
  padding: 0;
}
button,
select {
  text-transform: none;
}
button,
input:where([type="button"]),
input:where([type="reset"]),
input:where([type="submit"]) {
  -webkit-appearance: button;
  background-color: transparent;
  background-image: none;
}
:-moz-focusring {
  outline: auto;
}
:-moz-ui-invalid {
  box-shadow: none;
}
progress {
  vertical-align: baseline;
}
::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}
[type="search"] {
  -webkit-appearance: textfield;
  outline-offset: -2px;
}
::-webkit-search-decoration {
  -webkit-appearance: none;
}
::-webkit-file-upload-button {
  -webkit-appearance: button;
  font: inherit;
}
summary {
  display: list-item;
}
blockquote,
dd,
dl,
figure,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
p,
pre {
  margin: 0;
}
fieldset {
  margin: 0;
}
fieldset,
legend {
  padding: 0;
}
menu,
ol,
ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
dialog {
  padding: 0;
}
textarea {
  resize: vertical;
}
input::-moz-placeholder,
textarea::-moz-placeholder {
  opacity: 1;
  color: #9ca3af;
}
input::placeholder,
textarea::placeholder {
  opacity: 1;
  color: #9ca3af;
}
[role="button"],
button {
  cursor: pointer;
}
:disabled {
  cursor: default;
}
audio,
canvas,
embed,
iframe,
img,
object,
svg,
video {
  display: block;
  vertical-align: middle;
}
img,
video {
  max-width: 100%;
  height: auto;
}
[hidden]:where(:not([hidden="until-found"])) {
  display: none;
}
.visible {
  visibility: visible;
}
.fixed {
  position: fixed;
}
.absolute {
  position: absolute;
}
.relative {
  position: relative;
}
.inset-0 {
  inset: 0;
}
.-top-8 {
  top: -2rem;
}
.bottom-2 {
  bottom: 0.5rem;
}
.left-3 {
  left: 0.75rem;
}
.left-\[11px\] {
  left: 11px;
}
.left-\[3px\] {
  left: 3px;
}
.right-1 {
  right: 0.25rem;
}
.right-2 {
  right: 0.5rem;
}
.right-8 {
  right: 2rem;
}
.top-1\/2 {
  top: 50%;
}
.top-2 {
  top: 0.5rem;
}
.-z-10 {
  z-index: -10;
}
.z-10 {
  z-index: 10;
}
.z-40 {
  z-index: 40;
}
.mx-auto {
  margin-left: auto;
  margin-right: auto;
}
.-mt-4 {
  margin-top: -1rem;
}
.mt-1 {
  margin-top: 0.25rem;
}
.mt-10 {
  margin-top: 2.5rem;
}
.mt-12 {
  margin-top: 3rem;
}
.mt-2 {
  margin-top: 0.5rem;
}
.mt-24 {
  margin-top: 6rem;
}
.mt-28 {
  margin-top: 7rem;
}
.mt-3 {
  margin-top: 0.75rem;
}
.mt-4 {
  margin-top: 1rem;
}
.mt-6 {
  margin-top: 1.5rem;
}
.mt-8 {
  margin-top: 2rem;
}
.flex {
  display: flex;
}
.inline-flex {
  display: inline-flex;
}
.grid {
  display: grid;
}
.inline-grid {
  display: inline-grid;
}
.hidden {
  display: none;
}
.aspect-\[4\/5\] {
  aspect-ratio: 4/5;
}
.h-10 {
  height: 2.5rem;
}
.h-16 {
  height: 4rem;
}
.h-2 {
  height: 0.5rem;
}
.h-28 {
  height: 7rem;
}
.h-3 {
  height: 0.75rem;
}
.h-3\.5 {
  height: 0.875rem;
}
.h-4 {
  height: 1rem;
}
.h-5 {
  height: 1.25rem;
}
.h-6 {
  height: 1.5rem;
}
.h-7 {
  height: 1.75rem;
}
.h-8 {
  height: 2rem;
}
.h-9 {
  height: 2.25rem;
}
.h-\[120px\] {
  height: 120px;
}
.min-h-\[300px\] {
  min-height: 300px;
}
.min-h-\[420px\] {
  min-height: 420px;
}
.min-h-screen {
  min-height: 100vh;
}
.w-10 {
  width: 2.5rem;
}
.w-16 {
  width: 4rem;
}
.w-2 {
  width: 0.5rem;
}
.w-3 {
  width: 0.75rem;
}
.w-3\.5 {
  width: 0.875rem;
}
.w-4 {
  width: 1rem;
}
.w-5 {
  width: 1.25rem;
}
.w-6 {
  width: 1.5rem;
}
.w-7 {
  width: 1.75rem;
}
.w-8 {
  width: 2rem;
}
.w-9 {
  width: 2.25rem;
}
.w-auto {
  width: auto;
}
.w-full {
  width: 100%;
}
.w-px {
  width: 1px;
}
.max-w-2xl {
  max-width: 42rem;
}
.max-w-6xl {
  max-width: 72rem;
}
.max-w-\[65\%\] {
  max-width: 65%;
}
.max-w-lg {
  max-width: 32rem;
}
.max-w-md {
  max-width: 28rem;
}
.max-w-xl {
  max-width: 36rem;
}
.-translate-x-1\/2 {
  --tw-translate-x: -50%;
}
.-translate-x-1\/2,
.-translate-y-1\/2 {
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate))
    skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x))
    scaleY(var(--tw-scale-y));
}
.-translate-y-1\/2 {
  --tw-translate-y: -50%;
}
.rotate-180 {
  --tw-rotate: 180deg;
}
.rotate-180,
.transform {
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate))
    skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x))
    scaleY(var(--tw-scale-y));
}
.resize {
  resize: both;
}
.grid-cols-1 {
  grid-template-columns: repeat(1, minmax(0, 1fr));
}
.flex-col {
  flex-direction: column;
}
.place-items-center {
  place-items: center;
}
.items-center {
  align-items: center;
}
.justify-center {
  justify-content: center;
}
.justify-between {
  justify-content: space-between;
}
.gap-10 {
  gap: 2.5rem;
}
.gap-2 {
  gap: 0.5rem;
}
.gap-3 {
  gap: 0.75rem;
}
.gap-4 {
  gap: 1rem;
}
.gap-5 {
  gap: 1.25rem;
}
.gap-6 {
  gap: 1.5rem;
}
.gap-8 {
  gap: 2rem;
}
.space-y-16 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(4rem * (1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(4rem * var(--tw-space-y-reverse));
}
.space-y-2 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.5rem * (1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
}
.space-y-3 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.75rem * (1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));
}
.space-y-4 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(1rem * (1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(1rem * var(--tw-space-y-reverse));
}
.overflow-hidden {
  overflow: hidden;
}
.rounded {
  border-radius: 0.25rem;
}
.rounded-3xl {
  border-radius: 1.5rem;
}
.rounded-full {
  border-radius: 9999px;
}
.rounded-md {
  border-radius: 0.375rem;
}
.rounded-xl {
  border-radius: 0.75rem;
}
.border {
  border-width: 1px;
}
.border-2 {
  border-width: 2px;
}
.border-t {
  border-top-width: 1px;
}
.border-gray-200 {
  --tw-border-opacity: 1;
  border-color: rgb(229 231 235 / var(--tw-border-opacity, 1));
}
.border-teal {
  border-color: oklch(0.78 0.22 148);
}
.border-teal-strong {
  border-color: oklch(0.68 0.22 148);
}
.bg-black {
  --tw-bg-opacity: 1;
  background-color: rgb(0 0 0 / var(--tw-bg-opacity, 1));
}
.bg-gray-200 {
  --tw-bg-opacity: 1;
  background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1));
}
.bg-green-500 {
  --tw-bg-opacity: 1;
  background-color: rgb(34 197 94 / var(--tw-bg-opacity, 1));
}
.bg-red-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(254 242 242 / var(--tw-bg-opacity, 1));
}
.bg-teal {
  background-color: oklch(0.78 0.22 148);
}
.bg-teal-strong {
  background-color: oklch(0.68 0.22 148);
}
.bg-transparent {
  background-color: transparent;
}
.bg-white {
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
}
.bg-gradient-to-r {
  background-image: linear-gradient(to right, var(--tw-gradient-stops));
}
.from-soft-mint {
  --tw-gradient-from: oklch(0.94 0.08 148) var(--tw-gradient-from-position);
  --tw-gradient-to: hsla(0, 0%, 100%, 0) var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.to-white {
  --tw-gradient-to: #fff var(--tw-gradient-to-position);
}
.bg-cover {
  background-size: cover;
}
.bg-center {
  background-position: 50%;
}
.fill-white {
  fill: #fff;
}
.object-cover {
  -o-object-fit: cover;
  object-fit: cover;
}
.p-6 {
  padding: 1.5rem;
}
.p-8 {
  padding: 2rem;
}
.px-3 {
  padding-left: 0.75rem;
  padding-right: 0.75rem;
}
.px-4 {
  padding-left: 1rem;
  padding-right: 1rem;
}
.px-5 {
  padding-left: 1.25rem;
  padding-right: 1.25rem;
}
.px-6 {
  padding-left: 1.5rem;
  padding-right: 1.5rem;
}
.py-10 {
  padding-top: 2.5rem;
  padding-bottom: 2.5rem;
}
.py-16 {
  padding-top: 4rem;
  padding-bottom: 4rem;
}
.py-2 {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}
.py-2\.5 {
  padding-top: 0.625rem;
  padding-bottom: 0.625rem;
}
.py-3 {
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
}
.py-4 {
  padding-top: 1rem;
  padding-bottom: 1rem;
}
.pb-14 {
  padding-bottom: 3.5rem;
}
.pb-24 {
  padding-bottom: 6rem;
}
.pl-12 {
  padding-left: 3rem;
}
.pr-4 {
  padding-right: 1rem;
}
.pt-16 {
  padding-top: 4rem;
}
.text-left {
  text-align: left;
}
.text-center {
  text-align: center;
}
.text-2xl {
  font-size: 1.5rem;
  line-height: 2rem;
}
.text-3xl {
  font-size: 1.875rem;
  line-height: 2.25rem;
}
.text-5xl {
  font-size: 3rem;
  line-height: 1;
}
.text-sm {
  font-size: 0.875rem;
  line-height: 1.25rem;
}
.text-xs {
  font-size: 0.75rem;
  line-height: 1rem;
}
.font-black {
  font-weight: 700;
}
.font-bold {
  font-weight: 700;
}
.font-semibold {
  font-weight: 600;
}
.uppercase {
  text-transform: uppercase;
}
.leading-none {
  line-height: 1;
}
.tracking-\[0\.25em\] {
  letter-spacing: 0.25em;
}
.tracking-\[0\.2em\] {
  letter-spacing: 0.2em;
}
.tracking-tight {
  letter-spacing: -0.025em;
}
.tracking-wider {
  letter-spacing: 0.05em;
}
.tracking-widest {
  letter-spacing: 0.1em;
}
.text-black {
  --tw-text-opacity: 1;
  color: rgb(0 0 0 / var(--tw-text-opacity, 1));
}
.text-gray-300 {
  --tw-text-opacity: 1;
  color: rgb(209 213 219 / var(--tw-text-opacity, 1));
}
.text-gray-400 {
  --tw-text-opacity: 1;
  color: rgb(156 163 175 / var(--tw-text-opacity, 1));
}
.text-gray-500 {
  --tw-text-opacity: 1;
  color: rgb(107 114 128 / var(--tw-text-opacity, 1));
}
.text-gray-700 {
  --tw-text-opacity: 1;
  color: rgb(55 65 81 / var(--tw-text-opacity, 1));
}
.text-green-500 {
  --tw-text-opacity: 1;
  color: rgb(34 197 94 / var(--tw-text-opacity, 1));
}
.text-red-400 {
  --tw-text-opacity: 1;
  color: rgb(248 113 113 / var(--tw-text-opacity, 1));
}
.text-teal-strong {
  color: oklch(0.68 0.22 148);
}
.text-white {
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}
.text-white\/80 {
  color: hsla(0, 0%, 100%, 0.8);
}
.shadow {
  --tw-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
}
.shadow,
.shadow-2xl {
  box-shadow:
    var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-2xl {
  --tw-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
  --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);
}
.shadow-lg {
  --tw-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
  --tw-shadow-colored:
    0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
}
.shadow-lg,
.shadow-md {
  box-shadow:
    var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-md {
  --tw-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
  --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
}
.shadow-sm {
  --tw-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
  --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
  box-shadow:
    var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.transition {
  transition-property:
    color,
    background-color,
    border-color,
    text-decoration-color,
    fill,
    stroke,
    opacity,
    box-shadow,
    transform,
    filter,
    -webkit-backdrop-filter;
  transition-property:
    color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow,
    transform, filter, backdrop-filter;
  transition-property:
    color,
    background-color,
    border-color,
    text-decoration-color,
    fill,
    stroke,
    opacity,
    box-shadow,
    transform,
    filter,
    backdrop-filter,
    -webkit-backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 0.15s;
}
.\[writing-mode\:vertical-rl\] {
  writing-mode: vertical-rl;
}
.hover\:text-black:hover {
  --tw-text-opacity: 1;
  color: rgb(0 0 0 / var(--tw-text-opacity, 1));
}
.disabled\:opacity-30:disabled {
  opacity: 0.3;
}
@media not all and (min-width: 768px) {
  .max-md\:max-w-full {
    max-width: 100%;
  }
}
@media (min-width: 640px) {
  .sm\:right-4 {
    right: 1rem;
  }
  .sm\:-mt-6 {
    margin-top: -1.5rem;
  }
  .sm\:mt-4 {
    margin-top: 1rem;
  }
  .sm\:mt-6 {
    margin-top: 1.5rem;
  }
  .sm\:mt-8 {
    margin-top: 2rem;
  }
  .sm\:block {
    display: block;
  }
  .sm\:h-10 {
    height: 2.5rem;
  }
  .sm\:h-44 {
    height: 11rem;
  }
  .sm\:h-\[160px\] {
    height: 160px;
  }
  .sm\:min-h-\[460px\] {
    min-height: 460px;
  }
  .sm\:w-10 {
    width: 2.5rem;
  }
  .sm\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .sm\:px-10 {
    padding-left: 2.5rem;
    padding-right: 2.5rem;
  }
  .sm\:px-12 {
    padding-left: 3rem;
    padding-right: 3rem;
  }
  .sm\:px-6 {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
  }
  .sm\:px-8 {
    padding-left: 2rem;
    padding-right: 2rem;
  }
  .sm\:py-14 {
    padding-top: 3.5rem;
    padding-bottom: 3.5rem;
  }
  .sm\:py-3 {
    padding-top: 0.75rem;
    padding-bottom: 0.75rem;
  }
  .sm\:text-6xl {
    font-size: 3.75rem;
    line-height: 1;
  }
  .sm\:text-sm {
    font-size: 0.875rem;
    line-height: 1.25rem;
  }
}
@media (min-width: 768px) {
  .md\:sticky {
    position: sticky;
  }
  .md\:top-24 {
    top: 6rem;
  }
  .md\:col-span-4 {
    grid-column: span 4 / span 4;
  }
  .md\:col-span-5 {
    grid-column: span 5 / span 5;
  }
  .md\:col-span-7 {
    grid-column: span 7 / span 7;
  }
  .md\:col-span-8 {
    grid-column: span 8 / span 8;
  }
  .md\:-mt-8 {
    margin-top: -2rem;
  }
  .md\:block {
    display: block;
  }
  .md\:inline {
    display: inline;
  }
  .md\:flex {
    display: flex;
  }
  .md\:h-56 {
    height: 14rem;
  }
  .md\:h-\[200px\] {
    height: 200px;
  }
  .md\:h-fit {
    height: -moz-fit-content;
    height: fit-content;
  }
  .md\:grid-cols-12 {
    grid-template-columns: repeat(12, minmax(0, 1fr));
  }
  .md\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .md\:grid-cols-\[240px_1px_1fr\] {
    grid-template-columns: 240px 1px 1fr;
  }
  .md\:items-center {
    align-items: center;
  }
  .md\:p-12 {
    padding: 3rem;
  }
}
@media (min-width: 1024px) {
  .lg\:h-72 {
    height: 18rem;
  }
  .lg\:h-\[230px\] {
    height: 230px;
  }
  .lg\:min-h-\[500px\] {
    min-height: 500px;
  }
  .lg\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .lg\:grid-cols-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .lg\:px-10 {
    padding-left: 2.5rem;
    padding-right: 2.5rem;
  }
  .lg\:px-14 {
    padding-left: 3.5rem;
    padding-right: 3.5rem;
  }
  .lg\:py-16 {
    padding-top: 4rem;
    padding-bottom: 4rem;
  }
}
@media (min-width: 1280px) {
  .xl\:h-80 {
    height: 20rem;
  }
  .xl\:h-\[260px\] {
    height: 260px;
  }
}

/* ==========================================================================
   Site Design System — typography scale, motion, marquee, custom components
   ========================================================================== */

/* ===================================================================
   DeepCiphers — About Page (design system + responsive typography)
   =================================================================== */

:root {
  /* DeepCiphers final brand palette — only two colors on the whole
     site: brand green and brand navy. Every other token below is a
     pure alias, or a lighter/darker tint of one of these two — never
     a third hue. */
  --green: #4aba6a; /* Brand Green — buttons, icons, numbers, accents */
  --navy: #08356D; /* Brand Navy — primary dark surfaces, text, borders */
  --slate: var(--navy); /* alias — was a separate blue, now pure navy */
  --navy-deep: var(--navy); /* alias — was a separate blue, now pure navy */
  --white: #ffffff; /* Background (Light) — main page background */
  --page-bg: #ffffff; /* Background (Light) */
  --mint-soft: color-mix(in oklab, var(--green) 20%, white); /* light green tint — backgrounds */
  --mint-deep: color-mix(in oklab, var(--green) 38%, white); /* light green tint — hover/highlight */
  --ink-strong: #000000; /* Text (Primary) — body text, neutral (not a brand color) */
  --text-on-dark: #ffffff; /* Text (On Dark) */

  /* Derived tints/shades used for soft backgrounds, borders and badge
     fills. Kept flat/solid rather than glowing, per the clean
     corporate direction (no soft blurred tints). */
  --mint-light: var(--mint-soft);
  --mint-pale: var(--mint-soft);
  --ink: var(--navy);
  --border: #dedede; /* neutral divider gray — not a brand color */
  --indigo: var(--navy);
  --pure-blue: var(--navy);

  /* Legacy aliases kept so the rest of the stylesheet (written against
     --teal/--teal-strong/--brand-blue/--soft-mint) automatically maps
     onto the new two-color palette above without a full rewrite. */
  --teal: var(--green);
  --teal-strong: var(--green);
  --brand-blue: var(--navy);
  --soft-mint: var(--mint-soft);
}

html,
body {
  font-family: "Plus Jakarta Sans", Arial, sans-serif;
  font-size: 16px;
  line-height: 1.75;
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  font-feature-settings: "kern" 1, "liga" 1, "calt" 1;
}

*,
*::before,
*::after {
  font-family: "Plus Jakarta Sans", Arial, sans-serif;
}

img {
  content-visibility: auto;
}

/* ===================================================================
   Responsive typography scale — Plus Jakarta Sans optimised
   =================================================================== */

/* ---- Base tokens ---- */
/* Plus Jakarta Sans is geometrically compact at small sizes,
   so we open tracking on body and tighten on large display sizes.
   Line-heights are slightly looser than system defaults because the
   x-height of PJS is taller, giving it an "airy" feel at large sizes. */

/* Small Mobile (≤375px) */
.h-main {
  font-weight: 700;
  font-size: 32px;          /* was 30 — PJS 800 reads better 2px up */
  line-height: 1.1;         /* ratio instead of px: survives hot-reload */
  letter-spacing: -0.03em;  /* tight negative tracking = premium feel */
}
.h-card {
  font-weight: 700;          /* was 600 — PJS 700 gives better hierarchy vs body */
  font-size: 19px;           /* was 18 */
  line-height: 1.3;
  letter-spacing: -0.015em; /* slightly more negative than before */
}
.t-sub {
  font-weight: 500;
  font-size: 13px;           /* was 12 — 12px is too small on mobile */
  line-height: 1.55;
  letter-spacing: 0;
}
.t-body {
  font-weight: 400;
  font-size: 15px;           /* was 13 — PJS needs 15–16px to breathe */
  line-height: 1.75;         /* generous: PJS is compact, needs air */
  letter-spacing: 0.005em;   /* very subtle positive = body readability */
}
.t-btn {
  font-weight: 600;
  font-size: 13px;
  line-height: 1;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

/* Mobile (376–425) */
@media (min-width: 376px) {
  .h-main {
    font-size: 36px;
    line-height: 1.08;
  }
  .h-card {
    font-size: 21px;
    line-height: 1.28;
  }
  .t-sub {
    font-size: 13px;
    line-height: 1.55;
  }
  .t-body {
    font-size: 15px;
    line-height: 1.75;
  }
  .t-btn {
    font-size: 14px;
  }
}

/* Large Mobile (426–767) */
@media (min-width: 426px) {
  .h-main {
    font-size: 44px;
    line-height: 1.06;
  }
  .h-card {
    font-size: 22px;
    line-height: 1.27;
  }
  .t-sub {
    font-size: 14px;
    line-height: 1.55;
  }
  .t-body {
    font-size: 15px;
    line-height: 1.75;
  }
  .t-btn {
    font-size: 14px;
  }
}

/* Tablet Portrait (768–991) */
@media (min-width: 768px) {
  .h-main {
    font-size: 54px;
    line-height: 1.05;
    letter-spacing: -0.035em; /* increase negative tracking as size grows */
  }
  .h-card {
    font-size: 23px;
    line-height: 1.26;
  }
  .t-sub {
    font-size: 15px;
    line-height: 1.55;
  }
  .t-body {
    font-size: 16px;          /* comfortable reading size on tablet+ */
    line-height: 1.75;
  }
  .t-btn {
    font-size: 15px;
  }
}

/* Tablet Landscape (992–1024) */
@media (min-width: 992px) {
  .h-main {
    font-size: 60px;
    line-height: 1.04;
    letter-spacing: -0.038em;
  }
  .h-card {
    font-size: 24px;
    line-height: 1.25;
  }
  .t-sub {
    font-size: 15px;
    line-height: 1.55;
  }
  .t-body {
    font-size: 16px;
    line-height: 1.75;
  }
  .t-btn {
    font-size: 15px;
    line-height: 1;
  }
}

/* Laptop (1025–1199) */
@media (min-width: 1025px) {
  .h-main {
    font-size: 66px;
    line-height: 1.03;
    letter-spacing: -0.04em;
  }
  .h-card {
    font-size: 26px;
    line-height: 1.24;
  }
  .t-sub {
    font-size: 16px;
    line-height: 1.55;
  }
  .t-body {
    font-size: 17px;
    line-height: 1.75;
  }
  .t-btn {
    font-size: 16px;
    line-height: 1;
  }
}

/* Large Laptop (1200–1439) */
@media (min-width: 1200px) {
  .h-main {
    font-size: 70px;
    line-height: 1.025;
    letter-spacing: -0.042em;
  }
  .h-card {
    font-size: 27px;
    line-height: 1.22;
  }
}

/* Desktop (1440+) */
@media (min-width: 1440px) {
  .h-main {
    font-size: 76px;
    line-height: 1.0;
    letter-spacing: -0.045em; /* Maximum negative tracking for display size */
  }
  .h-card {
    font-size: 28px;
    line-height: 1.2;
  }
}

/* ---- Marquee ---- */
@keyframes marquee-l {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(-50%);
  }
}
@keyframes marquee-r {
  from {
    transform: translateX(-50%);
  }
  to {
    transform: translateX(0);
  }
}
.marquee-track {
  animation: marquee-l 45s linear infinite;
  will-change: transform;
}
.marquee-track--reverse {
  animation: marquee-r 45s linear infinite;
}
.marquee-group:hover .marquee-track {
  animation-play-state: paused;
}

/* ---- Motion helpers ---- */
.motion-fade {
  transition:
    opacity 0.8s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.8s cubic-bezier(0.22, 1, 0.36, 1);
}
.motion-fade-fast {
  transition:
    opacity 0.6s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}
.motion-clip {
  transition:
    opacity 0.9s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.9s cubic-bezier(0.22, 1, 0.36, 1),
    clip-path 0.9s cubic-bezier(0.22, 1, 0.36, 1);
}
.motion-dot {
  transition:
    background-color 0.4s ease,
    box-shadow 0.4s ease,
    transform 0.4s ease;
}
.motion-hover-card {
  transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.motion-hover-card:hover {
  transform: scale(1.03);
}
.motion-btn-hover {
  transition: transform 0.2s ease;
}
.motion-btn-hover:hover {
  transform: scale(1.02);
}
.progress-fill {
  transition: height 0.15s linear;
}

/* ---- North Star : Brex-style horizontal expanding accordion ----
   CHANGE SUMMARY (CSS-only rewrite; class names, IDs and DOM structure
   generated by js/main.js are untouched):
   - .ns-stage: dropped the 3D "perspective" stage in favor of a simple
     rounded, overflow-hidden frame that now just houses a flex row.
   - .ns-orbit: was absolutely-positioned + preserve-3d for the coverflow;
     now it's the flexbox track (display:flex) that lays the cards out
     side by side and animates them with flex-grow/flex-basis.
   - .ns-card: was absolutely centered + rotateY/translateZ per card;
     now it's a normal flex item. Collapsed cards sit at a fixed
     flex-basis (~84-100px per the 80-100px spec), the active card gets
     flex-grow:1 + flex-basis:0 so it consumes the remaining ~70-80%
     of the row. Both are transitioned (not width/max-width) per spec.
   - .ns-card-inner/.ns-card-media: image now fills the ENTIRE card
     (position:absolute inset:0) instead of a small 16:9 thumbnail, and
     stays hidden (opacity:0) until the card is active, per "reveal
     image only when expanded".
   - .ns-card-label: repositioned so it's the only thing visible on a
     collapsed panel (centered, small), then animates to a large
     bottom-left title once the card is active.
   - .ns-card-text: unchanged mechanism (opacity/max-height), just
     repositioned as an overlay above the label instead of static flow
     text under a glass card, and only reveals after the card has
     mostly finished expanding (transition-delay).
------------------------------------------------------------------ */
.ns-stage {
  position: relative;
  height: auto;
  overflow: visible;
  border-radius: 32px;
  padding: 0 8px;
  background: #fff;
}
@media (min-width: 640px) {
  .ns-stage {
    height: 460px;
    border-radius: 40px;
  }
}
@media (min-width: 1024px) {
  .ns-stage {
    height: 480px;
  }
}

/* MOBILE SCROLL-DRIVEN EXPAND: wrap the stage in a tall track and pin
   the stage itself with position:sticky while the user scrolls through
   that track. JS (main.js) reads how far the track has scrolled and
   switches the active card in three even steps — Past -> Present ->
   Future — so the expand is tied to scroll instead of the desktop
   autoplay timer/hover. Only one .is-active card is ever set at a time,
   so cards can never appear expanded together. Kept short (180vh, ~1
   extra screen of scroll split three ways) so it advances quickly and
   never feels like scrolling gets "stuck" — a light nudge moves to the
   next card instead of a long locked scroll.
   Desktop/tablet (>=640px) are untouched: normal static flow.
   NOTE: mobile no longer uses scroll-driven expand — see script.js —
   so this wrapper is now plain static flow on all sizes too. */

/* Reference uses a plain white canvas behind/between the cards, not
   colored glow blobs, so these are switched off. */
.ns-blob {
  display: none;
}
@keyframes ns-drift-a {
  0%,
  100% {
    transform: translate(0, 0) scale(1);
  }
  50% {
    transform: translate(40px, 30px) scale(1.15);
  }
}
@keyframes ns-drift-b {
  0%,
  100% {
    transform: translate(0, 0) scale(1);
  }
  50% {
    transform: translate(-30px, -25px) scale(1.1);
  }
}

/* The flexbox accordion track. Column on small phones (stacked
   "expanding rows"), row from 640px up (the horizontal accordion). */
.ns-orbit {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: 100%;
  height: 100%;
  min-height: 430px;
}
@media (min-width: 640px) {
  .ns-orbit {
    flex-direction: row;
    gap: 14px;
    min-height: 0;
  }
}
@media (min-width: 1024px) {
  .ns-orbit {
    gap: 16px;
    justify-content: center;
  }
}

.ns-card {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  border-radius: 24px;
  overflow: hidden;
  cursor: pointer;
  background: #0b1220;
  box-shadow:
    inset 0 0 0 1px rgba(255, 255, 255, 0.07),
    0 1px 1px rgba(16, 24, 40, 0.03),
    0 10px 20px -10px rgba(16, 24, 40, 0.22);
  opacity: 0.85;

  /* Collapsed size: fixed flex-basis, no grow/shrink. On phones the
     main axis is vertical (column), so this becomes a collapsed
     height (56-64px per spec); from 640px up the axis flips to
     horizontal, so the same rule becomes a collapsed width
     (70-90px per spec). */
  flex: 0 0 60px;

  /* THE ACCORDION ANIMATION: flex-grow/flex-basis, not width/height.
     A slight overshoot ("spring") easing gives the expand/collapse a
     premium, tactile feel instead of a flat linear-ish ease. */
  transition:
    flex-grow 0.75s cubic-bezier(0.34, 1.56, 0.64, 1),
    flex-basis 0.75s cubic-bezier(0.34, 1.56, 0.64, 1),
    box-shadow 0.5s ease,
    transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1),
    opacity 0.45s ease;
}
@media (min-width: 640px) {
  .ns-card {
    flex-basis: 78px;
  }
}
@media (min-width: 1024px) {
  .ns-card {
    flex-basis: 84px;
  }
}
@media (max-width: 639px) {
  /* Snappier expand on mobile so scroll-driven switching feels quick
     and light rather than a slow, "locked" animation. */
  .ns-card {
    transition:
      flex-grow 0.4s cubic-bezier(0.34, 1.56, 0.64, 1),
      flex-basis 0.4s cubic-bezier(0.34, 1.56, 0.64, 1),
      box-shadow 0.3s ease,
      transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
      opacity 0.3s ease;
  }
}

/* Keep the active card at full clarity; gently dim the others so the
   eye is pulled toward whichever panel is expanded. */
.ns-card:not(.is-active) {
  opacity: 0.78;
}
.ns-card:not(.is-active):hover {
  opacity: 1;
}

/* Active card grows to fill all remaining space in the row/column,
   which works out to roughly 70-80% of the container width once the
   other 4 collapsed cards + gaps are subtracted. */
.ns-card.is-active {
  flex-grow: 1;
  flex-basis: 0;
  opacity: 1;
  transform: scale(1.015);
  box-shadow:
    inset 0 0 0 1px rgba(255, 255, 255, 0.14),
    0 6px 16px -4px rgba(16, 24, 40, 0.25),
    0 16px 32px -14px rgba(16, 24, 40, 0.35);
}
@media (min-width: 640px) and (max-width: 1023px) {
  .ns-card.is-active {
    max-width: 460px;
  }
}
@media (min-width: 1024px) {
  .ns-card.is-active {
    max-width: 700px;
  }
}

/* Inner wrapper just fills the card; the glassy card look is gone
   because the photo now IS the card background. */
.ns-card-inner {
  position: absolute;
  inset: 0;
  text-align: left;
}

/* Image fills the whole card (object-fit: cover). Collapsed cards keep
   a dim, HEAVILY BLURRED glimpse of the photo (premium "abstract color
   wash" look, like the reference's muted side tabs) rather than plain
   flat navy or a forced color tint; the active card brings it to full
   clarity + a gentle parallax zoom out. */
.ns-card-media {
  position: absolute;
  inset: 0;
  margin: 0;
  border-radius: 0;
  overflow: hidden;
  background: #0b1220;
}
.ns-card-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  opacity: 0.6;
  filter: saturate(0.9) blur(6px);
  transform: translate3d(0, 0, 0) scale(1.15);
  transition:
    opacity 0.6s ease-in-out,
    transform 0.6s cubic-bezier(0.22, 1, 0.36, 1),
    filter 0.6s ease-in-out;
}
.ns-card:not(.is-active):hover .ns-card-media img {
  opacity: 0.7;
  filter: saturate(1) blur(4px);
  transform: translate3d(0, 0, 0) scale(1.18);
}
.ns-card.is-active .ns-card-media img {
  opacity: 1;
  transform: translate3d(0, 0, 0) scale(1.04);
  filter: saturate(1) blur(0);
  transition-delay: 0.15s;
}
.ns-card-media::after {
  content: "";
  position: absolute;
  inset: 0;
  /* Collapsed: a light neutral wash that lets the photo's own blurred
     colors read through (reference look). Active: swaps to a darker
     navy wash so the heading/body text stays legible. */
  background: linear-gradient(
    180deg,
    rgba(10, 16, 26, 0.28) 0%,
    rgba(10, 16, 26, 0.14) 32%,
    rgba(10, 16, 26, 0.48) 100%
  );
  opacity: 0.85;
  transition:
    opacity 0.4s ease-in-out,
    background 0.4s ease-in-out;
  pointer-events: none;
}
.ns-card.is-active .ns-card-media::after {
  background: linear-gradient(
    180deg,
    rgba(6, 16, 25, 0.55) 0%,
    rgba(6, 16, 25, 0.28) 32%,
    rgba(6, 16, 25, 0.86) 100%
  );
  opacity: 1;
  transition-delay: 0.1s;
}

/* Label: the card's own name ("Past", "Present", ...), paired with a
   small ring. On a COLLAPSED desktop/tablet column it reads top-to-
   bottom as vertical text (matching the reference's side tabs), with
   the ring sitting above it near the top. On mobile (where collapsed
   cards are short full-width bars, not narrow columns) it stays a
   plain horizontal row. Once a card is active it slides up into a
   compact top-right horizontal mark. */
.ns-card-label {
  position: absolute;
  z-index: 3;
  left: 10px;
  right: 10px;
  top: 50%;
  bottom: auto;
  transform: translateY(-50%);
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  gap: 6px;
  color: #fff;
  font-weight: 600;
  font-size: 11px;
  letter-spacing: 0.05em;
  line-height: 1.2;
  transition:
    left 0.7s ease-in-out,
    right 0.7s ease-in-out,
    top 0.7s ease-in-out,
    bottom 0.7s ease-in-out,
    transform 0.7s ease-in-out,
    font-size 0.7s ease-in-out,
    justify-content 0.7s ease-in-out;
}
.ns-card-label-dot {
  writing-mode: horizontal-tb;
  width: 6px;
  height: 6px;
  flex: none;
  border-radius: 50%;
  border: 1.5px solid rgba(255, 255, 255, 0.75);
  transition: border-color 0.4s ease;
}
.ns-card-label-text {
  writing-mode: horizontal-tb;
}

/* MOBILE FIX: on phones the collapsed bars are short and full-width,
   so the centered label and the bottom-center "+" button (meant for
   tall desktop columns) land on top of each other. Left-align the
   label text and push the "+" button to the right edge, vertically
   centered, so nothing overlaps. */
@media (max-width: 639px) {
  .ns-card:not(.is-active) .ns-card-label {
    justify-content: flex-start;
    left: 16px;
    right: 56px;
  }
  .ns-card:not(.is-active) .ns-card-plus {
    left: auto;
    right: 14px;
    bottom: auto;
    top: 50%;
    transform: translateY(-50%);
  }
}
@media (min-width: 640px) {
  .ns-card-label {
    font-size: 12.5px;
  }
  .ns-card:not(.is-active) .ns-card-label {
    left: 0;
    right: 0;
    top: 18px;
    bottom: 56px;
    transform: none;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    gap: 16px;
  }
  .ns-card:not(.is-active) .ns-card-label-text {
    writing-mode: vertical-rl;
    text-orientation: mixed;
    white-space: nowrap;
  }
}
.ns-card.is-active .ns-card-label {
  left: 16px;
  right: 16px;
  top: 20px;
  bottom: auto;
  transform: none;
  flex-direction: row;
  justify-content: flex-end;
  font-size: 12.5px;
  letter-spacing: 0.04em;
  opacity: 0.92;
  transition:
    left 0.7s ease-in-out,
    right 0.7s ease-in-out,
    top 0.7s ease-in-out,
    bottom 0.7s ease-in-out,
    transform 0.7s ease-in-out,
    font-size 0.7s ease-in-out 0.1s,
    opacity 0.4s ease 0.18s;
}
.ns-card.is-active .ns-card-label-text {
  writing-mode: horizontal-tb;
}
@media (min-width: 640px) {
  .ns-card.is-active .ns-card-label {
    left: 16px;
    right: 16px;
    top: 24px;
    font-size: 13.5px;
  }
}

/* Content wrapper: flex column spanning the full panel so the heading
   block sits at the top and the divider/keywords row is pinned to the
   bottom, mirroring the reference's generous vertical whitespace.
   Hidden + inert while collapsed; fades/lifts in once active. */
.ns-card-content {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  box-sizing: border-box;
  padding: 40px 16px 16px;
  opacity: 0;
  transform: translateY(10px);
  pointer-events: none;
  transition:
    opacity 0.4s ease,
    transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}
@media (min-width: 640px) {
  .ns-card-content {
    padding: 60px 16px 16px;
  }
}
.ns-card.is-active .ns-card-content {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
  transition-delay: 0.18s;
}

.ns-card-top {
  display: flex;
  flex-direction: column;
  gap: 10px;
  max-width: 480px;
}

.ns-card-heading {
  color: #fff;
  font-weight: 600;
  font-size: 18px;
  line-height: 1.18;
  letter-spacing: -0.01em;
}
@media (min-width: 640px) {
  .ns-card-heading {
    font-size: 23px;
  }
}
@media (min-width: 1024px) {
  .ns-card-heading {
    font-size: 27px;
  }
}

.ns-card-text {
  font-size: 13px;
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.82);
  max-width: 420px;
}
@media (min-width: 640px) {
  .ns-card-text {
    font-size: 14px;
    line-height: 1.65;
  }
}

.ns-card-cta {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.01em;
  color: #fff;
  margin-top: 2px;
}
@media (min-width: 640px) {
  .ns-card-cta {
    font-size: 13.5px;
  }
}
.ns-card-cta svg {
  width: 14px;
  height: 14px;
  transition: transform 0.3s ease;
}
.ns-card:hover .ns-card-cta svg {
  transform: translate(2px, -2px);
}

/* Bottom info row: thin divider + exactly four short keywords, given
   a faint frosted-glass strip so it reads as a distinct, premium
   panel rather than plain text floating on the photo. */
.ns-card-bottom {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding-top: 14px;
  margin: 0 -16px -16px;
  padding-left: 16px;
  padding-right: 16px;
  padding-bottom: 16px;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.05) 100%);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}

.ns-card-divider {
  position: relative;
  height: 1px;
  width: 100%;
  overflow: hidden;
  background: rgba(255, 255, 255, 0.22);
}
.ns-card-divider-fill {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 0%;
  background: #fff;
  transform-origin: left center;
}
.ns-card-divider-fill.is-filling {
  transition-property: width;
  transition-timing-function: linear;
}

/* Divider + prev/next nav share a row, reference-style: the progress
   line grows to fill the left side, the two round arrow buttons sit
   at the end. */
.ns-card-bottom-row {
  display: flex;
  align-items: center;
  gap: 18px;
}
.ns-card-bottom-row .ns-card-divider {
  flex: 1 1 auto;
}

.ns-card-nav {
  display: flex;
  flex: none;
  gap: 8px;
}
.ns-card-nav-btn {
  display: grid;
  place-items: center;
  flex: none;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border: 1.3px solid rgba(255, 255, 255, 0.5);
  background: rgba(255, 255, 255, 0.06);
  color: #fff;
  cursor: pointer;
  transition:
    border-color 0.3s ease,
    background-color 0.3s ease,
    color 0.3s ease,
    transform 0.15s ease,
    opacity 0.3s ease;
}
.ns-card-nav-btn svg {
  width: 15px;
  height: 15px;
}
.ns-card-nav-btn:hover:not(:disabled) {
  background: #fff;
  border-color: #fff;
  color: #0b1220;
}
.ns-card-nav-btn:active:not(:disabled) {
  transform: scale(0.92);
}
.ns-card-nav-btn:disabled {
  opacity: 0.35;
  cursor: not-allowed;
}
.ns-card-nav-btn:focus-visible {
  outline: 2px solid var(--brand-blue);
  outline-offset: 2px;
}
@media (min-width: 640px) {
  .ns-card-nav-btn {
    width: 38px;
    height: 38px;
  }
  .ns-card-nav-btn svg {
    width: 16px;
    height: 16px;
  }
}

/* Round "+" affordance shown on every COLLAPSED card, reference-style
   (bottom-center on the dim side tabs); fades out once a card expands
   since the full nav/CTA content takes over at that point. */
.ns-card-plus {
  position: absolute;
  z-index: 4;
  left: 50%;
  bottom: 14px;
  transform: translateX(-50%);
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border: 1.3px solid rgba(255, 255, 255, 0.55);
  background: rgba(255, 255, 255, 0.06);
  color: #fff;
  cursor: pointer;
  opacity: 1;
  transition:
    opacity 0.35s ease,
    border-color 0.3s ease,
    background-color 0.3s ease,
    color 0.3s ease,
    transform 0.3s ease;
}
.ns-card-plus svg {
  width: 14px;
  height: 14px;
}
.ns-card-plus:hover {
  background: #fff;
  border-color: #fff;
  color: #0b1220;
}
.ns-card-plus:focus-visible {
  outline: 2px solid var(--brand-blue);
  outline-offset: 2px;
}
.ns-card.is-active .ns-card-plus {
  opacity: 0;
  pointer-events: none;
  transform: translateX(-50%) scale(0.7);
}
@media (min-width: 640px) {
  .ns-card-plus {
    width: 38px;
    height: 38px;
    bottom: 18px;
  }
  .ns-card-plus svg {
    width: 15px;
    height: 15px;
  }
}

.ns-card-keywords {
  display: flex;
  flex-wrap: wrap;
  column-gap: 26px;
  row-gap: 8px;
}
.ns-card-keywords span {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.05em;
  color: rgba(255, 255, 255, 0.9);
  white-space: nowrap;
}
@media (min-width: 640px) {
  .ns-card-keywords span {
    font-size: 13.5px;
  }
}

.ns-card:focus-visible .ns-card-inner {
  outline: 2px solid var(--brand-blue);
  outline-offset: 2px;
}

@media (min-width: 1024px) {
  .ns-card.is-active .ns-card-media img:hover {
    transform: scale(1.14);
  }
}

/* ---- Stats ---- */
.stats-card {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 28px;
  box-shadow: 0 1px 2px rgba(16, 24, 40, 0.03);
}
.stats-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 2rem;
  text-align: left;
}
@media (min-width: 640px) {
  .stats-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
.stat-number {
  font-weight: 700;
  font-size: 34px;
  line-height: 1;
}
@media (min-width: 640px) {
  .stat-number {
    font-size: 44px;
  }
}
@media (min-width: 1025px) {
  .stat-number {
    font-size: 52px;
  }
}

/* ---- Testimonials full-bleed ---- */
.full-bleed {
  position: relative;
  left: 50%;
  right: 50%;
  width: 100vw;
  margin-left: -50vw;
  margin-right: -50vw;
  overflow: hidden;
}

/* Testimonials — premium dark slider (Apple x Linear x Vercel style),
   built from the same navy/green palette as the Hero and CTA. */
.testimonials-badge {
  border-color: rgba(255, 255, 255, 0.15) !important;
  background: rgba(255, 255, 255, 0.03);
  color: #ffffff !important;
}
.testimonials-heading {
  color: #ffffff;
}
.testimonials-heading .text-teal-strong {
  color: var(--green) !important;
}
.testimonials-subtitle {
  color: rgba(255, 255, 255, 0.6);
}

.testimonials-wrap {
  position: relative;
}
.testimonials-viewport {
  overflow: hidden;
}
.testimonials-viewport:hover .testimonials-track {
  animation-play-state: paused;
}
.testimonials-track {
  width: max-content;
  padding: 1.5rem 0.125rem;
  animation: marquee-l 32s linear infinite;
  will-change: transform;
}

.testimonial-card {
  scroll-snap-align: start;
  width: 86vw;
  max-width: 300px;
  height: 290px;
  flex-shrink: 0;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  border-radius: 12.5px 50px 12.5px 12.5px;
  padding: 22px;
  border: 1.5px solid transparent;
  border-bottom: none;
  background:
    linear-gradient(rgb(10, 10, 10), rgb(10, 10, 10)) padding-box,
    linear-gradient(160deg, rgb(46, 208, 110) 0%, rgb(46, 208, 110) 15%, transparent 65%) border-box;
  overflow: hidden;
}
.testimonial-card .quote-mark {
  flex-shrink: 0;
}
.testimonial-card p.t-body {
  flex: 1 1 auto;
  min-height: 0;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  overflow: hidden;
  text-overflow: ellipsis;
}
.testimonial-card .testimonial-meta {
  flex-shrink: 0;
  margin-top: auto;
}
/* Mobile (376–425) */
@media (min-width: 376px) {
  .testimonial-card {
    max-width: 310px;
    height: 295px;
    padding: 26px;
  }
}
/* Large Mobile (426–767) */
@media (min-width: 426px) {
  .testimonial-card {
    width: 320px;
    height: 300px;
    border-radius: 12.5px 50px 12.5px 12.5px;
    padding: 30px;
  }
}
/* Tablet Portrait and up (768+) */
@media (min-width: 768px) {
  .testimonial-card {
    width: 338px;
    height: 310px;
    border-radius: 12.5px 50px 12.5px 12.5px;
    padding: 35px;
  }
}
.testimonial-card .quote-mark {
  color: var(--green);
}
.testimonial-card p.t-body {
  color: rgba(255, 255, 255, 0.85);
}
.testimonial-meta {
  border-top: 1px solid rgba(255, 255, 255, 0.12);
  padding-top: 1.25rem;
}
.testimonial-meta p.font-bold {
  color: #ffffff;
}
.testimonial-meta p.t-sub {
  color: rgba(255, 255, 255, 0.55);
}

/* ---- Careers CTA (final section before footer) ---- */
.cta-card {
  overflow: hidden;
  border-radius: 32px;
}
/* Roomy min-height on desktop (1024px+) — grows to fit content instead
   of a hard-clipped fixed height, so the larger heading always fits. */
@media (min-width: 1024px) {
  .cta-card {
    min-height: 300px;
  }
}

/* Layout: mobile stacks the image above the content (original design,
   untouched). From 768px up, the compact 300px row layout takes over,
   with a 48px gap and vertical centering so nothing is cropped. */
.cta-grid {
  display: flex;
  flex-direction: column;
  gap: 0;
}
@media (min-width: 768px) {
  .cta-grid {
    flex-direction: row;
    align-items: center;
    gap: 48px;
  }
}
@media (min-width: 1024px) {
  .cta-grid {
    min-height: 300px;
  }
}

.cta-media {
  position: relative;
  width: 100%;
  flex-shrink: 0; /* never let the flex row squeeze the photo column */
  aspect-ratio: 807 / 530; /* mobile: image shows uncropped, at its natural ratio */
  overflow: hidden;
  isolation: isolate;
}
@media (min-width: 768px) {
  .cta-media {
    width: 48%;
    aspect-ratio: auto;
    align-self: stretch;
  }
}
@media (min-width: 1024px) {
  .cta-media {
    width: 47.5%;
  }
}

/* Both mobile and desktop show the image UNCROPPED (object-fit:
   contain) so the figures — including the man's raised hand — are
   never cut off at any screen width. Desktop just centers it within
   the taller row instead of stretching/cropping to fill it. */
.cta-media .cta-vr {
  position: absolute;
  z-index: 2;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center bottom;
}

/* Glowing orb behind the silhouette — large, continuously rotating,
   and mostly covered by the figures for depth, matching the reference.
   Centered so it sits behind BOTH figures' heads (not just the left
   one), raised to head/brain height, and sized up a bit so it reaches
   both sides. */
.cta-glow {
  position: absolute;
  z-index: 1;
  width: 260px;
  height: 260px;
  left: 50%;
  top: 34%;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  object-fit: contain;
  opacity: 0.95;
  filter: drop-shadow(0 0 50px color-mix(in oklab, var(--teal) 55%, transparent));
  animation: cta-glow-spin 16s linear infinite;
  pointer-events: none;
}
@media (min-width: 640px) {
  .cta-glow {
    width: 330px;
    height: 330px;
  }
}
@media (min-width: 768px) {
  .cta-glow {
    width: 234px;
    height: 234px;
    left: 44%;
  }
}
@media (min-width: 1024px) {
  .cta-glow {
    width: 264px;
    height: 264px;
  }
}
@keyframes cta-glow-spin {
  from {
    transform: translate(-50%, -50%) rotate(0deg);
  }
  to {
    transform: translate(-50%, -50%) rotate(360deg);
  }
}

.cta-content {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  width: 100%;
  min-width: 0; /* allow this flex item to shrink below its text's natural width instead of overflowing the card */
  padding: 24px;
}
@media (max-width: 767px) {
  .cta-content {
    min-height: 238px;
  }
}
@media (min-width: 768px) {
  .cta-content {
    width: 52%;
    padding: 19px 19px 19px 0;
  }
}
@media (min-width: 1024px) {
  .cta-content {
    padding: 24px 24px 24px 0;
  }
}
@media (min-width: 1280px) {
  .cta-content {
    padding: 28px 28px 28px 0;
  }
}

.cta-badge {
  display: inline-block;
  background: var(--soft-mint);
  color: color-mix(in oklab, var(--brand-blue) 82%, black);
  font-weight: 600;
  font-size: 14px;
  line-height: 1;
  padding: 12px 22px;
  border-radius: 999px;
}

.cta-heading {
  margin-top: 24px;
  color: #fff;
  font-weight: 700;
  font-size: 32px;
  line-height: 1.1;
  letter-spacing: -0.03em;
  overflow-wrap: break-word;
  max-width: 100%;
}
@media (min-width: 376px) {
  .cta-heading {
    font-size: 36px;
    line-height: 1.08;
  }
}
@media (min-width: 426px) {
  .cta-heading {
    font-size: 44px;
    line-height: 1.06;
    margin-top: 28px;
  }
}
@media (min-width: 768px) {
  .cta-heading {
    font-size: 54px;
    line-height: 1.05;
    letter-spacing: -0.035em;
    margin-top: 10px;
    flex-shrink: 0;
  }
}
@media (min-width: 992px) {
  .cta-heading {
    font-size: 60px;
    line-height: 1.04;
    letter-spacing: -0.038em;
  }
}
@media (min-width: 1025px) {
  .cta-heading {
    font-size: 66px;
    line-height: 1.03;
    letter-spacing: -0.04em;
  }
}
@media (min-width: 1200px) {
  .cta-heading {
    font-size: 70px;
    line-height: 1.025;
    letter-spacing: -0.042em;
  }
}
@media (min-width: 1440px) {
  .cta-heading {
    font-size: 76px;
    line-height: 1.0;
    letter-spacing: -0.045em;
  }
}

.cta-copy {
  margin-top: 20px;
  max-width: 500px;
  color: #ffffff;
  font-weight: 400;
  font-size: 15px;
  line-height: 1.75;
  letter-spacing: 0.005em;
}
@media (min-width: 376px) {
  .cta-copy {
    font-size: 15px;
    line-height: 1.75;
  }
}
@media (min-width: 426px) {
  .cta-copy {
    font-size: 15px;
    line-height: 1.75;
  }
}
@media (min-width: 768px) {
  .cta-copy {
    font-size: 16px;
    line-height: 1.75;
    margin-top: 12px;
    max-width: 420px;
    flex-shrink: 0;
  }
}
@media (min-width: 992px) {
  .cta-copy {
    font-size: 17px;
    line-height: 1.75;
  }
}

/* CTA button: pill with a circular white arrow badge that nudges
   forward on hover, matching the reference exactly. */
.cta-btn {
  margin-top: 28px;
  padding: 8px 8px 8px 30px;
  font-weight: 600;
  font-size: 13px;
  line-height: 18px;
  transition:
    background-color 0.3s ease,
    box-shadow 0.3s ease,
    transform 0.3s ease;
}
@media (min-width: 376px) {
  .cta-btn {
    font-size: 14px;
    line-height: 20px;
  }
}
@media (min-width: 768px) {
  .cta-btn {
    font-size: 15px;
    line-height: 21px;
    margin-top: 16px;
    padding: 8px 8px 8px 24px;
    gap: 9px !important;
    flex-shrink: 0;
  }
}
@media (min-width: 992px) {
  .cta-btn {
    font-size: 15px;
    line-height: 21px;
  }
}
@media (min-width: 1025px) {
  .cta-btn {
    margin-top: 18px;
    padding: 8px 8px 8px 26px;
    font-size: 16px;
    line-height: 22px;
  }
}
.cta-arrow {
  width: 48px;
  height: 48px;
}
@media (min-width: 768px) {
  .cta-arrow {
    width: 27px;
    height: 27px;
  }
  .cta-arrow svg {
    width: 12px;
    height: 12px;
  }
}
@media (min-width: 1024px) {
  .cta-arrow {
    width: 30px;
    height: 30px;
  }
}

/* ---- Code of Business (Code of Conduct) ---- */
.cob-card {
  overflow: hidden;
  border-radius: 24px;
}
@media (min-width: 768px) {
  .cob-card {
    border-radius: 32px;
  }
}

/* Grid: 3 equal columns on desktop (image / text / image), stacked on
   mobile. Vertical padding ~4vw and a ~3vw column gap reproduce the
   40.96px / 30.72px measured on the live 1024px-wide reference. */
.cob-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 24px;
  padding: 28px 24px;
}
@media (min-width: 768px) {
  .cob-grid {
    grid-template-columns: 1fr 1fr 1fr;
    align-items: start;
    column-gap: clamp(16px, 3vw, 40px);
    padding: clamp(24px, 4vw, 56px) 0;
  }
  .cob-grid > .cob-img-wrap:first-child {
    align-self: start;
  }
  .cob-grid > .cob-text {
    align-self: center;
  }
  .cob-grid > .cob-img-wrap:last-child {
    align-self: start;
    margin-top: 70px;
  }
}

/* Wrapper clips the zoom so the image never bleeds past its rounded
   corners/card, matching the "Our Direction" card zoom behavior. */
.cob-img-wrap {
  overflow: hidden;
  border-radius: 16px;
}
@media (min-width: 768px) {
  .cob-img-wrap {
    border-radius: 20px;
  }
}

.cob-img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  border-radius: 0;
  transform: scale(1);
  transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}
/* Desktop: zoom in on hover. */
@media (hover: hover) and (pointer: fine) {
  .cob-img-wrap:hover .cob-img {
    transform: scale(1.1);
  }
}

.cob-text {
  text-align: center;
  padding-bottom: 4px;
}

/* ---- Reveal (scroll-triggered) ---- */
.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition:
    opacity 0.9s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.9s cubic-bezier(0.22, 1, 0.36, 1);
  will-change: opacity, transform;
}
.reveal.is-shown {
  opacity: 1;
  transform: translateY(0);
}
.reveal-delay-1 {
  transition-delay: 0.08s;
}
.reveal-delay-2 {
  transition-delay: 0.16s;
}
.reveal-delay-3 {
  transition-delay: 0.24s;
}

@media (prefers-reduced-motion: reduce) {
  .reveal,
  .motion-fade,
  .motion-fade-fast,
  .motion-clip,
  .motion-hover-card,
  .motion-btn-hover {
    transition: none !important;
    transform: none !important;
    opacity: 1 !important;
  }
  .ns-card,
  .ns-card-inner,
  .ns-card-media img,
  .ns-card-cta {
    transition: none !important;
  }
  .ns-blob {
    animation: none !important;
  }
  .lead-card,
  .lead-photo-frame,
  .lead-name-row::after,
  .lead-arrow {
    transition: none !important;
  }
  .cta-glow {
    animation: none !important;
  }
  .cta-arrow {
    transition: none !important;
  }
  .marquee-track,
  .marquee-track--reverse {
    animation: none !important;
  }
}

/* ===================================================================
   Service-page design system alignment (refactor only, no new content)
   =================================================================== */

/* Pill buttons — every green pill CTA gets a service-style white circle
   badge around its trailing arrow icon, uppercase heavy tracking, and
   a slightly firmer shadow. Applies to any `.motion-btn-hover` that has
   an inline <svg> as its final child (the pattern used across the page:
   Start a Project, See Our Process, Let's Talk Business, etc.). */
.motion-btn-hover {
  font-weight: 600;
  letter-spacing: 0.01em;
  text-transform: uppercase;
  padding-right: 6px;
  box-shadow: 0 1px 3px rgba(16, 24, 40, 0.1);
}
.motion-btn-hover > svg:last-child {
  background: #fff;
  color: var(--ink);
  border-radius: 9999px;
  width: 28px;
  height: 28px;
  padding: 6px;
  box-sizing: border-box;
  transition: transform 0.25s ease;
}
.motion-btn-hover:hover > svg:last-child {
  transform: translateX(2px);
}

/* Section kicker labels ("OUR VALUES", "HOW WE WORK", "TEN YEARS ONE ARC",
   "CODE OF CONDUCT", "CHAPTER 0X") — nudge from teal into the deeper
   service-page emerald so they read as the same brand green everywhere. */
.text-teal-strong {
  color: var(--teal-strong) !important;
}
.bg-teal {
  background-color: var(--teal) !important;
}
.border-teal {
  border-color: var(--teal) !important;
}

/* Stats card — service-page cards use a thicker rounded outline and a
   tighter shadow. Bump both to match. */
.stats-card {
  border-radius: 32px;
  border: 1.5px solid var(--border);
  box-shadow:
    0 1px 2px rgba(16, 24, 40, 0.04),
    0 20px 40px -28px rgba(16, 24, 40, 0.18);
}
.stat-number {
  font-weight: 700;
  letter-spacing: -0.02em;
}

/* Careers CTA — service-page CTAs are jet-black with green typography
   accents, not indigo. Overrides swap the button and card treatment to
   the black-panel style. */
.cta-card {
  box-shadow:
    0 40px 90px -24px rgba(0, 0, 0, 0.55),
    0 14px 34px -14px rgba(0, 0, 0, 0.4);
}
.cta-btn {
  background-color: var(--teal) !important;
  color: var(--ink) !important;
  font-weight: 600;
  letter-spacing: 0.01em;
  text-transform: uppercase;
}
.cta-btn:hover {
  background-color: color-mix(in oklab, var(--teal) 85%, black) !important;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18);
}
.cta-arrow {
  background: #fff !important;
  color: var(--ink) !important;
}

/* Leadership nav pills — swap the teal outline for the service-page
   black-outline look. */
#lead-prev,
#lead-next {
  border-color: var(--ink) !important;
  color: var(--ink) !important;
}

/* Intrapreneurship heading color (the only element using this class). */
.text-brand-blue {
  color: #08356D !important;
}

/* Keep the Intrapreneurship label as a real heading without changing its
   existing size, line-height or card geometry. */
.intrapreneurship-heading {
  margin: 0;
  color: #08356D;
}

/* Hero background — hexagon network pattern, layered under the same
   navy/green gradient the hero always had. */
.hero-circuit-bg {
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
  opacity: 0.95;
}

/* ===================================================================
   Palette system — maps every Tailwind utility color used on the page
   onto the DeepCiphers brand palette: only two colors site-wide,
   green (#4aba6a) and navy (#08356D), plus neutral black/white/gray
   for text and structural dividers. No other hues are introduced.
   =================================================================== */

/* Neutral text — replace Tailwind grays with opacity-mixed black so
   every "muted" text value is still just the palette's ink color. */
.text-gray-300 {
  color: color-mix(in oklab, var(--ink) 32%, white) !important;
}
.text-gray-400 {
  color: color-mix(in oklab, var(--ink) 48%, white) !important;
}
.text-gray-500 {
  color: color-mix(in oklab, var(--ink) 60%, white) !important;
}
.text-gray-700 {
  color: color-mix(in oklab, var(--ink) 82%, white) !important;
}

/* Borders + dividers — the palette's single border token. */
.border-gray-200 {
  border-color: var(--border) !important;
}
.bg-gray-200 {
  background-color: var(--border) !important;
}

/* Green accents (stat numbers, dots, badges) → exact palette green. */
.text-green-500 {
  color: var(--green) !important;
}
.bg-green-500 {
  background-color: var(--green) !important;
}
.text-black {
  color: #000000 !important;
}

/* Download-brochure pills were an off-palette red; swap to a soft mint
   surface with a navy icon so they still read as a distinct "utility"
   action without leaving the palette. */
.bg-red-50 {
  background-color: var(--mint-pale) !important;
}
.text-red-400 {
  color: var(--navy) !important;
}

.border-teal-strong {
  border-color: var(--teal-strong) !important;
}
.bg-teal-strong {
  background-color: var(--teal-strong) !important;
}

/* ---- Section identity: Hero and the final Careers CTA keep their
   branded dark treatment; every section in between is pure clean
   white with black headings, per the latest direction. ---- */

/* HERO — untouched: premium dark navy gradient. */
.hero-video-wrap {
  background-color: var(--navy) !important;
}
.hero-gradient-overlay {
  background-image:
    linear-gradient(
      to right,
      color-mix(in oklab, var(--navy) 88%, transparent) 0%,
      color-mix(in oklab, var(--navy) 60%, transparent) 45%,
      transparent 100%
    ),
    radial-gradient(
      circle at 20% 20%,
      color-mix(in oklab, var(--green) 18%, transparent) 0%,
      color-mix(in oklab, var(--navy-deep) 35%, transparent) 55%,
      transparent 100%
    );
}

/* MISSION / VISION, LEADERSHIP — no tint, pure white. */
.mission-vision-surface,
.leadership-surface {
  background: #ffffff;
  border-radius: 0;
  padding: 0;
}

/* TESTIMONIALS — matches reference image colors exactly: pure black
   background, white text, bright green accent. */
.testimonials-surface {
  background: #000000;
}
.testimonials-inner {
  padding-bottom: 4rem;
}

/* CODE OF CONDUCT — pure white, no tint. */
.cob-card {
  background: #ffffff !important;
}

/* Final About CTA — approved solid navy with white heading/body copy. */
.cta-card {
  background: #08356D !important;
  background-color: #08356D !important;
}

.cta-card .cta-heading,
.cta-card .cta-copy {
  color: #ffffff !important;
}

/* ---- How We Work: timeline dots restyled to match reference (big hollow
   ring for upcoming steps, solid green dot with white center for active) ---- */
.how-we-work-dot {
  width: 26px !important;
  height: 26px !important;
  left: 12px !important;
  top: 1px !important;
  border-width: 1.5px !important;
  z-index: 1;
}
.how-we-work-dot.border-gray-200 {
  background-color: #fff !important;
  border-color: var(--navy) !important;
}
.how-we-work-dot.bg-teal-strong,
.how-we-work-dot.border-teal-strong {
  background-color: var(--green) !important;
  border-color: var(--green) !important;
}
.how-we-work-dot.bg-teal-strong::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: #fff;
  transform: translate(-50%, -50%);
}

/* ===================================================================
   Brand polish pass — additive hover/border enhancements only.
   Nothing above is overridden; these rules add refined interaction
   states on top of the existing layout using the DeepCiphers palette
   (navy #08356D / green #2ECC71), matched to the new logo.
   =================================================================== */

/* Stats cards — subtle lift + brand border brighten on hover, no glow. */
.stats-card {
  transition:
    transform 0.3s cubic-bezier(0.22, 1, 0.36, 1),
    border-color 0.3s ease,
    background-color 0.3s ease,
    box-shadow 0.3s ease;
}
.stats-card:hover {
  transform: translateY(-3px);
  border-color: var(--green);
  background-color: var(--mint-deep);
  box-shadow: 0 4px 14px rgba(16, 24, 40, 0.09);
}

/* Primary CTA pills (Start a Project, See Our Process, etc.) — crisp
   border brighten + tiny lift instead of a glow, consistent everywhere
   this pattern is used. */
.motion-btn-hover {
  transition:
    transform 0.25s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.25s ease,
    background-color 0.25s ease;
}
.motion-btn-hover:hover {
  transform: translateY(-2px);
  box-shadow: 0 3px 10px rgba(16, 24, 40, 0.14);
}

/* Focus-visible ring everywhere, in brand navy, for keyboard users —
   additive accessibility polish. */
a:focus-visible,
button:focus-visible {
  outline: 2px solid var(--navy);
  outline-offset: 2px;
}

/* Button border-hover effect — every pill CTA (Start a Project, See Our
   Process, Let's Talk Business, the final Careers CTA button) gets a
   crisp brand-color ring that appears on hover. Additive: border is
   transparent by default so nothing shifts in the resting state. */
.motion-btn-hover,
.cta-btn {
  border: 2px solid transparent;
  transition:
    border-color 0.25s ease,
    transform 0.25s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.25s ease,
    background-color 0.25s ease;
}
.motion-btn-hover:hover {
  border-color: var(--navy);
}
/* On the pure-black Careers CTA / testimonials-style buttons, a navy
   border would vanish — use white-tinted border there instead. */
.cta-card .cta-btn:hover {
  border-color: rgba(255, 255, 255, 0.35);
}

/* Outlined "ghost" buttons/links (secondary actions, filters) — brand
   border color on hover instead of the browser default. */
.border-teal:hover,
button.border:hover,
a.border:hover {
  border-color: var(--green) !important;
}

/* ===================================================================
   Advanced hover pass — additive only, covers Mission/Vision,
   Leadership, Journey timeline, Belief tabs, Direction cards and
   Code of Conduct images. Nothing existing is removed or overridden.
   =================================================================== */

/* Mission / Vision cards — solid black border, fixed radius, no hover
   color/shadow/lift changes. */
.mv-card {
  border-color: rgb(0, 0, 0) !important;
  border-radius: 18.75px !important;
  border-width: 0.666667px !important;
  box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04);
}

/* ===================================================================
   Leadership cards — teal/navy gradient photo frame with a faint hex
   pattern showing through the border, a white LinkedIn badge docked
   on the photo, and a bottom "drawn" frame around the name row that
   only appears on hover/focus. Image itself never scales; only the
   whole card lifts. Everything below animates via transform + opacity
   so nothing shifts layout or flickers.
   =================================================================== */
.lead-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}
.lead-card:hover,
.lead-card:focus-within {
  transform: translateY(-8px);
}
.lead-photo-frame {
  position: relative;
  border-radius: 22px;
  padding: 5px;
  background: linear-gradient(135deg, var(--teal) 0%, var(--navy-deep) 100%);
  overflow: hidden;
  box-shadow: 0 1px 2px rgba(16, 24, 40, 0.05);
  transition: box-shadow 0.4s ease;
}
.lead-card:hover .lead-photo-frame,
.lead-card:focus-within .lead-photo-frame {
  box-shadow:
    0 4px 10px -2px rgba(16, 24, 40, 0.12),
    0 24px 44px -16px rgba(16, 24, 40, 0.32);
}
.lead-hex-bg {
  position: absolute;
  inset: 0;
  opacity: 0.55;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='84' height='72' viewBox='0 0 84 72'%3E%3Cpolygon points='42,0 84,20 84,52 42,72 0,52 0,20' fill='none' stroke='rgba(255,255,255,0.28)' stroke-width='1'/%3E%3C/svg%3E");
  background-size: 84px 72px;
  pointer-events: none;
}
.lead-photo-inner {
  position: relative;
  z-index: 1;
  border-radius: 18px;
  overflow: hidden;
  aspect-ratio: 4 / 5;
}
/* Image is fixed — no scale/zoom on hover, only the card around it moves. */
.lead-photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.lead-linkedin-badge {
  position: absolute;
  z-index: 2;
  top: 14px;
  right: 14px;
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  border-radius: 8px;
  background: #ffffff;
  color: #111111;
  transition: background-color 0.25s ease, color 0.25s ease;
}
.lead-linkedin-badge:hover {
  background: var(--green);
  color: #ffffff;
}
.lead-role {
  margin-top: 18px;
  font-size: 15px;
  font-weight: 500;
  color: color-mix(in oklab, var(--ink) 55%, white);
}
.lead-name-row {
  position: relative;
  margin-top: auto;
  padding: 12px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
/* The "drawn" bottom frame — a pseudo-element sized to the name row,
   open at the top, rounded only at the bottom corners. Hidden by
   default (opacity 0 + collapsed from the top), it fades and grows
   down into place on hover/focus — transform + opacity only, so nothing
   else in the card reflows and there's no flicker. */
.lead-name-row::after {
  content: "";
  position: absolute;
  inset: 0 -6px -14px -6px;
  border: 1.5px solid var(--teal);
  border-top: none;
  border-radius: 0 0 20px 20px;
  opacity: 0;
  transform: scaleY(0.85);
  transform-origin: top;
  transition:
    opacity 0.4s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
  pointer-events: none;
}
.lead-card:hover .lead-name-row::after,
.lead-card:focus-within .lead-name-row::after {
  opacity: 1;
  transform: scaleY(1);
}
.lead-name {
  font-family: "Plus Jakarta Sans", Arial, sans-serif;
  font-weight: 600;
  font-size: 22px;
  line-height: 1.15;
  letter-spacing: -0.01em;
  text-transform: uppercase;
  color: #000000;
  margin: 0;
}
.lead-arrow {
  flex-shrink: 0;
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  color: var(--ink);
  background-color: transparent;
  transition:
    transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1),
    background-color 0.35s ease,
    color 0.35s ease;
}
.lead-card:hover .lead-arrow,
.lead-card:focus-within .lead-arrow {
  transform: translateX(4px);
  background-color: var(--mint-soft);
  color: var(--navy);
}

/* Leadership prev/next controls — outline pill inverts to a solid
   brand-green fill on hover, arrow turns white. */
#lead-prev,
#lead-next {
  transition:
    background-color 0.25s ease,
    color 0.25s ease,
    border-color 0.25s ease;
}
#lead-prev:hover:not(:disabled),
#lead-next:hover:not(:disabled) {
  background-color: var(--green);
  border-color: var(--green);
  color: #fff !important;
}

/* Journey timeline ("From Day One") — dots scale up with a soft brand
   ring, year labels deepen to navy, on hover. */
#dotsRow .stop {
  transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
}
#dotsRow .stop:hover {
  transform: scale(1.25);
}
#dotsRow .stop:hover .stop-dot {
  box-shadow: 0 0 0 4px color-mix(in oklab, var(--green) 35%, transparent);
}
#yearsRow .stop-year {
  transition:
    color 0.25s ease,
    transform 0.25s ease;
}
#yearsRow .stop-year:hover {
  color: var(--navy);
  transform: translateY(-2px);
}

/* "What We Believe In" tabs — a brand-green accent bar slides in from
   the left on hover for the inactive tabs. */
#future-tabs li button {
  position: relative;
  overflow: hidden;
}
#future-tabs li button::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background: var(--green);
  transform: scaleY(0);
  transition: transform 0.25s ease;
}
#future-tabs li button:hover::before {
  transform: scaleY(1);
}
#future-tabs li button:not(.text-black):hover {
  background-color: var(--mint-deep);
}

/* Our Direction (northstar) collapsed cards — label text turns brand
   green and the plus icon spins slightly on hover, before expansion. */
.ns-card-label-text,
.ns-card-plus {
  transition:
    color 0.25s ease,
    transform 0.3s ease;
}
.ns-card:not(.is-active):hover .ns-card-label-text {
  color: var(--green);
}
.ns-card:not(.is-active):hover .ns-card-plus {
  transform: rotate(90deg);
}

/* Code of Conduct images — subtle dark-to-clear overlay fades out on
   hover, layered on top of the existing zoom. */
.cob-img-wrap {
  position: relative;
}
.cob-img-wrap::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(0, 35, 90, 0.12);
  transition: opacity 0.4s ease;
  pointer-events: none;
}
.cob-img-wrap:hover::after {
  opacity: 0;
}

/* Final CTA — the glow orb behind the astronaut/VR image gets a slow
   pulse when the section is hovered, and the arrow badge gets a
   slightly firmer scale. */
.cta-card .cta-arrow {
  transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.cta-card:hover .cta-glow {
  animation-duration: 3s;
}
.cta-card a.cta-btn:hover .cta-arrow {
  transform: translate(2px, -2px) scale(1.12);
}

/* ===================================================================
   Advanced hover pass 2 — additive only. WhatsApp button, six-pillar
   numbers, stat numbers, testimonials badge, and a shine-sweep on the
   hero CTA. Nothing existing is removed or overridden.
   =================================================================== */

/* WhatsApp floating button — scale + soft brand-green pulse ring. */
button[aria-label="Chat on WhatsApp"] {
  transition:
    transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
    box-shadow 0.25s ease;
}
button[aria-label="Chat on WhatsApp"]:hover {
  transform: translateY(-50%) scale(1.1);
  box-shadow: 0 0 0 6px rgba(46, 204, 113, 0.25);
}

/* Six Pillars step numbers — small bounce on hover, on top of the
   existing background/text color transitions. */
.six-steps-section .step-num {
  display: inline-block;
  transition:
    color 0.3s ease,
    transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.six-steps-section .step:not(.active):hover .step-num {
  transform: scale(1.15);
}

/* Stats — numbers shift to brand green and scale slightly on hover. */
.stat-number {
  display: inline-block;
  transition:
    color 0.25s ease,
    transform 0.25s ease;
}
.stats-card:hover .stat-number {
  color: var(--green);
  transform: scale(1.05);
}

/* Testimonials badge pill — border brightens to brand green on hover. */
.testimonials-badge {
  transition: border-color 0.25s ease;
}
.testimonials-badge:hover {
  border-color: var(--green) !important;
}

/* Hero "Start a Project" button — diagonal shine sweep on hover,
   layered on top of the existing lift/border-hover from before. */
.hero-video-wrap .motion-btn-hover {
  position: relative;
  overflow: hidden;
}
.hero-video-wrap .motion-btn-hover::before {
  content: "";
  position: absolute;
  top: 0;
  left: -60%;
  width: 40%;
  height: 100%;
  background: linear-gradient(
    115deg,
    transparent 0%,
    rgba(255, 255, 255, 0.35) 50%,
    transparent 100%
  );
  transform: skewX(-20deg);
  transition: left 0.6s ease;
  pointer-events: none;
}
.hero-video-wrap .motion-btn-hover:hover::before {
  left: 130%;
}

/* ===================================================================
   Unified CTA system — pill button with a docked circular arrow.
   Used site-wide (hero, "Watch Our Story", "See Our Process") so every
   primary action reads as one consistent, premium button language
   instead of three slightly different treatments.
   =================================================================== */
.btn-pill {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 7px 7px 7px 26px;
  border-radius: 999px;
  font-family: "Plus Jakarta Sans", Arial, sans-serif;
  font-weight: 600;
  font-size: 13px;
  letter-spacing: 0.04em;   /* PJS buttons need slightly more tracking at small size */
  text-transform: uppercase;
  text-decoration: none;
  cursor: pointer;
  transition:
    transform 0.2s ease,
    box-shadow 0.25s ease,
    background-color 0.25s ease;
}
@media (min-width: 768px) {
  .btn-pill {
    font-size: 14px;
    letter-spacing: 0.04em;
    padding: 8px 8px 8px 30px;
  }
}
@media (min-width: 1025px) {
  .btn-pill {
    font-size: 14px;
    padding: 9px 9px 9px 32px;
  }
}
.btn-pill-arrow {
  display: grid;
  place-items: center;
  flex-shrink: 0;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  transition:
    transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
    background-color 0.25s ease;
}
@media (min-width: 768px) {
  .btn-pill-arrow {
    width: 42px;
    height: 42px;
  }
}
.btn-pill:hover .btn-pill-arrow {
  transform: rotate(45deg);
}

.btn-pill-primary {
  background-color: var(--teal);
  color: #fff;
  box-shadow: 0 8px 20px -8px color-mix(in oklab, var(--teal) 65%, transparent);
}
.btn-pill-primary:hover {
  background-color: color-mix(in oklab, var(--teal) 88%, black);
}
.btn-pill-primary .btn-pill-arrow {
  background-color: #fff;
  color: var(--ink);
}

.btn-pill-outline {
  background-color: transparent;
  color: var(--ink);
  border: 1.5px solid var(--border);
}
.btn-pill-outline:hover {
  border-color: var(--teal);
}
.btn-pill-outline .btn-pill-arrow {
  background-color: var(--mint-soft);
  color: var(--navy);
}

/* Hero eyebrow — small uppercase label with a live-status dot, set
   above the H1 so the hero reads: label -> big headline -> supporting
   line -> action, matching the rest of the page's heading rhythm. */
.hero-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: "Plus Jakarta Sans", Arial, sans-serif;
  font-weight: 600;
  font-size: 12px;
  letter-spacing: 0.1em;    /* wider tracking on eyebrow = strong label feel */
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.78);
}
@media (min-width: 768px) {
  .hero-eyebrow {
    font-size: 13px;
  }
}
.hero-eyebrow-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--green);
  box-shadow: 0 0 0 4px color-mix(in oklab, var(--green) 25%, transparent);
  flex-shrink: 0;
}



/* ===== Our Journey (horizontal timeline carousel) — original colors kept, font-family follows site (Plus Jakarta Sans, inherited globally) ===== */
.oj-section{position:relative;background:#0b0b0b;padding:80px 0 20px}
.oj-header-container{text-align:center;padding:0 20px 20px}
.oj-main-title{color:#ffffff;font-size:3.5rem;font-weight:700;margin-bottom:12px;letter-spacing:-1px;line-height:1.2}
.oj-main-title span{color:#4ABA6A}
.oj-sub-title{color:#8a8a8a;font-size:1.15rem;font-weight:400;max-width:600px;margin:0 auto;line-height:1.6}
.oj-timeline-carousel{position:relative;width:100%}
.oj-nav-btn{position:absolute;top:50%;transform:translateY(-50%);width:50px;height:50px;border-radius:50%;background:rgba(20,20,20,0.8);border:1px solid #333;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:20;transition:all .3s ease;backdrop-filter:blur(5px)}
.oj-nav-btn:hover{background:#4ABA6A;border-color:#4ABA6A;box-shadow:0 0 15px rgba(74,186,106,0.5)}
.oj-nav-btn svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.oj-nav-left{left:20px;opacity:.3;pointer-events:none}
.oj-nav-right{right:20px;animation:ojPulseArrow 2s infinite}
@keyframes ojPulseArrow{0%{transform:translateY(-50%) translateX(0)}50%{transform:translateY(-50%) translateX(5px)}100%{transform:translateY(-50%) translateX(0)}}
.oj-nav-right:hover{animation:none}
.oj-wrap{position:relative;padding:20px 0 60px;width:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;-ms-overflow-style:none;scrollbar-width:none}
.oj-wrap::-webkit-scrollbar{display:none}
.oj-track{display:inline-flex;align-items:center;position:relative;padding:0 80px;min-width:100%;height:500px}
.oj-track::before{content:'';position:absolute;left:0;right:0;top:50%;height:1px;transform:translateY(-50%);background-image:repeating-linear-gradient(to right,#2e2e2e 0,#2e2e2e 5px,transparent 5px,transparent 11px);z-index:0}
.oj-ev{display:inline-flex;flex-direction:column;position:relative;z-index:2;width:340px;height:100%;flex-shrink:0;scroll-snap-align:center;perspective:2500px;transform-style:preserve-3d}
.oj-hl,.oj-hr{width:100%;height:50%;display:flex;flex-direction:column;align-items:center}
.oj-hl{justify-content:flex-end;padding-bottom:20px}
.oj-hr{justify-content:flex-start;padding-top:20px}
.oj-card-wrap{position:relative;display:block;width:290px;min-height:160px;opacity:0;transform-style:preserve-3d;transition:transform 1.4s cubic-bezier(.175,.885,.32,1.15),opacity .8s ease-in,filter 1.4s ease-out}
.oj-hl .oj-card-wrap{transform-origin:left center;transform:rotateY(110deg) scale(.85);filter:drop-shadow(0px 0px 0px rgba(0,0,0,0))}
.oj-hr .oj-card-wrap{transform-origin:right center;transform:rotateY(-110deg) scale(.85);filter:drop-shadow(0px 0px 0px rgba(0,0,0,0))}
.oj-ev.oj-visible .oj-card-wrap{opacity:1;transform:rotateY(0deg) scale(1)}
.oj-ev.oj-visible .oj-hl .oj-card-wrap{filter:drop-shadow(20px 25px 25px rgba(0,0,0,0.7))}
.oj-ev.oj-visible .oj-hr .oj-card-wrap{filter:drop-shadow(-20px 25px 25px rgba(0,0,0,0.7))}
.oj-card-svg{display:block;position:absolute;top:0;left:0;width:100%;height:100%;overflow:visible;z-index:1}
.oj-cinner{position:relative;z-index:2}
.oj-cinner-down{padding:24px 24px 50px 24px}
.oj-cinner-up{padding:50px 24px 24px 24px}
.oj-ctitle{color:#fff;font-size:16px;font-weight:700;line-height:1.35;margin-bottom:10px}
.oj-cdesc{color:#8a8a8a;font-size:13.5px;line-height:1.6}
.oj-dot{position:absolute;left:50%;top:50%;width:12px;height:12px;border-radius:50%;background:#4ABA6A;z-index:5;box-shadow:0 0 10px rgba(74,186,106,0.4);opacity:0;transform:translate(-50%,-50%) scale(0);transition:opacity .4s ease .6s,transform .6s cubic-bezier(.34,1.56,.64,1) .6s}
.oj-ev.oj-visible .oj-dot{opacity:1;transform:translate(-50%,-50%) scale(1)}
.oj-mlabel{color:#fff;font-size:15px;font-weight:400;letter-spacing:.01em;white-space:nowrap;opacity:0;transform:translateY(15px);transition:opacity .5s ease .8s,transform .5s ease .8s}
.oj-ev.oj-visible .oj-mlabel{opacity:1;transform:translateY(0)}
.oj-mlabel b{font-weight:700}
.oj-hl .oj-mlabel{margin-top:15px}
.oj-hr .oj-mlabel{margin-bottom:15px}
@media (max-width:768px){
  .oj-header-container{padding:0 20px 10px}
  .oj-main-title{font-size:2.5rem}
  .oj-sub-title{font-size:1rem}
  .oj-nav-btn{width:40px;height:40px}
  .oj-nav-left{left:10px}
  .oj-nav-right{right:10px}
  .oj-ev{width:320px}
  .oj-card-wrap{width:270px}
  .oj-ctitle{font-size:15px}
  .oj-cdesc{font-size:12.5px}
  .oj-cinner-down{padding:20px 20px 45px 20px}
  .oj-cinner-up{padding:45px 20px 20px 20px}
}

/* ===== Our Values section (restored) ===== */
.values-section {
  --values-bg-card: #ffffff;
  --values-bg-badge: #0d1f2e;
  --values-text-body: #4b5563;
  --values-border-primary: #22c55e;
  --values-divider-color: rgba(0, 0, 0, 0.08);
  background-color: #ffffff;
  max-width: 1200px;
  margin: 112px auto 0;
  padding: 80px 20px;
  text-align: center;
}
.values-title {
  font-size: 3.5rem;
  font-weight: 700;
  margin-bottom: 60px;
  letter-spacing: -1.5px;
  line-height: 1.2;
  color: #111827;
}
.values-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
  text-align: left;
}
.value-card {
  background-color: var(--values-bg-card);
  border: 0.666667px solid var(--values-border-primary);
  border-radius: 20px 100px 20px 20px;
  padding: 45px 24px 35px;
  position: relative;
  box-shadow: none;
  display: flex;
  flex-direction: column;
}
.value-badge {
  position: absolute;
  top: -15px;
  left: 24px;
  background-color: var(--values-bg-badge);
  color: #ffffff;
  font-size: 0.9rem;
  font-weight: 700;
  padding: 4px 14px;
  border: none;
  border-radius: 6px;
  z-index: 2;
}
.value-card h3 {
  font-size: 1.4rem;
  font-weight: 700;
  margin: 0 0 12px 0;
  line-height: 1.3;
  letter-spacing: -0.02em;
  color: #111827;
}
.value-card p {
  font-size: 0.95rem;
  color: var(--values-text-body);
  line-height: 1.6;
  margin: 0 0 20px 0;
}
.value-points {
  list-style: none;
  padding: 16px 0 0 0;
  margin: auto 0 0 0;
  border-top: 1px dashed var(--values-divider-color);
}
.value-points li {
  font-size: 0.9rem;
  color: var(--values-text-body);
  margin-bottom: 10px;
  padding-left: 24px;
  position: relative;
  line-height: 1.5;
  font-weight: 500;
}
.value-points li:last-child {
  margin-bottom: 0;
}
.value-points li::before {
  content: "•";
  color: var(--values-border-primary);
  font-size: 1.5rem;
  position: absolute;
  left: 0;
  top: -6px;
}
@media (max-width: 1024px) {
  .values-grid {
    grid-template-columns: repeat(2, 1fr);
    row-gap: 40px;
  }
}
@media (max-width: 600px) {
  .values-title {
    font-size: 2.5rem;
  }
  .values-grid {
    grid-template-columns: 1fr;
  }
}

/* Intrapreneurship section hero image — taller on mobile so the
   office photo + logo don't look squished on small screens. */
@media (max-width: 639px) {
  .hero-office-img {
    height: 200px;
  }
}



/* About page overflow and shadow cleanup. Scoped to page content so the shared Header/Footer remain unchanged. */
html:has(body.about-page),
body.about-page {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
  overflow-x: clip;
}

.about-page-root {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
  overflow-x: clip;
}

.about-page-root,
.about-page-root *:not(.intrapreneurship-card),
.about-page-root *::before,
.about-page-root *::after {
  box-shadow: none !important;
  text-shadow: none !important;
}

/* Only the Intrapreneurship card keeps a soft bottom drop shadow. */
.about-page-root .intrapreneurship-card {
  box-shadow: 0 14px 22px -10px rgba(0, 0, 0, 0.22);
}

.about-page-root .cta-glow,
.about-page-root .oj-card-wrap {
  filter: none !important;
}

/* About-page content CTAs share the Home-page master button geometry.
   Scope is limited to the four About content CTAs. */
html body.about-page .about-service-cta.top-dev-cta {
  -webkit-appearance: none !important;
  appearance: none !important;
  width: fit-content !important;
  inline-size: fit-content !important;
  min-width: 0 !important;
  max-width: 100% !important;
  height: 60px !important;
  min-height: 60px !important;
  max-height: 60px !important;
  margin: 0 !important;
  padding: 0 8px 0 24px !important;
  border: 1px solid #26d06a !important;
  border-radius: 18.75px !important;
  background: #26d06a !important;
  background-color: #26d06a !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  flex-flow: row nowrap !important;
  gap: 12px !important;
  position: static !important;
  inset: auto !important;
  box-sizing: border-box !important;
  overflow: hidden !important;
  font-family: "Plus Jakarta Sans", Arial, sans-serif !important;
  font-size: 16px !important;
  line-height: 1 !important;
  font-weight: 600 !important;
  font-style: normal !important;
  text-transform: uppercase !important;
  letter-spacing: -0.015em !important;
  white-space: nowrap !important;
  text-decoration: none !important;
  text-align: left !important;
  box-shadow: none !important;
  outline: 0 !important;
  filter: none !important;
  translate: none !important;
  scale: none !important;
  rotate: none !important;
  transform: none !important;
  cursor: pointer !important;
  isolation: isolate !important;
  transition: background-color .22s ease, color .22s ease, border-color .22s ease !important;
}

html body.about-page .about-service-cta.top-dev-cta::before,
html body.about-page .about-service-cta.top-dev-cta::after {
  content: none !important;
  display: none !important;
  width: 0 !important;
  height: 0 !important;
  background: none !important;
  background-image: none !important;
  animation: none !important;
}

html body.about-page .about-service-cta.top-dev-cta > span:first-child {
  display: block !important;
  flex: 0 0 auto !important;
  width: auto !important;
  min-width: 0 !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  position: static !important;
  overflow: visible !important;
  color: inherit !important;
  -webkit-text-fill-color: inherit !important;
  font: inherit !important;
  line-height: 1 !important;
  letter-spacing: inherit !important;
  text-transform: inherit !important;
  white-space: nowrap !important;
  text-overflow: clip !important;
  transform: none !important;
  animation: none !important;
}

html body.about-page .about-service-cta.top-dev-cta .about-service-cta-arrow.top-dev-arrow {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex: 0 0 34px !important;
  width: 34px !important;
  height: 34px !important;
  min-width: 34px !important;
  min-height: 34px !important;
  max-width: 34px !important;
  max-height: 34px !important;
  margin: 0 0 0 auto !important;
  padding: 0 !important;
  position: static !important;
  inset: auto !important;
  border: 0 !important;
  border-radius: 50% !important;
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  color: #050505 !important;
  -webkit-text-fill-color: #050505 !important;
  line-height: 0 !important;
  box-shadow: none !important;
  opacity: 1 !important;
  visibility: visible !important;
  overflow: visible !important;
  translate: none !important;
  scale: none !important;
  rotate: none !important;
  transform: none !important;
  animation: none !important;
  transition: background-color .22s ease !important;
  pointer-events: none !important;
  z-index: auto !important;
}

html body.about-page .about-service-cta.top-dev-cta .about-service-cta-arrow.top-dev-arrow::before,
html body.about-page .about-service-cta.top-dev-cta .about-service-cta-arrow.top-dev-arrow::after {
  content: none !important;
  display: none !important;
  width: 0 !important;
  height: 0 !important;
  background: none !important;
  background-image: none !important;
  transform: none !important;
  animation: none !important;
}

html body.about-page .about-service-cta.top-dev-cta .about-service-cta-arrow.top-dev-arrow > img {
  display: block !important;
  flex: 0 0 100% !important;
  width: 100% !important;
  height: 100% !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: 100% !important;
  max-height: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  position: static !important;
  object-fit: contain !important;
  background: transparent !important;
  opacity: 1 !important;
  visibility: visible !important;
  transform: none !important;
  animation: none !important;
  pointer-events: none !important;
}

html body.about-page .about-service-cta.top-dev-cta:hover,
html body.about-page .about-service-cta.top-dev-cta:active {
  border-color: #26d06a !important;
  background: #ffffff !important;
  background-color: #ffffff !important;
  color: #050505 !important;
  -webkit-text-fill-color: #050505 !important;
  box-shadow: none !important;
  translate: none !important;
  scale: none !important;
  rotate: none !important;
  transform: none !important;
}

html body.about-page .about-service-cta.top-dev-cta:hover .about-service-cta-arrow.top-dev-arrow,
html body.about-page .about-service-cta.top-dev-cta:active .about-service-cta-arrow.top-dev-arrow {
  /* The arrow asset already contains its own white circle. Keeping this
     wrapper transparent prevents a second green circle from showing below it. */
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
  transform: none !important;
}

html body.about-page .about-service-cta.top-dev-cta:focus {
  outline: 0 !important;
}

html body.about-page .about-service-cta.top-dev-cta:focus-visible {
  outline: 2px solid #26d06a !important;
  outline-offset: 3px !important;
  box-shadow: none !important;
  transform: none !important;
}

@media (min-width: 768px) and (max-width: 991px) {
  html body.about-page .about-service-cta.top-dev-cta {
    height: 56px !important;
    min-height: 56px !important;
    max-height: 56px !important;
    padding: 0 6px 0 22px !important;
    gap: 10px !important;
    font-size: 15px !important;
    line-height: 21px !important;
  }

  html body.about-page .about-service-cta.top-dev-cta .about-service-cta-arrow.top-dev-arrow {
    flex-basis: 34px !important;
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    min-height: 34px !important;
    max-width: 34px !important;
    max-height: 34px !important;
  }
}

@media (max-width: 767px) {
  html body.about-page .about-service-cta.top-dev-cta {
    width: fit-content !important;
    inline-size: fit-content !important;
    min-width: 0 !important;
    max-width: 100% !important;
    height: 56px !important;
    min-height: 56px !important;
    max-height: 56px !important;
    padding: 0 6px 0 18px !important;
    gap: 10px !important;
    font-size: 14px !important;
    line-height: 20px !important;
  }

  html body.about-page .about-service-cta.top-dev-cta .about-service-cta-arrow.top-dev-arrow {
    flex-basis: 32px !important;
    width: 32px !important;
    height: 32px !important;
    min-width: 32px !important;
    min-height: 32px !important;
    max-width: 32px !important;
    max-height: 32px !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  html body.about-page .about-service-cta.top-dev-cta,
  html body.about-page .about-service-cta.top-dev-cta * {
    transition-duration: 0s !important;
    animation: none !important;
  }
}

/* About page: How We Work left-column content and local spacing only. */
html body.about-page .how-we-work-layout {
  align-items: start;
}

html body.about-page .how-we-work-support {
  max-width: 460px;
  margin-top: 18px;
}

html body.about-page .how-we-work-actions {
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
  gap: 12px;
  margin-top: 28px;
}

html body.about-page .how-we-work-actions > .about-service-cta {
  flex: 0 0 auto;
}

@media (min-width: 1100px) {
  html body.about-page .how-we-work-layout {
    grid-template-columns: minmax(470px, 5fr) minmax(0, 7fr) !important;
    column-gap: 56px !important;
  }

  html body.about-page .how-we-work-summary,
  html body.about-page .how-we-work-layout > #how-we-work-list,
  html body.about-page .how-we-work-layout > .how-we-work-list {
    grid-column: auto !important;
  }
}

@media (min-width: 768px) and (max-width: 1099px) {
  html body.about-page .how-we-work-layout {
    grid-template-columns: minmax(280px, 40%) minmax(0, 1fr) !important;
    column-gap: 32px !important;
  }

  html body.about-page .how-we-work-summary,
  html body.about-page .how-we-work-layout > #how-we-work-list,
  html body.about-page .how-we-work-layout > .how-we-work-list {
    grid-column: auto !important;
  }

  html body.about-page .how-we-work-actions {
    flex-direction: column;
    align-items: flex-start;
  }
}

html body.about-page .how-we-work-summary,
html body.about-page .how-we-work-list {
  min-width: 0;
}

html body.about-page .how-we-work-list {
  width: 100%;
}

@media (max-width: 767px) {
  html body.about-page .how-we-work-support {
    max-width: 100%;
    margin-top: 16px;
  }

  html body.about-page .how-we-work-actions {
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
    margin-top: 24px;
  }
}

/* About SVG hero desktop CTA — isolated to About page */
.about-page .about-svg-hero {
  width: 100%;
}

.about-page .about-svg-hero__inner {
  position: relative;
  width: 100%;
  max-width: 1604px;
  margin: 0 auto;
  line-height: 0;
}

.about-page .about-svg-hero__art {
  display: block;
  width: 100%;
  height: auto;
}

.about-page .about-svg-hero .top-dev-cta {
  position: absolute;
  right: clamp(36px, 4.9vw, 78px);
  bottom: clamp(8px, 1.4vw, 22px);
  width: clamp(228px, 18.05vw, 290px);
  height: clamp(50px, 3.9vw, 63px);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 0 clamp(10px, 1.1vw, 16px) 0 clamp(22px, 1.9vw, 30px);
  border: 1px solid #0b0b0b;
  border-radius: 999px;
  background: #ffffff;
  color: #0b0b0b;
  text-decoration: none;
  text-transform: uppercase;
  font-size: clamp(15px, 1.45vw, 25px);
  font-weight: 500;
  letter-spacing: -0.035em;
  line-height: 1;
  z-index: 8;
  box-shadow: none;
  white-space: nowrap;
}

.about-page .about-svg-hero .top-dev-cta > span:first-child {
  color: #0b0b0b;
}

.about-page .about-svg-hero .top-dev-cta .top-dev-arrow {
  flex: 0 0 auto;
  width: clamp(42px, 3.15vw, 53px);
  height: clamp(42px, 3.15vw, 53px);
  border-radius: 50%;
  background: #26D06A;
  display: grid;
  place-items: center;
  color: #000000;
  font-size: clamp(28px, 2.25vw, 38px);
  line-height: 1;
  font-weight: 400;
  transform: translateX(2px);
}

.about-page .about-svg-hero .top-dev-cta .top-dev-arrow img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

@media (max-width: 768px) {
  .about-page .about-svg-hero .top-dev-cta {
    display: none !important;
  }
}

@media (min-width: 769px) and (max-width: 991px) {
  .about-page .about-svg-hero .top-dev-cta {
    right: clamp(12px, 2.4vw, 24px);
    bottom: clamp(3px, .75vw, 8px);
    width: clamp(174px, 22vw, 205px);
    min-height: 44px !important;
    padding-left: 14px !important;
  }

  .about-page .about-svg-hero .top-dev-cta > span:first-child {
    font-size: 12px !important;
  }

  .about-page .about-svg-hero .top-dev-cta .top-dev-arrow {
    width: 30px;
    height: 30px;
    min-width: 30px;
  }
}
