/* Page sections, top to bottom. */

/* ---------- Hero ---------- */

.hero {
  position: relative;
  min-height: max(100svh, 46rem);
  display: flex;
  flex-direction: column;
  align-items: center;
  padding-top: calc(var(--header-h) + clamp(4rem, 2rem + 8vh, 9rem));
  overflow: hidden;
  isolation: isolate;
}

.hero__orb {
  top: auto;
  height: 46%;
  font-size: 11px;
  -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 60%, transparent 100%);
  mask-image: linear-gradient(180deg, #000 0%, #000 60%, transparent 100%);
  z-index: -1;
}

.hero__glow {
  position: absolute;
  left: 50%;
  bottom: -30%;
  width: min(95vw, 72rem);
  aspect-ratio: 1;
  translate: -50% 0;
  border-radius: 50%;
  background: radial-gradient(closest-side, var(--color-glow), transparent 72%);
  z-index: -2;
}

.hero__content {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.hero__title {
  margin-top: 1.75rem;
  font-size: var(--text-hero);
  font-weight: 400;
  line-height: 1.02;
  letter-spacing: -0.045em;
  text-wrap: balance;
}

.hero__sub {
  max-width: 34rem;
  margin-top: 1.5rem;
  color: var(--color-text-muted);
  font-size: var(--text-lg);
  font-weight: 300;
  line-height: 1.4;
  text-wrap: balance;
}

.hero__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.75rem;
  margin-top: 2.5rem;
}

.btn--ghost:hover .arrow {
  transform: translateY(3px);
}

.hero__foot {
  position: absolute;
  bottom: 1.75rem;
  left: 0;
  right: 0;
  display: flex;
  justify-content: center;
  gap: 0.5rem;
  font-size: var(--text-xs);
  text-align: center;
}

/* ---------- Capabilities ---------- */

.capabilities {
  border-block: 1px solid var(--color-line);
  background: var(--color-surface);
}

.capabilities__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
}

.cap {
  position: relative;
  padding: 2.5rem 2rem 2.75rem;
  border-left: 1px solid var(--color-line);
  transition: background-color var(--duration-normal) var(--ease-out-expo);
}

.cap:last-child {
  border-right: 1px solid var(--color-line);
}

.cap:hover {
  background: var(--color-surface-raised);
}

.cap__glyph {
  display: block;
  margin-bottom: 2.5rem;
  font-size: var(--text-sm);
  color: var(--color-accent);
}

.cap__title {
  margin-bottom: 0.625rem;
  font-size: var(--text-sm);
  font-weight: 400;
}

.cap p {
  color: var(--color-text-muted);
  font-size: var(--text-sm);
  line-height: 1.55;
}

/* ---------- Statement + figures ---------- */

.statement {
  padding-block: var(--space-section);
}

.statement__head,
.industries__head {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: end;
  gap: 2rem 4rem;
}

.statement__head .lede,
.industries__head .lede {
  justify-self: end;
}

.figures {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  margin: clamp(3rem, 2rem + 4vw, 5rem) 0 0;
  border-top: 1px solid var(--color-line);
  border-left: 1px solid var(--color-line);
}

.figure {
  position: relative;
  display: flex;
  flex-direction: column-reverse;
  justify-content: flex-start;
  min-height: clamp(11rem, 8rem + 8vw, 15rem);
  padding: 1.75rem 1.75rem 1.5rem;
  border-right: 1px solid var(--color-line);
  border-bottom: 1px solid var(--color-line);
  transition: background-color var(--duration-normal) var(--ease-out-expo);
}

.figure:hover {
  background: var(--color-surface);
}

.figure__icon {
  position: absolute;
  top: 0;
  right: 0;
  display: grid;
  place-items: center;
  width: 3rem;
  height: 3rem;
  border-left: 1px solid var(--color-line);
  border-bottom: 1px solid var(--color-line);
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  color: var(--color-accent);
}

.figure__value {
  margin: 0;
  font-family: var(--font-mono);
  font-size: var(--text-2xl);
  line-height: 1;
  letter-spacing: -0.02em;
}

.figure__label {
  margin-top: 0.75rem;
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-mono);
  color: var(--color-text-muted);
}

/* ---------- ASCII band ---------- */

.band {
  position: relative;
  height: clamp(9rem, 6rem + 10vw, 15rem);
  border-block: 1px solid var(--color-line);
}

.band .ascii {
  font-size: 10px;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 15%, #000 85%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 15%, #000 85%, transparent);
}

/* ---------- Stack (tabs) ---------- */

