/* ==========================================================================
   UTILITIES.CSS — Utility Classes
   Primordial Stone — Cave-Themed Stone Craftsmanship
   ========================================================================== */

/* ==========================================================================
   ACCESSIBILITY
   ========================================================================== */

.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;
}

/* ==========================================================================
   TEXT ALIGNMENT
   ========================================================================== */

.text-center { text-align: center; }
.text-left { text-align: left; }
.text-right { text-align: right; }

/* ==========================================================================
   MAX WIDTH
   ========================================================================== */

.max-w-prose { max-width: 72ch; }
.max-w-sm { max-width: var(--container-sm); }
.max-w-md { max-width: var(--container-md); }
.max-w-lg { max-width: var(--container-lg); }
.max-w-xl { max-width: var(--container-xl); }
.mx-auto { margin-left: auto; margin-right: auto; }

/* ==========================================================================
   DISPLAY
   ========================================================================== */

.hidden { display: none; }
.block { display: block; }
.inline-block { display: inline-block; }
.inline { display: inline; }

.visible-mobile {
  display: none;
}

.visible-desktop {
  display: block;
}

@media (max-width: 768px) {
  .visible-mobile {
    display: block;
  }

  .visible-desktop {
    display: none;
  }
}

.visible-tablet {
  display: none;
}

@media (min-width: 768px) and (max-width: 1023px) {
  .visible-tablet {
    display: block;
  }
}

/* ==========================================================================
   TEXT TRANSFORMS & STYLING
   ========================================================================== */

.uppercase { text-transform: uppercase; }
.lowercase { text-transform: lowercase; }
.capitalize { text-transform: capitalize; }
.italic { font-style: italic; }
.font-heading { font-family: var(--font-heading); }
.font-body { font-family: var(--font-body); }

/* ==========================================================================
   LETTER SPACING
   ========================================================================== */

.tracking-tight { letter-spacing: var(--tracking-tight); }
.tracking-normal { letter-spacing: var(--tracking-normal); }
.tracking-wide { letter-spacing: var(--tracking-wide); }
.tracking-widest { letter-spacing: var(--tracking-widest); }

/* ==========================================================================
   FONT SIZES
   ========================================================================== */

.text-xs { font-size: var(--text-xs); }
.text-sm { font-size: var(--text-sm); }
.text-base { font-size: var(--text-base); }
.text-lg { font-size: var(--text-lg); }
.text-xl { font-size: var(--text-xl); }
.text-2xl { font-size: var(--text-2xl); }
.text-3xl { font-size: var(--text-3xl); }
.text-4xl { font-size: var(--text-4xl); }

/* ==========================================================================
   FONT WEIGHTS
   ========================================================================== */

.font-light { font-weight: 300; }
.font-normal { font-weight: 400; }
.font-medium { font-weight: 500; }
.font-semibold { font-weight: 600; }
.font-bold { font-weight: 700; }

/* ==========================================================================
   LINE HEIGHT
   ========================================================================== */

.leading-tight { line-height: var(--leading-tight); }
.leading-normal { line-height: var(--leading-normal); }
.leading-relaxed { line-height: var(--leading-relaxed); }

/* ==========================================================================
   COLORS
   ========================================================================== */

.text-void { color: var(--void); }
.text-chalk { color: var(--chalk); }
.text-bone { color: var(--bone); }
.text-sandstone { color: var(--sandstone); }
.text-limestone { color: var(--limestone); }
.text-weathered { color: var(--weathered); }
.text-ember { color: var(--ember); }
.text-amber { color: var(--amber); }
.text-flame { color: var(--flame); }

/* ==========================================================================
   MARGIN — Top
   ========================================================================== */

.mt-0 { margin-top: 0; }
.mt-1 { margin-top: var(--space-1); }
.mt-2 { margin-top: var(--space-2); }
.mt-3 { margin-top: var(--space-3); }
.mt-4 { margin-top: var(--space-4); }
.mt-5 { margin-top: var(--space-5); }
.mt-6 { margin-top: var(--space-6); }
.mt-8 { margin-top: var(--space-8); }
.mt-10 { margin-top: var(--space-10); }
.mt-12 { margin-top: var(--space-12); }
.mt-16 { margin-top: var(--space-16); }
.mt-20 { margin-top: var(--space-20); }
.mt-24 { margin-top: var(--space-24); }

/* ==========================================================================
   MARGIN — Bottom
   ========================================================================== */

.mb-0 { margin-bottom: 0; }
.mb-1 { margin-bottom: var(--space-1); }
.mb-2 { margin-bottom: var(--space-2); }
.mb-3 { margin-bottom: var(--space-3); }
.mb-4 { margin-bottom: var(--space-4); }
.mb-5 { margin-bottom: var(--space-5); }
.mb-6 { margin-bottom: var(--space-6); }
.mb-8 { margin-bottom: var(--space-8); }
.mb-10 { margin-bottom: var(--space-10); }
.mb-12 { margin-bottom: var(--space-12); }
.mb-16 { margin-bottom: var(--space-16); }
.mb-20 { margin-bottom: var(--space-20); }
.mb-24 { margin-bottom: var(--space-24); }

/* ==========================================================================
   MARGIN — Left
   ========================================================================== */

.ml-0 { margin-left: 0; }
.ml-2 { margin-left: var(--space-2); }
.ml-4 { margin-left: var(--space-4); }
.ml-6 { margin-left: var(--space-6); }
.ml-8 { margin-left: var(--space-8); }
.ml-auto { margin-left: auto; }

/* ==========================================================================
   MARGIN — Right
   ========================================================================== */

