/* ==========================================
   KAYSON INTEGRATIVE BODYWORK
   Layout: Grid, Flexbox, Responsive Utilities
   ========================================== */

@import url('variables.css');

/* ==========================================
   CONTAINER & WRAPPER
   ========================================== */

.container {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 var(--space-4);
}

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

@media (max-width: 480px) {
  .container {
    padding: 0 var(--space-4);
  }
}

.container-sm {
  max-width: 640px;
}

.container-md {
  max-width: 896px;
}

.container-lg {
  max-width: 1200px;
}

/* ==========================================
   FLEXBOX UTILITIES
   ========================================== */

.flex {
  display: flex;
}

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

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

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

.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;
}

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

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

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

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

.gap-2 {
  gap: var(--space-2);
}

.gap-4 {
  gap: var(--space-4);
}

.gap-6 {
  gap: var(--space-6);
}

.gap-8 {
  gap: var(--space-8);
}

/* ==========================================
   GRID UTILITIES
   ========================================== */

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

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

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

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

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

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

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

/* ==========================================
   SECTION & SPACING
   ========================================== */

section {
  padding: var(--space-16) 0;
}

section.section-sm {
  padding: var(--space-12) 0;
}

section.section-lg {
  padding: var(--space-20) 0;
}

@media (max-width: 768px) {
  section {
    padding: var(--space-12) 0;
  }

  section.section-sm {
    padding: var(--space-8) 0;
  }

  section.section-lg {
    padding: var(--space-16) 0;
  }
}

/* ==========================================
   MARGIN & PADDING UTILITIES
   ========================================== */

/* Margin */
.m-0 { margin: 0; }
.m-2 { margin: var(--space-2); }
.m-4 { margin: var(--space-4); }
.m-6 { margin: var(--space-6); }
.m-8 { margin: var(--space-8); }

.mx-auto { margin-left: auto; margin-right: auto; }
.my-auto { margin-top: auto; margin-bottom: auto; }

.mt-2 { margin-top: var(--space-2); }
.mt-4 { margin-top: var(--space-4); }
.mt-6 { margin-top: var(--space-6); }
.mt-8 { margin-top: var(--space-8); }

.mb-2 { margin-bottom: var(--space-2); }
.mb-4 { margin-bottom: var(--space-4); }
.mb-6 { margin-bottom: var(--space-6); }
.mb-8 { margin-bottom: var(--space-8); }

/* Padding */
.p-0 { padding: 0; }
.p-2 { padding: var(--space-2); }
.p-4 { padding: var(--space-4); }
.p-6 { padding: var(--space-6); }
.p-8 { padding: var(--space-8); }

.px-2 { padding-left: var(--space-2); padding-right: var(--space-2); }
.px-4 { padding-left: var(--space-4); padding-right: var(--space-4); }
.px-6 { padding-left: var(--space-6); padding-right: var(--space-6); }

.py-2 { padding-top: var(--space-2); padding-bottom: var(--space-2); }
.py-4 { padding-top: var(--space-4); padding-bottom: var(--space-4); }
.py-6 { padding-top: var(--space-6); padding-bottom: var(--space-6); }
.py-8 { padding-top: var(--space-8); padding-bottom: var(--space-8); }

/* ==========================================
   TEXT UTILITIES
   ========================================== */

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

.text-left {
  text-align: left;
}

.text-right {
  text-align: right;
}

.text-xs { font-size: var(--font-size-xs); }
.text-sm { font-size: var(--font-size-sm); }
.text-base { font-size: var(--font-size-base); }
.text-lg { font-size: var(--font-size-lg); }
.text-xl { font-size: var(--font-size-xl); }

.font-light { font-weight: var(--font-weight-light); }
.font-normal { font-weight: var(--font-weight-normal); }
.font-medium { font-weight: var(--font-weight-medium); }
.font-semibold { font-weight: var(--font-weight-semibold); }
.font-bold { font-weight: var(--font-weight-bold); }

