/* =============================================================================
   alive.css — additive "Quiet Aurora" layer (home page only)
   Restrained, editorial. Monochrome-blue palette with subtle yellow accent.
   ============================================================================= */

@import url("https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,600;9..144,800&display=swap");

:root {
  --ff-display: "Fraunces", "Nunito Sans", Georgia, serif;
  --aurora-speed: 32s;

  /* Tighter rhythm — was clamp(72px, 9vw, 128px) */
  --section-y: clamp(48px, 5.5vw, 80px);
  --s-7: 36px;  /* was 48 */
  --s-8: 48px;  /* was 64 */
  --s-9: 60px;  /* was 80 */
  --s-10: 80px; /* was 120 */
}

/* Trim the lead → grid gap inside every section. */
.section__lead { margin-bottom: var(--s-5); }

/* Hero: slim top/bottom padding too. */
.hero { padding: clamp(56px, 7vw, 96px) 0 clamp(48px, 6vw, 80px); }

/* Hero photo: cover, slight tint to match brand. */
.hero__visual {
  aspect-ratio: 4 / 5;
  position: relative;
}
.hero__visual img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: contrast(1.05) saturate(0.85) brightness(0.9);
}
.hero__visual::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(11,16,32,0.10) 0%, rgba(11,16,32,0.55) 100%),
              linear-gradient(135deg, rgba(46,92,242,0.18), transparent 60%);
  pointer-events: none;
  border-radius: inherit;
}

/* CTA band and footer also use their own paddings — tighten. */
.cta-band { padding: clamp(48px, 6vw, 80px) 0; }
.site-footer { padding: clamp(48px, 6vw, 72px) 0 var(--s-5); }

/* ---------- Hero: quiet single-tone aurora ---------- */
.hero { isolation: isolate; }

/* Replace busy multi-color blob with a calm blue-on-navy field. */
.hero::before {
  animation: aurora-drift var(--aurora-speed) cubic-bezier(.45,.05,.55,.95) infinite alternate;
  background:
    radial-gradient(closest-side at calc(78% + var(--mx, 0) * 4%) calc(22% + var(--my, 0) * 3%), rgba(46, 92, 242, 0.32), transparent 72%),
    radial-gradient(closest-side at calc(18% - var(--mx, 0) * 4%) calc(58% + var(--my, 0) * 2%), rgba(46, 92, 242, 0.22), transparent 72%) !important;
  opacity: 0.85 !important;
  filter: blur(90px);
  mix-blend-mode: normal !important;
  transition: background 480ms cubic-bezier(.2,.7,.2,1);
}
@keyframes aurora-drift {
  0%   { filter: blur(90px); }
  50%  { filter: blur(110px); }
  100% { filter: blur(90px); }
}

/* Remove decorative floating dots — too playful for stricter look. */
.hero__inner::before,
.hero__inner::after { content: none; }

/* ---------- Hero title: editorial display serif, no gradient ---------- */
.hero__title {
  font-family: var(--ff-display);
  font-weight: 400;
  font-variation-settings: "opsz" 144;
  letter-spacing: -0.025em;
  line-height: 1.02;
  color: #FFFFFF;
}
.hero__title .word {
  display: inline-block;
  opacity: 0;
  transform: translateY(0.3em);
  animation: word-rise 600ms cubic-bezier(.2,.8,.2,1) forwards;
  animation-delay: calc(var(--wi, 0) * 50ms + 100ms);
}
.hero__title .word--accent {
  font-style: italic;
  font-weight: 500;
  color: #FFFFFF;
}
@keyframes word-rise {
  to { opacity: 1; transform: translate(0); }
}

/* Eyebrow chip — quiet outline only. */
.hero__eyebrow {
  padding: 6px 14px 6px 12px;
  border: 1px solid rgba(255,255,255,0.16);
  border-radius: 999px;
  background: transparent;
  color: rgba(230, 234, 245, 0.78);
}
.hero__eyebrow::before {
  background: rgba(255, 255, 255, 0.85);
  box-shadow: none;
  animation: none;
}

