/* =========================================================
   UTILITIES — Helper Classes
   ========================================================= */

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

/* Flex helpers */
.flex-center   { display: flex; align-items: center; justify-content: center; }
.flex-between  { display: flex; align-items: center; justify-content: space-between; }
.flex-wrap     { flex-wrap: wrap; }
.flex-col      { flex-direction: column; }
.gap-2 { gap: var(--space-2); }
.gap-3 { gap: var(--space-3); }
.gap-4 { gap: var(--space-4); }

/* Text */
.text-primary  { color: var(--color-primary); }
.text-success  { color: var(--color-success); }
.text-warning  { color: var(--color-warning); }
.text-danger   { color: var(--color-danger); }
.text-muted    { color: var(--color-text-3); }
.text-center   { text-align: center; }
.text-mono     { font-family: var(--font-mono); }
.text-xs       { font-size: var(--font-size-xs); }
.text-sm       { font-size: var(--font-size-sm); }
.text-bold     { font-weight: var(--font-weight-bold); }
.text-semibold { font-weight: var(--font-weight-semibold); }

/* Spacing */
.mt-2 { margin-top: var(--space-2); }
.mt-4 { margin-top: var(--space-4); }
.mb-4 { margin-bottom: var(--space-4); }

/* Width */
.w-full { width: 100%; }

/* Overflow */
.overflow-hidden { overflow: hidden; }

/* Pointer */
.cursor-pointer { cursor: pointer; }
.no-select      { user-select: none; }

/* Truncate */
.truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Visually hidden but accessible */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Glass */
.glass {
  background: rgba(255, 255, 255, 0.05);
  backdrop-filter: blur(12px) saturate(150%);
  -webkit-backdrop-filter: blur(12px) saturate(150%);
  border: 1px solid rgba(255, 255, 255, 0.1);
}

/* Gradient text */
.gradient-text {
  background: linear-gradient(135deg, var(--color-primary-light), var(--color-primary-dark));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* Glow */
.glow-primary {
  box-shadow: var(--shadow-glow);
}

/* Surface levels */
.surface   { background: var(--color-surface); }
.surface-2 { background: var(--color-surface-2); }
.surface-3 { background: var(--color-surface-3); }

/* Rounded */
.rounded    { border-radius: var(--radius); }
.rounded-md { border-radius: var(--radius-md); }
.rounded-lg { border-radius: var(--radius-lg); }
.rounded-full { border-radius: var(--radius-full); }

/* Border */
.border { border: 1px solid var(--color-border); }

/* Scroll */
#search-no-results {
  grid-column: 1 / -1;
  text-align: center;
  padding: var(--space-12) 0;
  color: var(--color-text-3);
  font-size: var(--font-size-lg);
  font-weight: var(--font-weight-medium);
}
