.km-main {
  background: var(--km-soft);
  color: var(--km-text);
}

.km-section {
  position: relative;
  --km-section-pad-y: clamp(3rem, 6vw, 4.5rem);
  --km-section-pad-x: clamp(1.25rem, 3vw, 1.5rem);
  padding: calc(var(--km-section-pad-y) + var(--km-nav-offset, 0px)) var(--km-section-pad-x);
  overflow: hidden;
}

.km-section--viewport {
  min-height: 100vh;
  min-height: 100svh;
  min-height: 100dvh;
  min-height: var(--km-section-min-height);
  display: grid;
  align-content: center;
  box-sizing: border-box;
}

main > .km-main > .km-section:first-child {
  --km-nav-offset: max(calc(var(--km-nav-clearance, 0px) + var(--km-nav-gap, 0px) - var(--km-nav-overlap, 0px) - var(--km-section-pad-y)), 0px);
}

.km-section::before {
  content: "";
  position: absolute;
  inset: clamp(1rem, 2vw, 2rem);
  background: rgba(255, 255, 255, 0.82);
  border-radius: 32px;
  z-index: 0;
}

.km-section--offset::before,
.km-section--offset-large::before {
  inset: clamp(0rem, 1vw, 1.25rem);
  top: 0;
}

.km-shell {
  max-width: 1100px;
  margin: 0 auto;
  position: relative;
  z-index: 1;
}

.km-shell--tall {
  padding-top: 0;
}

.km-grid {
  display: grid;
  gap: 1.75rem;
}

.km-grid-2 {
  display: grid;
  gap: 1.75rem;
}

@media (min-width: 641px) {
  .km-grid-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.km-grid-3 {
  display: grid;
  gap: 1.75rem;
}

@media (min-width: 1025px) {
  .km-grid-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

.km-two-col {
  display: grid;
  gap: 2rem;
}

@media (min-width: 1025px) {
  .km-two-col {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