.stack {
  padding-block: var(--space-section);
}

.stack__head {
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: 2.5rem 4rem;
  align-items: end;
  margin-bottom: clamp(2.5rem, 2rem + 3vw, 4.5rem);
}

.stack__head .heading,
.process .heading,
.industries .heading,
.involved .heading {
  margin-top: 0.75rem;
}

.stack__head > *,
.stack__body > * {
  min-width: 0;
}

.stack__lede {
  margin-top: 1.5rem;
}

.tabs__list {
  display: flex;
  flex-direction: column;
  justify-self: end;
  width: min(100%, 22rem);
}

.tab {
  display: flex;
  align-items: baseline;
  gap: 1rem;
  padding: 0.5rem 0;
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  letter-spacing: var(--tracking-mono);
  text-align: left;
  color: var(--color-text-dim);
  transition: color var(--duration-fast) linear;
}

.tab .index {
  transition: color var(--duration-fast) linear;
}

.tab:hover {
  color: var(--color-text-muted);
}

.tab[aria-selected="true"] {
  color: var(--color-text);
}

.tab[aria-selected="true"] .index {
  color: var(--color-accent);
}

.stack__body {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border-top: 1px solid var(--color-line);
}

.stack__visual {
  position: relative;
  min-height: 34rem;
  border-right: 1px solid var(--color-line);
  overflow: hidden;
}

.stack__visual .ascii {
  font-size: 11px;
}

.stack__caption {
  position: absolute;
  left: 0;
  bottom: 1rem;
  font-size: var(--text-2xs);
  color: var(--color-text-dim);
}

.panel {
  outline-offset: -2px;
}

.panel__title {
  padding: 2.25rem 0 2.25rem 2.5rem;
  border-bottom: 1px solid var(--color-line);
  font-size: var(--text-lg);
  font-weight: 400;
  letter-spacing: -0.02em;
}

.panel__items li {
  display: grid;
  grid-template-columns: 3rem 1fr;
  grid-template-rows: auto auto;
  column-gap: 1rem;
  padding: 2.25rem 0 2.25rem 2.5rem;
  border-bottom: 1px solid var(--color-line);
  animation: panel-in var(--duration-slow) var(--ease-out-expo) both;
}

.panel__items li:nth-child(2) {
  animation-delay: 60ms;
}

.panel__items li:nth-child(3) {
  animation-delay: 120ms;
}

.item__glyph {
  grid-row: span 2;
  font-size: var(--text-sm);
  color: var(--color-accent);
}

.item__title {
  margin-bottom: 0.5rem;
  font-size: var(--text-base);
  font-weight: 400;
}

.panel__items p {
  max-width: 30rem;
  color: var(--color-text-muted);
  font-size: var(--text-sm);
}

@keyframes panel-in {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
}

/* ---------- Process ---------- */

.process {
  padding-top: var(--space-section);
  border-top: 1px solid var(--color-line);
}

.process__signal {
  position: relative;
  height: clamp(9rem, 7rem + 8vw, 14rem);
  margin-top: clamp(2rem, 1rem + 3vw, 4rem);
}

.process__signal .ascii {
  font-size: 11px;
}

.process__steps {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  counter-reset: none;
}

.step {
  padding: 1.75rem 2rem 4rem 0;
  border-top: 1px solid var(--color-line-strong);
}

.step + .step {
  padding-left: 2rem;
  border-left: 1px solid var(--color-line);
}

.step__num {
  display: block;
  margin-bottom: 1rem;
  font-size: var(--text-xs);
  text-transform: uppercase;
  color: var(--color-accent);
}

.step p {
  color: var(--color-text-muted);
  font-size: var(--text-sm);
}

/* ---------- Industries ---------- */

.industries {
  padding-block: var(--space-section);
  border-top: 1px solid var(--color-line);
}

.rows {
  margin-top: clamp(2.5rem, 2rem + 3vw, 4.5rem);
  border-top: 1px solid var(--color-line);
}

.row {
  display: grid;
  grid-template-columns: 4rem minmax(0, 1fr) minmax(0, 1.1fr) 2rem;
  align-items: baseline;
  gap: 1.5rem;
  padding: 1.75rem 0;
  border-bottom: 1px solid var(--color-line);
  transition: background-color var(--duration-normal) var(--ease-out-expo);
}

.row__index {
  font-size: var(--text-xs);
  color: var(--color-text-dim);
  transition: color var(--duration-fast) linear;
}

.row__name {
  font-size: var(--text-lg);
  font-weight: 400;
  letter-spacing: -0.02em;
  transition: transform var(--duration-normal) var(--ease-out-expo);
}

