.container {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 48px;
}

@media (max-width: 768px) {
  .container { padding: 0 24px; }
}

.container--narrow { max-width: 800px; }

.page-wrapper {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

.page-wrapper main { flex: 1; }

/* Sections */
.section { padding: 100px 0; }
.section--sm { padding: 80px 0; }

.section--dark {
  background-color: var(--color-bg-dark);
  color: var(--color-bg);
}
.section--dark h2, .section--dark h3 { color: var(--color-bg); }
.section--dark p { color: #aaa; }

.section--alt { background-color: var(--color-bg-alt); }

/* Grid */
.grid { display: grid; gap: var(--space-md); }
.grid--2 { grid-template-columns: 1fr; }
.grid--3 { grid-template-columns: 1fr; }
.grid--4 { grid-template-columns: 1fr; }

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

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

/* Text helpers */
.text-center { text-align: center; }

/* Spacing */
.mb-sm { margin-bottom: var(--space-sm); }
.mb-md { margin-bottom: var(--space-md); }
.mb-lg { margin-bottom: var(--space-lg); }

main { padding-top: var(--header-height); }

/* Topographic background pattern */
.topo-bg {
  position: relative;
}

.topo-bg::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("../img/topo-bg.png");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  opacity: 0.35;
  pointer-events: none;
}

.topo-bg > * {
  position: relative;
}
