/* ==========================================================================
   Solutions page: dark hero with the orbit component, service cards,
   four-step process, project list, closing CTA.
   ========================================================================== */

.ex-heading { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-sm); max-width: 44em; }
.ex-heading__text { color: var(--text-secondary); }
.section-box--dark .ex-heading__text { color: rgba(255, 255, 255, 0.72); }

/* ------------------------------------------------------------------ hero */
.sol-hero__box { display: flex; flex-direction: column; min-height: calc(100vh - 32px); }
.sol-hero__content {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-md);
  padding: 130px 0 24px;
  max-width: 40em;
  position: relative;
  z-index: 2;
}
.sol-hero__title {
  margin: 0;
  font-size: var(--h1-size);
  line-height: var(--h1-lh);
  letter-spacing: var(--h1-ls);
  font-weight: var(--fw-medium);
}
.sol-hero__lead { margin: 0; max-width: 34em; color: var(--text-secondary); }
/* ghost button on the light box */
.button--ghost-dark { color: var(--foreground); border-color: var(--foreground); }
.button--ghost-dark:hover { background-color: var(--foreground); color: var(--background); }
.sol-hero__buttons { display: flex; flex-wrap: wrap; gap: var(--space-sm); margin-top: var(--space-sm); }

/* ----------------------------------------------------------------- orbit */
/* Port of the 21st.dev orbiting-circles component: rings are centred on the
   bottom edge so only the upper half shows; each icon sits on an arm that
   rotates around the ring centre, and counter-rotates itself to stay upright. */
.orbit {
  position: relative;
  flex: 1;
  width: 100%;
  min-height: 440px;
  margin-top: auto;
  overflow: hidden;
  display: flex;
  justify-content: center;
}
.orbit__globe {
  position: absolute;
  bottom: 0;
  left: 50%;
  width: 300px;
  aspect-ratio: 1;
  transform: translate(-50%, 50%);
  pointer-events: none;
  z-index: 1;
}
.orbit__ring {
  position: absolute;
  bottom: 0;
  left: 50%;
  width: var(--size-sm);
  height: var(--size-sm);
  border: 1px solid rgba(9, 138, 203, 0.28);
  border-radius: 50%;
  transform: translate(-50%, 50%);
}
.orbit__arm {
  position: absolute;
  top: 0;
  left: 50%;
  height: 50%;
  margin-left: -32px;
  transform-origin: bottom center;
  display: flex;
  flex-direction: column;
  align-items: center;
  animation: orbit-cw var(--dur) linear infinite;
}
.orbit__ring--ccw .orbit__arm { animation-name: orbit-ccw; }
.orbit__icon {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  margin-top: -32px;
  border: 1px solid rgba(9, 138, 203, 0.18);
  border-radius: 50%;
  background: var(--background);
  box-shadow: 0 8px 24px rgba(9, 138, 203, 0.16);
  animation: counter-cw var(--dur) linear infinite;
}
.orbit__ring--ccw .orbit__icon { animation-name: counter-ccw; }
.orbit__icon img { width: 28px; height: 28px; }

@keyframes orbit-cw   { from { transform: rotate(var(--start)); } to { transform: rotate(calc(var(--start) + 360deg)); } }
@keyframes orbit-ccw  { from { transform: rotate(var(--start)); } to { transform: rotate(calc(var(--start) - 360deg)); } }
@keyframes counter-cw { from { transform: rotate(calc(-1 * var(--start))); } to { transform: rotate(calc(-1 * var(--start) - 360deg)); } }
@keyframes counter-ccw{ from { transform: rotate(calc(-1 * var(--start))); } to { transform: rotate(calc(-1 * var(--start) + 360deg)); } }

@media (min-width: 768px) {
  .orbit { min-height: 520px; }
  .orbit__globe { width: 560px; }
  .orbit__ring { width: var(--size-md); height: var(--size-md); }
  .orbit__icon { width: 72px; height: 72px; margin-top: -36px; }
  .orbit__arm { margin-left: -36px; }
  .orbit__icon img { width: 32px; height: 32px; }
}
@media (prefers-reduced-motion: reduce) {
  .orbit__arm, .orbit__icon { animation-play-state: paused; }
}

/* -------------------------------------------------------------- services */
.service-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-sm);
  margin-top: var(--space-lg);
}
.service-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-sm);
  padding: var(--space-md);
  border-radius: var(--radius-lg);
  background: var(--background);
}
.service-card .icon-circle { margin-bottom: var(--space-xs); }
.service-card__title { margin: 0; font-size: var(--h4-size); line-height: var(--h4-lh); letter-spacing: var(--h4-ls); font-weight: var(--fw-medium); }
.service-card__text { margin: 0; flex: 1; color: var(--text-secondary); font-size: var(--text-small); }
.service-card__example {
  margin: var(--space-xs) 0 0;
  padding-top: var(--space-sm);
  border-top: 1px solid var(--border);
  width: 100%;
  font-size: 1rem;
  color: var(--brand-primary-dark);
}

