body {
  background-color: var(--color-bg);
  color: var(--color-text);
  overflow-x: hidden;
  transition: background-color var(--transition-base), color var(--transition-base);
}

.container {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--container-padding);
}

section {
  position: relative;
}

.grid {
  display: grid;
  gap: var(--space-lg);
}

.grid-1 {
  grid-template-columns: 1fr;
}

.grid-2 {
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

.grid-3 {
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

.flex {
  display: flex;
}

.flex-center {
  display: flex;
  justify-content: center;
  align-items: center;
}

.flex-col {
  flex-direction: column;
}

@media (min-width: 768px) {
  .grid-2-md {
    grid-template-columns: repeat(2, 1fr);
  }
  .grid-3-md {
    grid-template-columns: repeat(3, 1fr);
  }
}

@media (min-width: 1024px) {
  .grid-3-lg {
    grid-template-columns: repeat(3, 1fr);
  }
}
