/*
  Layout utilities: container, flex, grid, gap, spacing, alignment,
  responsive helpers. Token-driven (css/variables.css).

  RTL note: the project is Persian/RTL. Set <html dir="rtl" lang="fa">
  in markup. Utilities below use logical properties (inline/block,
  start/end) instead of left/right so they behave correctly in RTL
  without any direction-specific overrides.
*/

html {
  direction: rtl;
}

/* Container — matches the confirmed 1280px content width / 80px gutter
   measured from Figma frame geometry (see variables.css). */
.container {
  width: 100%;
  max-width: calc(var(--container-max-width) + (var(--container-gutter) * 2));
  margin-inline: auto;
  padding-inline: var(--container-gutter);
}

@media (max-width: 1024px) {
  .container {
    padding-inline: var(--space-lg);
  }
}

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

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

/* Flex utilities */
.flex {
  display: flex;
}

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

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

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

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

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

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

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

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

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

/* Grid utilities */
.grid {
  display: grid;
}

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

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

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

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

/* Gap utilities */
.gap-3xs { gap: var(--space-3xs); }
.gap-2xs { gap: var(--space-2xs); }
.gap-xs  { gap: var(--space-xs); }
.gap-sm  { gap: var(--space-sm); }
.gap-md  { gap: var(--space-md); }
.gap-lg  { gap: var(--space-lg); }
.gap-xl  { gap: var(--space-xl); }

/* Spacing utilities (margin / padding), logical properties for RTL safety */
.m-0  { margin: 0; }
.mt-sm { margin-block-start: var(--space-sm); }
.mt-md { margin-block-start: var(--space-md); }
.mt-lg { margin-block-start: var(--space-lg); }
.mt-xl { margin-block-start: var(--space-xl); }
.mb-sm { margin-block-end: var(--space-sm); }
.mb-md { margin-block-end: var(--space-md); }
.mb-lg { margin-block-end: var(--space-lg); }
.mb-xl { margin-block-end: var(--space-xl); }

.p-sm { padding: var(--space-sm); }
.p-md { padding: var(--space-md); }
.p-lg { padding: var(--space-lg); }
.p-xl { padding: var(--space-xl); }

/* Alignment / text utilities */
.text-start { text-align: start; }
.text-center { text-align: center; }
.text-end { text-align: end; }

/* Horizontal-scroll wrapper for wide tables on narrow viewports */
.table-scroll {
  overflow-x: auto;
}

/* Responsive visibility helpers */
.hide-mobile {
  display: none;
}

@media (min-width: 769px) {
  .hide-mobile {
    display: revert;
  }
  .hide-desktop {
    display: none;
  }
}

/* Section rhythm — used for the long-scroll marketing sections (Home) */
.section {
  padding-block: var(--space-2xl);
}

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