/**
 * @file
 * Layout — Grid, container, page structure.
 */

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

@media (min-width: 768px) {
  .container {
    padding-inline: var(--space-xl);
  }
}

@media (min-width: 1440px) {
  .container {
    padding-inline: var(--container-padding);
  }
}

/* Site wrapper — full width, background on body */
.site-wrapper {
  width: 100%;
  background: var(--color-blue-light);
  overflow-x: clip;
}

/* Page layout */
.page {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

.page__main {
  flex: 1;
}

/* Content with sidebar layout */
.layout-with-sidebar {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-xl);
}

@media (min-width: 1024px) {
  .layout-with-sidebar {
    grid-template-columns: 1fr 320px;
  }
}

/* Section spacing */
.section {
  padding-block: var(--space-3xl);
}

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

.section--large {
  padding-block: var(--space-4xl);
}

@media (max-width: 768px) {
  .section {
    padding-block: var(--space-xl);
  }

  .section--large {
    padding-block: var(--space-3xl);
  }
}

/* Grid utilities */
.grid {
  display: grid;
  gap: var(--space-lg);
}

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

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

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

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

/* Visually hidden */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