/* ----------------------------------------------------------------- steps */
.steps__head { display: grid; grid-template-columns: 1fr 0.75fr; gap: var(--space-md); align-items: end; }
.steps__lead { max-width: 30em; }
.steps {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-sm);
  margin: var(--space-xl) 0 0;
  padding: 0;
  list-style: none;
  counter-reset: step;
}
.step {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  padding: var(--space-md) var(--space-md) var(--space-md) 0;
  border-top: 1px solid var(--foreground);
}
.step__number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  margin-bottom: var(--space-xs);
  border-radius: 50%;
  background: var(--foreground);
  color: #fff;
  font-size: 1rem;
  font-variant-numeric: tabular-nums;
}
.step__title { margin: 0; font-size: var(--h4-size); line-height: var(--h4-lh); letter-spacing: var(--h4-ls); font-weight: var(--fw-medium); }
.step__text { margin: 0; flex: 1; color: var(--text-secondary); font-size: var(--text-small); }
.step__meta { margin-top: var(--space-xs); font-size: 1rem; color: var(--brand-primary-dark); }

/* -------------------------------------------------------------- projects */
.project-list { margin-top: var(--space-xl); border-top: 1px solid var(--border-invert); }
.project {
  display: grid;
  grid-template-columns: 0.6fr 1fr 1fr 0.7fr;
  gap: var(--space-lg);
  align-items: start;
  padding: var(--space-lg) 0;
  border-bottom: 1px solid var(--border-invert);
}
.project__meta { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
.project__tag { padding: 6px 12px; border-radius: var(--radius-full); border: 1px solid rgba(255, 255, 255, 0.5); font-size: 0.9375rem; line-height: 1.4; }
.project__client { color: rgba(255, 255, 255, 0.55); font-size: 1rem; }
.project__title { margin: 0; font-size: var(--h3-size); line-height: var(--h3-lh); letter-spacing: var(--h3-ls); font-weight: var(--fw-medium); }
.project__text { margin: 0; color: rgba(255, 255, 255, 0.72); font-size: var(--text-small); }
.project__facts { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 8px; font-size: 1rem; }
.project__facts li { position: relative; padding-left: 18px; color: rgba(255, 255, 255, 0.85); }
.project__facts li::before { content: ''; position: absolute; left: 0; top: 0.6em; width: 8px; height: 8px; border-radius: 50%; background: var(--brand-primary); }

/* ------------------------------------------------------------------- cta */
.sol-cta {
  display: grid;
  grid-template-columns: 1.2fr 0.8fr;
  gap: var(--space-lg);
  align-items: center;
  padding: 48px 40px;
  border-radius: var(--radius-xl);
  background-color: var(--brand-primary);
  background-image: radial-gradient(60% 90% at 100% 50%, rgba(255, 255, 255, 0.18), rgba(255, 255, 255, 0) 70%);
  color: #fff;
}
.sol-cta__title { margin: 0; font-size: var(--h2-size); line-height: var(--h2-lh); letter-spacing: var(--h2-ls); font-weight: var(--fw-normal); }
.sol-cta__text p { margin: var(--space-sm) 0 0; color: rgba(255, 255, 255, 0.88); }
.sol-cta__actions { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-sm); justify-self: end; }
.sol-cta__note { font-size: 1rem; color: rgba(255, 255, 255, 0.8); }

/* --------------------------------------------------------------- tablets */
@media (max-width: 991px) {
  .service-grid { grid-template-columns: repeat(2, 1fr); }
  .steps__head { grid-template-columns: 1fr; align-items: start; }
  .steps { grid-template-columns: repeat(2, 1fr); }
  .project { grid-template-columns: 1fr 1fr; }
  .project__meta { grid-column: 1 / -1; flex-direction: row; align-items: center; }
  .sol-cta { grid-template-columns: 1fr; }
  .sol-cta__actions { justify-self: start; }
}
/* ---------------------------------------------------------------- phones */
@media (max-width: 767px) {
  .sol-hero__content { padding-top: 120px; }
  .sol-hero__title { font-size: 2.5rem; }
  .service-grid, .steps { grid-template-columns: 1fr; }
  .project { grid-template-columns: 1fr; gap: var(--space-sm); }
  .sol-cta { padding: 32px 24px; }
}