.mr-0 { margin-right: 0; }
.mr-2 { margin-right: var(--space-2); }
.mr-4 { margin-right: var(--space-4); }
.mr-6 { margin-right: var(--space-6); }
.mr-8 { margin-right: var(--space-8); }
.mr-auto { margin-right: auto; }

/* ==========================================================================
   PADDING — Vertical (Y-axis)
   ========================================================================== */

.py-0 { padding-top: 0; padding-bottom: 0; }
.py-2 { padding-top: var(--space-2); padding-bottom: var(--space-2); }
.py-3 { padding-top: var(--space-3); padding-bottom: var(--space-3); }
.py-4 { padding-top: var(--space-4); padding-bottom: var(--space-4); }
.py-5 { padding-top: var(--space-5); padding-bottom: var(--space-5); }
.py-6 { padding-top: var(--space-6); padding-bottom: var(--space-6); }
.py-8 { padding-top: var(--space-8); padding-bottom: var(--space-8); }
.py-10 { padding-top: var(--space-10); padding-bottom: var(--space-10); }
.py-12 { padding-top: var(--space-12); padding-bottom: var(--space-12); }
.py-16 { padding-top: var(--space-16); padding-bottom: var(--space-16); }
.py-20 { padding-top: var(--space-20); padding-bottom: var(--space-20); }
.py-24 { padding-top: var(--space-24); padding-bottom: var(--space-24); }

/* ==========================================================================
   PADDING — Horizontal (X-axis)
   ========================================================================== */

.px-0 { padding-left: 0; padding-right: 0; }
.px-2 { padding-left: var(--space-2); padding-right: var(--space-2); }
.px-3 { padding-left: var(--space-3); padding-right: var(--space-3); }
.px-4 { padding-left: var(--space-4); padding-right: var(--space-4); }
.px-5 { padding-left: var(--space-5); padding-right: var(--space-5); }
.px-6 { padding-left: var(--space-6); padding-right: var(--space-6); }
.px-8 { padding-left: var(--space-8); padding-right: var(--space-8); }
.px-10 { padding-left: var(--space-10); padding-right: var(--space-10); }
.px-12 { padding-left: var(--space-12); padding-right: var(--space-12); }

/* ==========================================================================
   PADDING — Top
   ========================================================================== */

.pt-0 { padding-top: 0; }
.pt-4 { padding-top: var(--space-4); }
.pt-6 { padding-top: var(--space-6); }
.pt-8 { padding-top: var(--space-8); }
.pt-12 { padding-top: var(--space-12); }
.pt-16 { padding-top: var(--space-16); }
.pt-24 { padding-top: var(--space-24); }

/* ==========================================================================
   PADDING — Bottom
   ========================================================================== */

.pb-0 { padding-bottom: 0; }
.pb-4 { padding-bottom: var(--space-4); }
.pb-6 { padding-bottom: var(--space-6); }
.pb-8 { padding-bottom: var(--space-8); }
.pb-12 { padding-bottom: var(--space-12); }
.pb-16 { padding-bottom: var(--space-16); }
.pb-24 { padding-bottom: var(--space-24); }

/* ==========================================================================
   PADDING — All sides
   ========================================================================== */

.p-0 { padding: 0; }
.p-2 { padding: var(--space-2); }
.p-4 { padding: var(--space-4); }
.p-6 { padding: var(--space-6); }
.p-8 { padding: var(--space-8); }
.p-12 { padding: var(--space-12); }

/* ==========================================================================
   GAP
   ========================================================================== */

.gap-2 { gap: var(--space-2); }
.gap-3 { gap: var(--space-3); }
.gap-4 { gap: var(--space-4); }
.gap-6 { gap: var(--space-6); }
.gap-8 { gap: var(--space-8); }
.gap-12 { gap: var(--space-12); }

/* ==========================================================================
   OVERFLOW
   ========================================================================== */

.overflow-hidden { overflow: hidden; }
.overflow-auto { overflow: auto; }

/* ==========================================================================
   POSITION
   ========================================================================== */

.relative { position: relative; }
.absolute { position: absolute; }
.fixed { position: fixed; }
.sticky { position: sticky; top: 0; }

/* ==========================================================================
   WIDTH & HEIGHT
   ========================================================================== */

.w-full { width: 100%; }
.h-full { height: 100%; }
.min-h-screen { min-height: 100vh; }

/* ==========================================================================
   BORDER RADIUS
   ========================================================================== */

.rounded-sm { border-radius: var(--radius-sm); }
.rounded-md { border-radius: var(--radius-md); }
.rounded-lg { border-radius: var(--radius-lg); }
.rounded-full { border-radius: var(--radius-full); }

/* ==========================================================================
   Z-INDEX
   ========================================================================== */

.z-0 { z-index: 0; }
.z-10 { z-index: 10; }
.z-20 { z-index: 20; }
.z-50 { z-index: 50; }

/* ==========================================================================
   OPACITY
   ========================================================================== */

.opacity-0 { opacity: 0; }
.opacity-50 { opacity: 0.5; }
.opacity-75 { opacity: 0.75; }
.opacity-100 { opacity: 1; }

/* ==========================================================================
   CURSOR
   ========================================================================== */

.cursor-pointer { cursor: pointer; }
.cursor-default { cursor: default; }

/* ==========================================================================
   BACKGROUND COLORS
   ========================================================================== */

.bg-void { background-color: var(--void); }
.bg-cave { background-color: var(--cave); }
.bg-bedrock { background-color: var(--bedrock); }
.bg-slate { background-color: var(--slate); }

/* ==========================================================================
   BORDERS
   ========================================================================== */

.border-slate { border: 1px solid var(--slate); }
.border-ember { border: 1px solid var(--ember); }
.border-top-slate { border-top: 1px solid var(--slate); }
.border-bottom-slate { border-bottom: 1px solid var(--slate); }