.row__desc {
  color: var(--color-text-muted);
  font-size: var(--text-sm);
}

.row__arrow {
  justify-self: end;
  color: var(--color-text-dim);
}

.row:hover {
  background: linear-gradient(90deg, var(--color-surface), transparent);
}

.row:hover .row__index,
.row:hover .row__arrow {
  color: var(--color-accent);
}

.row:hover .row__name {
  transform: translateX(0.5rem);
}

.row:hover .row__arrow {
  transform: translateX(-0.25rem);
}

/* ---------- Get involved ---------- */

.involved {
  padding-block: var(--space-section);
  border-top: 1px solid var(--color-line);
}

.involved__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3rem 4rem;
}

.involved__visual {
  position: relative;
  height: clamp(18rem, 14rem + 12vw, 28rem);
  margin-top: 2rem;
}

.involved__visual .ascii {
  font-size: 9px;
}

.paths {
  align-self: end;
  border-top: 1px solid var(--color-line);
}

.path {
  position: relative;
  display: grid;
  gap: 0.375rem;
  padding: 2rem 3.5rem 2rem 0;
  border-bottom: 1px solid var(--color-line);
}

.path__label {
  font-size: var(--text-2xs);
  text-transform: uppercase;
  color: var(--color-text-dim);
  transition: color var(--duration-fast) linear;
}

.path__title {
  font-size: var(--text-lg);
  letter-spacing: -0.02em;
}

.path__desc {
  color: var(--color-text-muted);
  font-size: var(--text-sm);
}

.path__arrow {
  position: absolute;
  right: 0.5rem;
  top: 50%;
  translate: 0 -50%;
  font-size: var(--text-lg);
  color: var(--color-text-dim);
}

.path:hover .path__label,
.path:hover .path__arrow {
  color: var(--color-accent);
}

.path:hover .path__arrow {
  transform: translateX(0.375rem);
}

/* ---------- Responsive ---------- */

@media (max-width: 1080px) {
  .capabilities__grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .cap:nth-child(2n) {
    border-right: 1px solid var(--color-line);
  }

  .cap:nth-child(-n + 2) {
    border-bottom: 1px solid var(--color-line);
  }

  .process__steps {
    grid-template-columns: repeat(2, 1fr);
  }

  .step:nth-child(3) {
    padding-left: 0;
    border-left: 0;
  }
}

@media (max-width: 860px) {
  .statement__head,
  .industries__head,
  .stack__head,
  .stack__body,
  .involved__grid {
    grid-template-columns: 1fr;
  }

  .statement__head .lede,
  .industries__head .lede,
  .tabs__list {
    justify-self: start;
  }

  .tabs__list {
    flex-direction: row;
    width: calc(100% + var(--gutter) * 2);
    margin-inline: calc(var(--gutter) * -1);
    padding-inline: var(--gutter);
    overflow-x: auto;
    scrollbar-width: none;
    gap: 1.5rem;
    border-bottom: 1px solid var(--color-line);
  }

  .tab {
    flex: none;
    padding-bottom: 0.875rem;
  }

  .tab[aria-selected="true"] {
    box-shadow: inset 0 -1px 0 var(--color-accent);
  }

  .stack__body {
    border-top: 0;
  }

  .stack__visual {
    min-height: 18rem;
    border-right: 0;
    border-bottom: 1px solid var(--color-line);
  }

  .panel__title,
  .panel__items li {
    padding-left: 0;
  }

  .row {
    grid-template-columns: 2.5rem 1fr 1.5rem;
    row-gap: 0.25rem;
  }

  .row__desc {
    grid-column: 2;
    grid-row: 2;
  }

  .row__arrow {
    grid-column: 3;
    grid-row: 1;
  }
}

@media (max-width: 560px) {
  .capabilities__grid,
  .process__steps {
    grid-template-columns: 1fr;
  }

  .capabilities__grid {
    padding-inline: 0;
  }

  .cap,
  .cap:last-child,
  .cap:nth-child(2n) {
    border-left: 0;
    border-right: 0;
    border-bottom: 1px solid var(--color-line);
    padding-inline: var(--gutter);
  }

  .cap:last-child {
    border-bottom: 0;
  }

  .step,
  .step + .step {
    padding: 1.5rem 0 2rem;
    border-left: 0;
  }

  .hero__orb {
    font-size: 8px;
  }

  .hero__foot {
    flex-direction: column;
    gap: 0;
  }

  .figure {
    padding: 1.25rem;
  }
}