/* ---------- Magnetic primary CTA — kept, sheen removed ---------- */
.btn--primary {
  position: relative;
  transform: translate3d(var(--mag-x, 0px), var(--mag-y, 0px), 0);
  transition: transform 320ms cubic-bezier(.2,.7,.2,1),
              box-shadow var(--dur-2) var(--ease),
              background-position var(--dur-2) var(--ease);
}

/* ---------- Hero metrics: serif numerals, no spark ---------- */
.hero__metrics li strong {
  font-family: var(--ff-display);
  font-weight: 600;
  font-variation-settings: "opsz" 144;
}

/* ---------- Logo marquee: kept (slower, more subdued) ---------- */
#trusted .logos {
  display: flex !important;
  grid-template-columns: none !important;
  gap: clamp(40px, 6vw, 88px);
  width: max-content;
  align-items: center;
  animation: marquee 60s linear infinite;
}
#trusted .container {
  position: relative;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 10%, #000 90%, transparent 100%);
          mask-image: linear-gradient(90deg, transparent 0, #000 10%, #000 90%, transparent 100%);
}
#trusted .logos__item {
  flex: 0 0 auto;
  filter: grayscale(1) brightness(1.4);
  opacity: 0.45;
  transition: opacity 320ms ease, transform 320ms ease;
}
#trusted .logos__item:hover {
  opacity: 0.9;
  transform: translateY(-1px);
}
#trusted .logos:hover { animation-play-state: paused; }
@keyframes marquee {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

/* ---------- Section headings: display serif, italic accent in same color ---------- */
.section h2 {
  font-family: var(--ff-display);
  font-weight: 400;
  font-variation-settings: "opsz" 144;
  letter-spacing: -0.025em;
}
.section h2 em {
  font-style: italic;
  font-weight: 500;
  color: inherit;
}

/* ---------- Service cards: subtle tilt + cool highlight only ---------- */
.card--service {
  --tilt-x: 0;
  --tilt-y: 0;
  transform-style: preserve-3d;
  transform: perspective(1100px) rotateY(calc(var(--tilt-x) * 2deg)) rotateX(calc(var(--tilt-y) * -2deg));
}
.card--service::after {
  content: "";
  position: absolute;
  inset: -30%;
  background: radial-gradient(
    260px 260px at calc(50% + var(--tilt-x, 0) * 20%) calc(50% + var(--tilt-y, 0) * 20%),
    rgba(46, 92, 242, 0.10),
    transparent 65%);
  opacity: 0;
  transition: opacity 320ms ease;
  pointer-events: none;
  z-index: 0;
}
.card--service:hover::after { opacity: 1; }
.card--service > * { position: relative; z-index: 1; }

/* ---------- Industry cards: small zoom on cover ---------- */
.card--industry .card__cover { overflow: hidden; border-radius: var(--radius-md); }
.card--industry .card__cover img {
  transition: transform 700ms cubic-bezier(.2,.7,.2,1);
}
.card--industry:hover .card__cover img { transform: scale(1.04); }

/* ---------- Process: keep brand-yellow circle, remove conic gradient ---------- */
.process__num {
  font-family: var(--ff-display);
  font-weight: 700;
}

/* ---------- Testimonials: serif quote, gray accent ---------- */
.testimonial__quote {
  font-family: var(--ff-display);
  font-weight: 400;
  font-variation-settings: "opsz" 144;
  font-size: 1.3rem;
  line-height: 1.45;
  letter-spacing: -0.005em;
}
.testimonial::before {
  font-family: var(--ff-display);
  font-size: 6rem;
  color: var(--c-brand);
  opacity: 0.35;
}

/* ---------- CTA band: keep quiet, remove sweep ---------- */
.cta-band h2 {
  font-family: var(--ff-display);
  font-weight: 400;
}

/* ---------- Scroll-progress: single-tone yellow ---------- */
.scroll-progress::before {
  background: var(--c-brand);
  box-shadow: none;
}

/* ---------- Sticky CTA: remove pulse ---------- */
body.is-past-hero .sticky-cta { animation: none; }

/* ---------- Scroll-reveal ---------- */
.reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.55s ease, transform 0.55s ease;
  transition-delay: var(--reveal-delay, 0ms);
}
.reveal.is-visible {
  opacity: 1;
  transform: none;
}