.text-primary { color: var(--color-primary-dark); }
.text-primary-light { color: var(--color-primary-light); }
.text-gray { color: var(--color-gray-600); }
.text-gray-light { color: var(--color-gray-500); }
.text-white { color: var(--color-white); }

/* ==========================================
   DISPLAY UTILITIES
   ========================================== */

.block { display: block; }
.inline-block { display: inline-block; }
.inline { display: inline; }
.hidden { display: none; }
.invisible { visibility: hidden; }

/* Hide on mobile */
@media (max-width: 768px) {
  .hidden-mobile {
    display: none;
  }
}

/* Hide on desktop */
@media (min-width: 769px) {
  .hidden-desktop {
    display: none;
  }
}

/* ==========================================
   RESPONSIVE VISIBILITY
   ========================================== */

@media (max-width: 480px) {
  .hidden-sm {
    display: none;
  }
}

@media (min-width: 481px) and (max-width: 768px) {
  .hidden-md {
    display: none;
  }
}

@media (min-width: 1024px) {
  .hidden-lg {
    display: none;
  }
}

/* ==========================================
   RESPONSIVE PADDING/MARGIN
   ========================================== */

@media (max-width: 768px) {
  section {
    padding: var(--space-8) 0;
  }

  .container {
    padding: 0 var(--space-4);
  }
}

/* ==========================================
   WIDTH & HEIGHT UTILITIES
   ========================================== */

.w-full { width: 100%; }
.w-auto { width: auto; }
.h-auto { height: auto; }
.h-full { height: 100%; }
.h-screen { height: 100vh; }

/* ==========================================
   OVERFLOW UTILITIES
   ========================================== */

.overflow-hidden { overflow: hidden; }
.overflow-auto { overflow: auto; }
.overflow-x-auto { overflow-x: auto; }
.overflow-y-auto { overflow-y: auto; }

/* ==========================================
   POSITION UTILITIES
   ========================================== */

.relative { position: relative; }
.absolute { position: absolute; }
.fixed { position: fixed; }
.sticky { position: sticky; }

/* ==========================================
   Z-INDEX UTILITIES
   ========================================== */

.z-10 { z-index: 10; }
.z-20 { z-index: 20; }
.z-dropdown { z-index: var(--z-dropdown); }
.z-sticky { z-index: var(--z-sticky); }
.z-fixed { z-index: var(--z-fixed); }
.z-modal { z-index: var(--z-modal); }

/* ==========================================
   BACKGROUND UTILITIES
   ========================================== */

.bg-white { background-color: var(--color-white); }
.bg-gray-50 { background-color: var(--color-gray-50); }
.bg-gray-100 { background-color: var(--color-gray-100); }
.bg-primary { background-color: var(--color-primary-dark); }
.bg-primary-light { background-color: var(--color-primary-light); }
.bg-yellow { background-color: var(--color-accent-yellow); }
.bg-yellow-light { background-color: var(--color-accent-yellow-light); }

/* ==========================================
   BORDER UTILITIES
   ========================================== */

.border { border: 1px solid var(--color-gray-200); }
.border-top { border-top: 1px solid var(--color-gray-200); }
.border-bottom { border-bottom: 1px solid var(--color-gray-200); }
.border-primary { border-color: var(--color-primary-dark); }
.rounded { border-radius: var(--radius-md); }
.rounded-lg { border-radius: var(--radius-lg); }

/* ==========================================
   SHADOW UTILITIES
   ========================================== */

.shadow-sm { box-shadow: var(--shadow-sm); }
.shadow-md { box-shadow: var(--shadow-md); }
.shadow-lg { box-shadow: var(--shadow-lg); }
.shadow-xl { box-shadow: var(--shadow-xl); }

/* ==========================================
   TRANSITION UTILITIES
   ========================================== */

.transition-fast {
  transition: all var(--transition-fast);
}

.transition-base {
  transition: all var(--transition-base);
}

.transition-slow {
  transition: all var(--transition-slow);
}
