/* ============================================================
   CODISE-IT | layout.css
   Grid systems, containers, section wrappers, utilities
   ============================================================ */

.container {
  width: min(var(--max-width), calc(100% - 3rem));
  margin-inline: auto;
}
.container--narrow { width: min(var(--max-width-narrow), calc(100% - 3rem)); margin-inline: auto; }
.container--wide   { width: min(var(--max-width-wide), calc(100% - 2rem)); margin-inline: auto; }

.section              { padding-block: var(--sp-24); }
.section--sm          { padding-block: var(--sp-12); }
.section--flush-top   { padding-top: 0; }
.section--flush-bottom{ padding-bottom: 0; }

.grid         { display: grid; gap: var(--sp-6); }
.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   { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.grid--hero   { grid-template-columns: 1.1fr 0.9fr; align-items: center; }
.grid--sidebar{ grid-template-columns: 1fr 1.5fr; gap: var(--sp-8); }
.grid--footer { grid-template-columns: 1.4fr 0.8fr 0.8fr 1fr; }

.flex         { display: flex; }
.flex-center  { display: flex; align-items: center; justify-content: center; }
.flex-between { display: flex; align-items: center; justify-content: space-between; }
.flex-col     { display: flex; flex-direction: column; }
.flex-wrap    { flex-wrap: wrap; }
.gap-2  { gap: var(--sp-2); }
.gap-3  { gap: var(--sp-3); }
.gap-4  { gap: var(--sp-4); }
.gap-6  { gap: var(--sp-6); }
.gap-8  { gap: var(--sp-8); }

.text-center  { text-align: center; }
.text-muted   { color: var(--muted); }
.text-primary { color: var(--pri); }
.text-sm      { font-size: 0.875rem; }
.text-xs      { font-size: 0.75rem; }
.font-bold    { font-weight: 700; }
.font-black   { font-weight: 900; }
.uppercase    { text-transform: uppercase; }
.tracking-wide{ letter-spacing: 0.08em; }

.text-gradient {
  background: linear-gradient(135deg, var(--pri), var(--sec));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.mt-4  { margin-top: var(--sp-4); }
.mt-6  { margin-top: var(--sp-6); }
.mt-8  { margin-top: var(--sp-8); }
.mb-4  { margin-bottom: var(--sp-4); }
.mb-6  { margin-bottom: var(--sp-6); }
.mb-8  { margin-bottom: var(--sp-8); }

.sr-only {
  position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0,0,0,0); white-space: nowrap; border-width: 0;
}
.hidden  { display: none !important; }
.divider { height: 1px; background: var(--line); border: none; margin-block: var(--sp-8); }

@media (max-width: 1024px) {
  .grid--hero, .grid--sidebar, .grid--footer { grid-template-columns: 1fr; }
  .grid--4 { grid-template-columns: repeat(2, 1fr); }
  .grid--3 { grid-template-columns: repeat(2, 1fr); }
  .hide-tablet { display: none !important; }
}
@media (max-width: 640px) {
  .container { width: calc(100% - 2rem); }
  .grid--2, .grid--3, .grid--4, .grid--auto { grid-template-columns: 1fr; }
  .section { padding-block: var(--sp-16); }
  .hide-mobile { display: none !important; }
}


/* ============================================================
   Responsive Enhancement Pack
   ============================================================ */
@media (max-width: 900px) {
  .grid--3 { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 768px) {
  .container, .container--narrow { width: calc(100% - 1.5rem); }
  .container--wide { width: calc(100% - 1rem); }
  .section { padding-block: var(--sp-14); }
  .grid--hero, .grid--sidebar, .grid--footer, .grid--2, .grid--3, .grid--4, .grid--auto {
    grid-template-columns: 1fr;
  }
}