/* Testimonial case link */
.testimonial__case-link {
  font-size: 0.8rem;
  color: var(--c-cta);
  text-decoration: none;
  margin-left: auto;
  white-space: nowrap;
  opacity: 0.75;
  flex-shrink: 0;
}
.testimonial__case-link:hover { opacity: 1; text-decoration: underline; }

/* ---------- Testimonials slider ---------- */
.ts-track {
  display: flex;
  gap: 20px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  -ms-overflow-style: none;
  padding-bottom: 6px;
  cursor: grab;
}
.ts-track.is-dragging { cursor: grabbing; user-select: none; }
.ts-track::-webkit-scrollbar { display: none; }
.ts-track .testimonial {
  flex: 0 0 360px;
  scroll-snap-align: start;
}
@media (max-width: 599px) {
  .ts-track .testimonial { flex-basis: calc(100vw - 3rem); }
}

.ts-controls {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  margin-top: var(--s-4);
  flex-wrap: wrap;
}
.ts-arrows { display: flex; gap: 8px; }
.ts-counter {
  font-family: var(--ff-display);
  font-size: 0.875rem;
  color: var(--c-text-muted);
  min-width: 3.5em;
}
.ts-btn {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 1px solid var(--c-border);
  background: var(--c-bg-soft);
  color: var(--c-text);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.2s, border-color 0.2s, color 0.2s;
  font-size: 1.1rem;
  line-height: 1;
  flex-shrink: 0;
}
.ts-btn:hover:not(:disabled) { background: var(--c-bg-dark); border-color: var(--c-cta); color: var(--c-cta); }
.ts-btn:disabled { opacity: 0.3; cursor: not-allowed; }
.ts-see-more { margin-left: auto; }

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  .hero::before { animation: none !important; }
  .hero__title .word { opacity: 1; transform: none; animation: none; }
  #trusted .logos { animation: none; }
  .spark { animation: none !important; opacity: 0.85 !important; }
  .hero__earth-img { animation: none !important; transform: scale(1.08) !important; }
  .reveal, .reveal.is-visible { opacity: 1; transform: none; transition: none; }
}

/* ---------- Hero earth: vivid photo + slow rotation pan ---------- */
.hero__visual--earth { overflow: hidden; }
.hero__visual--earth .hero__earth-img {
  filter: saturate(1.55) contrast(1.18) brightness(1.05);
  transform-origin: center center;
  animation: hero-earth-spin 60s linear infinite;
  will-change: transform;
}
.hero__visual--earth::after {
  background: linear-gradient(180deg, rgba(11,16,32,0.05) 0%, rgba(11,16,32,0.30) 100%) !important;
}

/* Service hero photo: same vivid Earth look as main, but static. */
.hero--service .hero__visual img {
  filter: saturate(1.45) contrast(1.15) brightness(1.02);
}
.hero--service .hero__visual::after {
  background: linear-gradient(180deg, rgba(11,16,32,0.05) 0%, rgba(11,16,32,0.30) 100%);
}

/* ---------- Top nav: Industries dropdown ---------- */
.nav__item--has-dropdown { position: relative; }
.nav__item--has-dropdown > .nav__link { display: inline-flex; align-items: center; gap: 6px; }
.nav__item--has-dropdown > .nav__link::before {
  content: "";
  display: inline-block;
  width: 0;
  height: 0;
  order: 1;
  border-left: 4px solid transparent;
  border-right: 4px solid transparent;
  border-top: 4px solid currentColor;
  opacity: 0.7;
  transition: transform var(--dur-2) var(--ease);
}
.nav__item--has-dropdown:hover > .nav__link::before,
.nav__item--has-dropdown:focus-within > .nav__link::before { transform: rotate(180deg); }

