/* ===================================
   Layout Utilities
   =================================== */

/* Container */
.container {
  width: 100%;
  max-width: var(--container-max-width);
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--container-padding);
  padding-right: var(--container-padding);
}

/* Section Spacing */
section {
  padding-top: var(--spacing-xl);
  padding-bottom: var(--spacing-xl);
}

/* Grid Utilities */
.grid {
  display: grid;
  gap: var(--spacing-md);
}

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

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

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

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

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

/* Gap Utilities */
.gap-xs {
  gap: var(--spacing-xs);
}

.gap-sm {
  gap: var(--spacing-sm);
}

.gap-md {
  gap: var(--spacing-md);
}

.gap-lg {
  gap: var(--spacing-lg);
}

.gap-xl {
  gap: var(--spacing-xl);
}

/* Flexbox Utilities */
.flex {
  display: flex;
}

.flex-row {
  flex-direction: row;
}

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

.flex-wrap {
  flex-wrap: wrap;
}

.flex-nowrap {
  flex-wrap: nowrap;
}

/* Justify Content */
.justify-start {
  justify-content: flex-start;
}

.justify-center {
  justify-content: center;
}

.justify-end {
  justify-content: flex-end;
}

.justify-between {
  justify-content: space-between;
}

.justify-around {
  justify-content: space-around;
}

.justify-evenly {
  justify-content: space-evenly;
}

/* Align Items */
.items-start {
  align-items: flex-start;
}

.items-center {
  align-items: center;
}

.items-end {
  align-items: flex-end;
}

.items-stretch {
  align-items: stretch;
}

.items-baseline {
  align-items: baseline;
}

/* Spacing Utilities */
.m-0 { margin: 0; }
.mt-0 { margin-top: 0; }
.mr-0 { margin-right: 0; }
.mb-0 { margin-bottom: 0; }
.ml-0 { margin-left: 0; }

.m-xs { margin: var(--spacing-xs); }
.mt-xs { margin-top: var(--spacing-xs); }
.mr-xs { margin-right: var(--spacing-xs); }
.mb-xs { margin-bottom: var(--spacing-xs); }
.ml-xs { margin-left: var(--spacing-xs); }

.m-sm { margin: var(--spacing-sm); }
.mt-sm { margin-top: var(--spacing-sm); }
.mr-sm { margin-right: var(--spacing-sm); }
.mb-sm { margin-bottom: var(--spacing-sm); }
.ml-sm { margin-left: var(--spacing-sm); }

.m-md { margin: var(--spacing-md); }
.mt-md { margin-top: var(--spacing-md); }
.mr-md { margin-right: var(--spacing-md); }
.mb-md { margin-bottom: var(--spacing-md); }
.ml-md { margin-left: var(--spacing-md); }

.m-lg { margin: var(--spacing-lg); }
.mt-lg { margin-top: var(--spacing-lg); }
.mr-lg { margin-right: var(--spacing-lg); }
.mb-lg { margin-bottom: var(--spacing-lg); }
.ml-lg { margin-left: var(--spacing-lg); }

.m-xl { margin: var(--spacing-xl); }
.mt-xl { margin-top: var(--spacing-xl); }
.mr-xl { margin-right: var(--spacing-xl); }
.mb-xl { margin-bottom: var(--spacing-xl); }
.ml-xl { margin-left: var(--spacing-xl); }

.p-0 { padding: 0; }
.pt-0 { padding-top: 0; }
.pr-0 { padding-right: 0; }
.pb-0 { padding-bottom: 0; }
.pl-0 { padding-left: 0; }

.p-xs { padding: var(--spacing-xs); }
.pt-xs { padding-top: var(--spacing-xs); }
.pr-xs { padding-right: var(--spacing-xs); }
.pb-xs { padding-bottom: var(--spacing-xs); }
.pl-xs { padding-left: var(--spacing-xs); }

.p-sm { padding: var(--spacing-sm); }
.pt-sm { padding-top: var(--spacing-sm); }
.pr-sm { padding-right: var(--spacing-sm); }
.pb-sm { padding-bottom: var(--spacing-sm); }
.pl-sm { padding-left: var(--spacing-sm); }

.p-md { padding: var(--spacing-md); }
.pt-md { padding-top: var(--spacing-md); }
.pr-md { padding-right: var(--spacing-md); }
.pb-md { padding-bottom: var(--spacing-md); }
.pl-md { padding-left: var(--spacing-md); }

.p-lg { padding: var(--spacing-lg); }
.pt-lg { padding-top: var(--spacing-lg); }
.pr-lg { padding-right: var(--spacing-lg); }
.pb-lg { padding-bottom: var(--spacing-lg); }
.pl-lg { padding-left: var(--spacing-lg); }

.p-xl { padding: var(--spacing-xl); }
.pt-xl { padding-top: var(--spacing-xl); }
.pr-xl { padding-right: var(--spacing-xl); }
.pb-xl { padding-bottom: var(--spacing-xl); }
.pl-xl { padding-left: var(--spacing-xl); }

/* Display Utilities */
.block { display: block; }
.inline-block { display: inline-block; }
.inline { display: inline; }
.hidden { display: none; }

/* Width Utilities */
.w-full { width: 100%; }
.w-auto { width: auto; }

/* Height Utilities */
.h-full { height: 100%; }
.h-screen { height: 100vh; }
.h-auto { height: auto; }

/* Responsive Layout - Tablet (768px - 1024px) */
@media (max-width: 1024px) {
  .container {
    padding-left: var(--spacing-sm);
    padding-right: var(--spacing-sm);
  }
  
  section {
    padding-top: var(--spacing-lg);
    padding-bottom: var(--spacing-lg);
  }
  
  .grid--3 {
    grid-template-columns: repeat(2, 1fr);
  }
  
  .grid--4 {
    grid-template-columns: repeat(2, 1fr);
  }
  
  /* Tablet-specific utilities */
  .tablet\:grid--2 {
    grid-template-columns: repeat(2, 1fr);
  }
  
  .tablet\:flex-column {
    flex-direction: column;
  }
  
  .tablet\:hidden {
    display: none;
  }
}

/* Responsive Layout - Mobile (<768px) */
@media (max-width: 768px) {
  .container {
    padding-left: var(--spacing-sm);
    padding-right: var(--spacing-sm);
  }
  
  section {
    padding-top: var(--spacing-md);
    padding-bottom: var(--spacing-md);
  }
  
  .grid--2,
  .grid--3,
  .grid--4 {
    grid-template-columns: 1fr;
  }
  
  .grid--auto-fit,
  .grid--auto-fill {
    grid-template-columns: 1fr;
  }
  
  /* Mobile-specific utilities */
  .mobile\:flex-column {
    flex-direction: column;
  }
  
  .mobile\:text-center {
    text-align: center;
  }
  
  .mobile\:hidden {
    display: none;
  }
  
  .mobile\:block {
    display: block;
  }
}

/* Desktop-specific utilities */
@media (min-width: 1025px) {
  .desktop\:hidden {
    display: none;
  }
}
