/*
 * Grid & Layout System
 * Tekvera Initiative Theme
 */

/* ── Containers / Wrappers ───────────────────────────────────────────────── */
.tv-wrap {
  width: 100%;
  max-width: var(--tv-max-width);
  margin-inline: auto;
  padding-inline: var(--tv-gutter);
}

.tv-wrap--sm  { max-width: var(--tv-max-width-sm); }
.tv-wrap--md  { max-width: var(--tv-max-width-md); }
.tv-wrap--lg  { max-width: var(--tv-max-width-lg); }
.tv-wrap--full { max-width: 100%; }

/* ── CSS Grid utilities ───────────────────────────────────────────────────── */
.tv-grid {
  display: grid;
  gap: var(--tv-grid-gap);
}

/* Auto-fit responsive grid */
.tv-grid--auto-sm { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.tv-grid--auto-md { grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); }
.tv-grid--auto-lg { grid-template-columns: repeat(auto-fill, minmax(400px, 1fr)); }

/* Fixed column grids */
.tv-grid--2  { grid-template-columns: repeat(2, 1fr); }
.tv-grid--3  { grid-template-columns: repeat(3, 1fr); }
.tv-grid--4  { grid-template-columns: repeat(4, 1fr); }
.tv-grid--5  { grid-template-columns: repeat(5, 1fr); }

/* Asymmetric split layouts */
.tv-grid--60-40   { grid-template-columns: 60fr 40fr; }
.tv-grid--55-45   { grid-template-columns: 55fr 45fr; }
.tv-grid--40-60   { grid-template-columns: 40fr 60fr; }
.tv-grid--sidebar { grid-template-columns: 240px 1fr; }

/* Gap modifiers */
.tv-grid--gap-lg  { gap: var(--tv-grid-gap-lg); }
.tv-grid--gap-xl  { gap: 3rem; }
.tv-grid--gap-sm  { gap: 0.75rem; }
.tv-grid--no-gap  { gap: 0; }

/* ── Flexbox utilities ────────────────────────────────────────────────────── */
.tv-flex          { display: flex; }
.tv-flex--center  { align-items: center; justify-content: center; }
.tv-flex--between { align-items: center; justify-content: space-between; }
.tv-flex--start   { align-items: flex-start; }
.tv-flex--end     { align-items: flex-end; }
.tv-flex--wrap    { flex-wrap: wrap; }
.tv-flex--col     { flex-direction: column; }
.tv-flex--gap-sm  { gap: 0.75rem; }
.tv-flex--gap-md  { gap: 1.25rem; }
.tv-flex--gap-lg  { gap: 2rem; }

/* ── Responsive grid breakpoints ─────────────────────────────────────────── */
@media (max-width: 1024px) {
  .tv-grid--4  { grid-template-columns: repeat(2, 1fr); }
  .tv-grid--5  { grid-template-columns: repeat(3, 1fr); }
  .tv-grid--sidebar { grid-template-columns: 200px 1fr; }
}

@media (max-width: 768px) {
  .tv-wrap { padding-inline: var(--tv-gutter-sm); }

  .tv-grid--2,
  .tv-grid--3,
  .tv-grid--4,
  .tv-grid--5 { grid-template-columns: 1fr; }

  .tv-grid--60-40,
  .tv-grid--55-45,
  .tv-grid--40-60,
  .tv-grid--sidebar { grid-template-columns: 1fr; }
}

@media (max-width: 480px) {
  .tv-grid--auto-sm { grid-template-columns: 1fr; }
}