.nav__dropdown {
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translate(-50%, -6px);
  min-width: 240px;
  margin: 0;
  padding: 8px 0;
  list-style: none;
  background: rgba(11, 16, 32, 0.96);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid var(--c-border);
  border-radius: var(--radius-md);
  box-shadow: 0 12px 32px rgba(0,0,0,0.32);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity var(--dur-2) var(--ease),
              visibility var(--dur-2) var(--ease),
              transform var(--dur-2) var(--ease);
  z-index: 1000;
}
.nav__item--has-dropdown:hover > .nav__dropdown,
.nav__item--has-dropdown:focus-within > .nav__dropdown {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translate(-50%, 0);
}
.nav__dropdown li { margin: 0; }
.nav__dropdown a {
  display: block;
  padding: 10px 18px;
  color: var(--c-text);
  font-size: 0.9375rem;
  font-weight: 600;
  text-decoration: none;
  transition: background var(--dur-1) var(--ease), color var(--dur-1) var(--ease);
}
.nav__dropdown a:hover,
.nav__dropdown a:focus-visible {
  background: rgba(46, 92, 242, 0.18);
  color: var(--c-brand);
  outline: none;
}
.nav__dropdown__all-li {
  border-top: 1px solid rgba(154, 163, 184, 0.18);
  margin-top: 6px;
  padding-top: 2px;
}
.nav__dropdown a.nav__dropdown__all {
  color: var(--c-cta);
  font-weight: 800;
  letter-spacing: 0.01em;
}
.nav__dropdown a.nav__dropdown__all:hover,
.nav__dropdown a.nav__dropdown__all:focus-visible {
  color: var(--c-brand);
  background: rgba(46, 92, 242, 0.22);
}

@media (max-width: 1100px) {
  /* Mobile: dropdown becomes inline submenu, always visible */
  .nav__item--has-dropdown > .nav__link::before { display: none; }
  .nav__dropdown {
    position: static;
    transform: none;
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    background: transparent;
    border: 0;
    box-shadow: none;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    padding: 0 0 var(--s-3) var(--s-4);
    min-width: 0;
  }
  .nav__dropdown a {
    padding: var(--s-2) 0;
    font-size: 1rem;
    font-weight: 500;
    color: var(--c-text-muted, currentColor);
    opacity: 0.85;
  }
  .nav__dropdown a:hover { background: transparent; }
  .nav__dropdown__all-li {
    border-top: 1px solid rgba(154, 163, 184, 0.18);
    margin-top: var(--s-2);
    padding-top: var(--s-1);
  }
  .nav__dropdown a.nav__dropdown__all {
    color: var(--c-cta);
    font-weight: 800;
    opacity: 1;
  }
}

@keyframes hero-earth-spin {
  0%   { transform: scale(1.18) translateX(-4%); }
  50%  { transform: scale(1.18) translateX(4%);  }
  100% { transform: scale(1.18) translateX(-4%); }
}

