/* ============================================================
   Nova — Utilities (u- ön ekli, framework'süz)
   nova-foundation · Req 2.1, 2.3 · Contract §2 (DONDURULDU)
   Convention: tüm utility'ler `u-` ön eki taşır. Spacing skalası
   token'lara (--space-*) bağlıdır.
   ============================================================ */

/* — Display — */
.u-d-flex    { display: flex; }
.u-d-inline-flex { display: inline-flex; }
.u-d-grid    { display: grid; }
.u-d-block   { display: block; }
.u-d-inline-block { display: inline-block; }
.u-d-none    { display: none; }

/* — Flex yönü / hizalama — */
.u-flex-row    { flex-direction: row; }
.u-flex-col    { flex-direction: column; }
.u-flex-wrap   { flex-wrap: wrap; }
.u-flex-1      { flex: 1 1 0%; }
.u-flex-auto   { flex: 1 1 auto; }
.u-flex-none   { flex: none; }
.u-items-start  { align-items: flex-start; }
.u-items-center { align-items: center; }
.u-items-end    { align-items: flex-end; }
.u-items-stretch{ align-items: stretch; }
.u-justify-start   { justify-content: flex-start; }
.u-justify-center  { justify-content: center; }
.u-justify-between { justify-content: space-between; }
.u-justify-around  { justify-content: space-around; }
.u-justify-end     { justify-content: flex-end; }

/* — Grid — */
.u-grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
.u-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.u-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.u-grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.u-grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.u-grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }

/* — Gap (token skalası) — */
.u-gap-xs { gap: var(--space-xs); }
.u-gap-sm { gap: var(--space-sm); }
.u-gap-md { gap: var(--space-md); }
.u-gap-lg { gap: var(--space-lg); }
.u-gap-xl { gap: var(--space-xl); }

/* — Padding — */
.u-p-0  { padding: 0; }
.u-p-xs { padding: var(--space-xs); }
.u-p-sm { padding: var(--space-sm); }
.u-p-md { padding: var(--space-md); }
.u-p-lg { padding: var(--space-lg); }
.u-p-xl { padding: var(--space-xl); }
.u-px-0  { padding-left: 0; padding-right: 0; }
.u-px-sm { padding-left: var(--space-sm); padding-right: var(--space-sm); }
.u-px-md { padding-left: var(--space-md); padding-right: var(--space-md); }
.u-px-lg { padding-left: var(--space-lg); padding-right: var(--space-lg); }
.u-py-0  { padding-top: 0; padding-bottom: 0; }
.u-py-sm { padding-top: var(--space-sm); padding-bottom: var(--space-sm); }
.u-py-md { padding-top: var(--space-md); padding-bottom: var(--space-md); }
.u-py-lg { padding-top: var(--space-lg); padding-bottom: var(--space-lg); }

/* — Margin — */
.u-m-0  { margin: 0; }
.u-m-auto { margin: auto; }
.u-mt-0  { margin-top: 0; }
.u-mt-xs { margin-top: var(--space-xs); }
.u-mt-sm { margin-top: var(--space-sm); }
.u-mt-md { margin-top: var(--space-md); }
.u-mt-lg { margin-top: var(--space-lg); }
.u-mt-xl { margin-top: var(--space-xl); }
.u-mb-0  { margin-bottom: 0; }
.u-mb-xs { margin-bottom: var(--space-xs); }
.u-mb-sm { margin-bottom: var(--space-sm); }
.u-mb-md { margin-bottom: var(--space-md); }
.u-mb-lg { margin-bottom: var(--space-lg); }
.u-mb-xl { margin-bottom: var(--space-xl); }
.u-ml-auto { margin-left: auto; }
.u-mr-auto { margin-right: auto; }

/* — Tipografi boyutu — */
.u-text-xs  { font-size: var(--font-size-xs); }
.u-text-sm  { font-size: var(--font-size-sm); }
.u-text-md  { font-size: var(--font-size-md); }
.u-text-lg  { font-size: var(--font-size-lg); }
.u-text-xl  { font-size: var(--font-size-xl); }
.u-text-2xl { font-size: var(--font-size-2xl); }
.u-text-3xl { font-size: var(--font-size-3xl); }

/* — Font ağırlığı — */
.u-fw-regular  { font-weight: var(--font-weight-regular); }
.u-fw-medium   { font-weight: var(--font-weight-medium); }
.u-fw-semibold { font-weight: var(--font-weight-semibold); }
.u-fw-bold     { font-weight: var(--font-weight-bold); }

/* — Hizalama — */
.u-text-left   { text-align: left; }
.u-text-center { text-align: center; }
.u-text-right  { text-align: right; }

/* — Metin rengi — */
.u-text-primary   { color: var(--color-text-primary); }
.u-text-secondary { color: var(--color-text-secondary); }
.u-text-muted     { color: var(--color-text-secondary); }
.u-text-danger    { color: var(--color-danger); }
.u-text-success   { color: var(--color-success); }
.u-text-warning   { color: var(--color-warning); }
.u-text-accent    { color: var(--color-accent); }

/* — Arka plan — */
.u-bg-surface     { background-color: var(--color-surface); }
.u-bg-accent-soft { background-color: var(--color-accent-soft); }

/* — Köşe yuvarlama — */
.u-rounded     { border-radius: var(--border-radius); }
.u-rounded-lg  { border-radius: var(--border-radius-lg); }
.u-rounded-full{ border-radius: var(--border-radius-full); }

/* — Görünürlük / yardımcı — */
.u-hidden   { display: none !important; }
.u-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.u-w-full   { width: 100%; }

/* Ekran okuyucu için görünmez ama erişilebilir. */
.u-sr-only {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