/* ---------- Hero earth: twinkling city points ---------- */
.hero__visual--earth .hero__sparkles {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  mix-blend-mode: screen;
  z-index: 2;
  animation: hero-earth-spin 60s linear infinite;
}
.spark {
  fill: url(#hero-spark);
  opacity: 0;
  transform-box: fill-box;
  transform-origin: center;
  animation: spark-twinkle 2.4s ease-in-out infinite;
  filter: drop-shadow(0 0 3px #FFE7A8);
}
.spark[data-cool="1"] {
  fill: url(#hero-spark-cool);
  filter: drop-shadow(0 0 3px #9DD0FF);
}

@keyframes spark-twinkle {
  0%, 100% { opacity: 0.15; transform: scale(0.7); }
  50%      { opacity: 1;    transform: scale(1.4); }
}

/* Stagger ~65 sparkles with pseudo-random delays/durations */
.spark:nth-child(8n+1) { animation-delay: 0.0s;  animation-duration: 2.2s; }
.spark:nth-child(8n+2) { animation-delay: 0.4s;  animation-duration: 3.1s; }
.spark:nth-child(8n+3) { animation-delay: 0.9s;  animation-duration: 2.6s; }
.spark:nth-child(8n+4) { animation-delay: 1.3s;  animation-duration: 3.4s; }
.spark:nth-child(8n+5) { animation-delay: 1.7s;  animation-duration: 2.4s; }
.spark:nth-child(8n+6) { animation-delay: 2.1s;  animation-duration: 2.9s; }
.spark:nth-child(8n+7) { animation-delay: 2.5s;  animation-duration: 3.2s; }
.spark:nth-child(8n+8) { animation-delay: 2.8s;  animation-duration: 2.7s; }

/* ---------- card__icon: render data-icon as inline SVG via mask ---------- */
.card__icon[data-icon]::before {
  content: "";
  display: block;
  width: 32px;
  height: 32px;
  background-color: currentColor;
  -webkit-mask: var(--icon) center / contain no-repeat;
          mask: var(--icon) center / contain no-repeat;
}
.card__icon[data-icon="rocket"]   { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z'/><path d='M12 15l-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z'/><path d='M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0'/><path d='M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5'/></svg>"); }
.card__icon[data-icon="shield"]   { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z'/></svg>"); }
.card__icon[data-icon="cpu"]      { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='4' y='4' width='16' height='16' rx='2'/><rect x='9' y='9' width='6' height='6'/><path d='M9 1v3M15 1v3M9 20v3M15 20v3M20 9h3M20 14h3M1 9h3M1 14h3'/></svg>"); }
.card__icon[data-icon="gauge"]    { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 14l4-4'/><path d='M3.34 19a10 10 0 1 1 17.32 0'/></svg>"); }
.card__icon[data-icon="users"]    { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2'/><circle cx='9' cy='7' r='4'/><path d='M23 21v-2a4 4 0 0 0-3-3.87'/><path d='M16 3.13a4 4 0 0 1 0 7.75'/></svg>"); }
.card__icon[data-icon="layers"]   { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polygon points='12 2 2 7 12 12 22 7 12 2'/><polyline points='2 17 12 22 22 17'/><polyline points='2 12 12 17 22 12'/></svg>"); }
.card__icon[data-icon="bolt"]     { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polygon points='13 2 3 14 12 14 11 22 21 10 12 10 13 2'/></svg>"); }
.card__icon[data-icon="layout"]   { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='3' width='18' height='18' rx='2' ry='2'/><line x1='3' y1='9' x2='21' y2='9'/><line x1='9' y1='21' x2='9' y2='9'/></svg>"); }
.card__icon[data-icon="globe"]    { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='10'/><line x1='2' y1='12' x2='22' y2='12'/><path d='M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z'/></svg>"); }
.card__icon[data-icon="brain"]    { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M9.5 2A2.5 2.5 0 0 1 12 4.5v15a2.5 2.5 0 0 1-4.96.44 2.5 2.5 0 0 1-2.96-3.08 3 3 0 0 1-.34-5.58 2.5 2.5 0 0 1 1.32-4.24 2.5 2.5 0 0 1 1.98-3A2.5 2.5 0 0 1 9.5 2z'/><path d='M14.5 2A2.5 2.5 0 0 0 12 4.5v15a2.5 2.5 0 0 0 4.96.44 2.5 2.5 0 0 0 2.96-3.08 3 3 0 0 0 .34-5.58 2.5 2.5 0 0 0-1.32-4.24 2.5 2.5 0 0 0-1.98-3A2.5 2.5 0 0 0 14.5 2z'/></svg>"); }
.card__icon[data-icon="chart"]    { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><line x1='12' y1='20' x2='12' y2='10'/><line x1='18' y1='20' x2='18' y2='4'/><line x1='6' y1='20' x2='6' y2='16'/></svg>"); }
.card__icon[data-icon="check"]    { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>"); }
.card__icon[data-icon="cloud"]    { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z'/></svg>"); }
.card__icon[data-icon="cube"]     { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z'/><polyline points='3.27 6.96 12 12.01 20.73 6.96'/><line x1='12' y1='22.08' x2='12' y2='12'/></svg>"); }
.card__icon[data-icon="database"] { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><ellipse cx='12' cy='5' rx='9' ry='3'/><path d='M21 12c0 1.66-4 3-9 3s-9-1.34-9-3'/><path d='M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5'/></svg>"); }
.card__icon[data-icon="device"]   { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='5' y='2' width='14' height='20' rx='2' ry='2'/><line x1='12' y1='18' x2='12.01' y2='18'/></svg>"); }
.card__icon[data-icon="eye"]      { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z'/><circle cx='12' cy='12' r='3'/></svg>"); }
.card__icon[data-icon="git"]      { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><line x1='6' y1='3' x2='6' y2='15'/><circle cx='18' cy='6' r='3'/><circle cx='6' cy='18' r='3'/><path d='M18 9a9 9 0 0 1-9 9'/></svg>"); }
.card__icon[data-icon="pipeline"] { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='2 12 7 12 10 5 14 19 17 12 22 12'/></svg>"); }
.card__icon[data-icon="search"]   { --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><line x1='21' y1='21' x2='16.65' y2='16.65'/></svg>"); }

/* ============ Cases index: hero — blog-style dark aurora ============ */
.cases-hero {
  position: relative;
  padding: 32px 0 22px;
  background: radial-gradient(120% 100% at 50% 0%, var(--c-bg-dark) 0%, var(--c-bg) 60%);
  text-align: left;
  overflow: hidden;
  isolation: isolate;
}
.cases-hero::before {
  content: "";
  position: absolute;
  inset: -10%;
  background:
    radial-gradient(closest-side at 75% 20%, rgba(46,92,242,0.5), transparent 70%),
    radial-gradient(closest-side at 15% 55%, rgba(46,92,242,0.35), transparent 70%),
    radial-gradient(closest-side at 50% 95%, rgba(255,211,0,0.3), transparent 70%);
  filter: blur(80px);
  mix-blend-mode: screen;
  opacity: 0.55;
  z-index: -2;
  pointer-events: none;
}
.cases-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.6 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  background-size: 160px 160px;
  opacity: 0.04;
  z-index: -1;
  pointer-events: none;
  mix-blend-mode: overlay;
}
.cases-hero > .container { position: relative; z-index: 1; }
.cases-hero__inner {
  display: grid;
  grid-template-columns: 0.85fr 1.15fr;
  gap: clamp(40px, 5vw, 72px);
  align-items: center;
  max-width: none;
  margin: 0;
  padding: 0;
}
.cases-hero__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: #B6C7FF;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-size: 12px;
  font-weight: 800;
  margin: 0 0 14px;
}
.cases-hero__eyebrow::before {
  content: "";
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--c-brand);
  box-shadow: 0 0 0 0 rgba(255,211,0,0.6);
  animation: cases-hero-pulse 2s ease-out infinite;
  flex-shrink: 0;
}
@keyframes cases-hero-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(255,211,0,0.6); }
  70%  { box-shadow: 0 0 0 10px rgba(255,211,0,0); }
  100% { box-shadow: 0 0 0 0 rgba(255,211,0,0); }
}
.cases-hero h1 {
  font-family: var(--ff-display);
  font-weight: 400;
  font-variation-settings: "opsz" 144;
  font-size: clamp(34px, 4vw, 54px);
  line-height: 1.05;
  margin: 0 0 14px;
  color: #FFFFFF;
  letter-spacing: -0.025em;
  text-align: left;
  white-space: nowrap;
}
.cases-hero__lead {
  font-size: 16px;
  line-height: 1.6;
  color: rgba(230,234,245,0.82);
  max-width: 560px;
  margin: 0 0 24px;
}
.cases-hero__stats {
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
  justify-content: center;
  margin-top: 0;
}
.cases-hero__stats > div {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
.cases-hero__stats strong {
  font-size: 26px;
  font-weight: 800;
  color: #FFFFFF;
  line-height: 1;
}
.cases-hero__stats span {
  font-size: 11px;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  color: rgba(230,234,245,0.55);
  margin-top: 6px;
}
.cases-hero__visual {
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 24px 60px rgba(0,0,0,0.55), 0 0 0 1px rgba(255,255,255,0.08) inset;
}
.cases-hero__mosaic {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px;
  background: var(--c-bg-dark);
}
.cases-hero__mosaic a {
  display: block;
  overflow: hidden;
  aspect-ratio: 4/3;
}
.cases-hero__mosaic img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  transition: transform 0.5s ease;
}
.cases-hero__mosaic a:hover img { transform: scale(1.06); }
@media (max-width: 860px) {
  .cases-hero__inner { grid-template-columns: 1fr; gap: 32px; }
  .cases-hero__visual { order: -1; }
}
@media (prefers-reduced-motion: reduce) {
  .cases-hero::before { display: none; }
  .cases-hero__eyebrow::before { animation: none; }
  .cases-hero__mosaic img { transition: none !important; }
}

/* sticky dark toolbar — mirrors .blog-toolbar */
.cases-toolbar {
  position: sticky;
  top: 0;
  z-index: 30;
  background: rgba(11, 16, 32, 0.88);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  padding: 16px 0;
}
.section--cases-grid { padding-top: 24px; }

.cases-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 14px;
  margin-bottom: 14px;
}
.cases-search {
  position: relative;
  flex: 1;
  min-width: 200px;
  max-width: 380px;
}
.cases-search__icon {
  position: absolute;
  left: 14px;
  top: 50%;
  transform: translateY(-50%);
  color: rgba(255, 255, 255, 0.45);
  pointer-events: none;
  width: 17px;
  height: 17px;
  flex-shrink: 0;
}
.cases-search__input {
  width: 100%;
  padding: 11px 16px 11px 42px;
  background: rgba(255, 255, 255, 0.06);
  border: 1.5px solid rgba(255, 255, 255, 0.14);
  border-radius: 12px;
  color: #fff;
  font-size: 0.9375rem;
  font-family: inherit;
  outline: none;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
  box-sizing: border-box;
}
.cases-search__input::placeholder { color: rgba(255, 255, 255, 0.45); }
.cases-search__input:focus {
  border-color: var(--c-cta);
  box-shadow: 0 0 0 4px rgba(46, 92, 242, 0.18);
  background: rgba(255, 255, 255, 0.10);
}

.cases-sort {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}
.cases-sort__label {
  font-size: 0.8125rem;
  color: rgba(230, 234, 245, 0.55);
  margin-right: 2px;
}
.sort-btn {
  padding: 8px 14px;
  background: rgba(255, 255, 255, 0.06);
  border: 1.5px solid rgba(255, 255, 255, 0.10);
  border-radius: var(--radius-sm);
  color: #e6eaf5;
  font-size: 0.8125rem;
  font-family: inherit;
  cursor: pointer;
  transition: all 0.2s ease;
  line-height: 1;
}
.sort-btn:hover { background: rgba(255, 255, 255, 0.12); border-color: rgba(255, 255, 255, 0.18); }
.sort-btn--active {
  background: var(--c-cta);
  border-color: var(--c-cta);
  color: #fff;
  font-weight: 700;
}

.cases-count {
  font-size: 0.8125rem;
  color: rgba(230, 234, 245, 0.55);
  white-space: nowrap;
  margin: 0;
  margin-left: auto;
}
@media (max-width: 599px) {
  .cases-count { margin-left: 0; }
  .cases-sort { width: 100%; }
}

.cases-empty {
  display: none;
  grid-column: 1 / -1;
  text-align: center;
  padding: 56px 0 32px;
  color: var(--c-text-muted);
}
.cases-empty__icon {
  margin: 0 auto 16px;
  opacity: 0.35;
  display: block;
}
.cases-empty__title {
  font-size: 1.125rem;
  font-weight: 800;
  color: var(--c-text);
  margin: 0 0 8px;
}
.cases-empty__text { margin: 0; font-size: 0.9375rem; }
.cases-empty__clear {
  background: none;
  border: none;
  color: var(--c-cta);
  font: inherit;
  font-weight: 700;
  cursor: pointer;
  padding: 0;
  text-decoration: underline;
  text-underline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
  .cases-search__input,
  .sort-btn { transition: none !important; }
}

/* --- industry badge on case cards --- */
.case-card__industry {
  display: inline-block;
  padding: 3px 10px;
  background: rgba(46, 92, 242, 0.08);
  border: 1px solid rgba(46, 92, 242, 0.18);
  border-radius: 100px;
  font-size: 0.6875rem;
  font-weight: 700;
  color: var(--c-cta);
  letter-spacing: 0.02em;
  text-transform: uppercase;
  margin-bottom: 8px;
}

/* --- industry filter pills (dark toolbar) --- */
.cases-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  width: 100%;
  margin-bottom: 0;
}
.filter-btn {
  padding: 7px 14px;
  background: rgba(255, 255, 255, 0.06);
  border: 1.5px solid rgba(255, 255, 255, 0.10);
  border-radius: 100px;
  color: #e6eaf5;
  font-size: 0.8125rem;
  font-family: inherit;
  font-weight: 700;
  cursor: pointer;
  transition: border-color 0.2s ease, color 0.2s ease, background 0.2s ease;
  line-height: 1;
  white-space: nowrap;
}
.filter-btn:hover { background: rgba(255, 255, 255, 0.12); border-color: rgba(255, 255, 255, 0.18); }
.filter-btn--active {
  background: var(--c-brand);
  border-color: var(--c-brand);
  color: #0b1020;
  font-weight: 800;
}
@media (prefers-reduced-motion: reduce) {
  .filter-btn { transition: none !important; }
}

/* ── Lightbox ──────────────────────────────────────────────────────────── */
.case-feature__media img,
.case-detail__hero-cover img { cursor: zoom-in; }
.lightbox-overlay {
  position: fixed;
  inset: 0;
  z-index: 9000;
  background: rgba(11, 16, 32, 0.93);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.25s ease, visibility 0.25s ease;
}
.lightbox-overlay.is-open { opacity: 1; visibility: visible; }
.lightbox-overlay__img {
  max-width: 100%;
  max-height: 90vh;
  border-radius: 8px;
  display: block;
  box-shadow: 0 32px 80px rgba(0, 0, 0, 0.55);
  object-fit: contain;
}
.lightbox-close {
  position: fixed;
  top: 16px;
  right: 20px;
  width: 44px;
  height: 44px;
  background: rgba(255, 255, 255, 0.12);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 50%;
  color: #fff;
  font-size: 1.375rem;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background 0.2s ease;
  z-index: 9001;
}
.lightbox-close:hover { background: rgba(255, 255, 255, 0.26); }
@media (prefers-reduced-motion: reduce) {
  .lightbox-overlay { transition: none !important; }
}

/* ---------- Whole-card clickable (stretched link) ---------- */
/* Bug fix: alive.css `.card--service > * { position: relative; z-index: 1 }` was
   trapping the link's ::before overlay inside the link's own stacking context,
   so the overlay sized to the "Learn more" anchor only — not the full card.
   Drop .card__link back to static so ::before's containing block escapes up to
   .card (which is position: relative via main.css:849). The link's text still
   paints (transparent overlay sits above), and clicks anywhere on the card
   hit the overlay and navigate. */
article.card--service > .card__link,
article.card--industry > .card__link { position: static; }
article.card--service > .card__link::before,
article.card--industry > .card__link::before { z-index: 2; }

/* ---------- Linked chips ---------- */
a.chip{color:inherit;text-decoration:none;transition:background .15s,color .15s}
a.chip:hover,a.chip:focus-visible{background:var(--color-navy,#0f172a);color:#fff;border-color:transparent}
