/*
Utilities
Purpose: Single-property helper classes for spacing, applied directly in markup.
Key contents: Margin, padding, and gap utilities built off the --space-* and
--space-fluid-* scales in variables.css, so every value in this file traces
back to one source of truth.
Naming: {property}{direction?}-{size}. Property: m (margin) / p (padding) / gap.
Direction: t/r/b/l (one side), x/y (axis) — omit for all sides. Size: 1-8 map
to the static scale, fluid-2xs..fluid-2xl map to the fluid scale.
Strategy: Prefer the static scale for anything inside a component; reach for
the fluid scale only for macro/structural spacing (section padding, hero gaps).
*/

/* Margin — static scale
   ========================================================================== */
.m-0 { margin: 0; }
.m-1 { margin: var(--space-1); }
.m-2 { margin: var(--space-2); }
.m-3 { margin: var(--space-3); }
.m-4 { margin: var(--space-4); }
.m-5 { margin: var(--space-5); }
.m-6 { margin: var(--space-6); }
.m-7 { margin: var(--space-7); }
.m-8 { margin: var(--space-8); }
.m-auto { margin: auto; }

/* Margin — fluid scale
   ========================================================================== */
.m-fluid-2xs { margin: var(--space-fluid-2xs); }
.m-fluid-xs { margin: var(--space-fluid-xs); }
.m-fluid-sm { margin: var(--space-fluid-sm); }
.m-fluid-md { margin: var(--space-fluid-md); }
.m-fluid-lg { margin: var(--space-fluid-lg); }
.m-fluid-xl { margin: var(--space-fluid-xl); }
.m-fluid-2xl { margin: var(--space-fluid-2xl); }

/* Margin — top, static + fluid scale
   ========================================================================== */
.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-7 { margin-top: var(--space-7); }
.mt-8 { margin-top: var(--space-8); }
.mt-auto { margin-top: auto; }
.mt-fluid-2xs { margin-top: var(--space-fluid-2xs); }
.mt-fluid-xs { margin-top: var(--space-fluid-xs); }
.mt-fluid-sm { margin-top: var(--space-fluid-sm); }
.mt-fluid-md { margin-top: var(--space-fluid-md); }
.mt-fluid-lg { margin-top: var(--space-fluid-lg); }
.mt-fluid-xl { margin-top: var(--space-fluid-xl); }
.mt-fluid-2xl { margin-top: var(--space-fluid-2xl); }

/* Margin — right, static + fluid scale
   ========================================================================== */
.mr-0 { margin-right: 0; }
.mr-1 { margin-right: var(--space-1); }
.mr-2 { margin-right: var(--space-2); }
.mr-3 { margin-right: var(--space-3); }
.mr-4 { margin-right: var(--space-4); }
.mr-5 { margin-right: var(--space-5); }
.mr-6 { margin-right: var(--space-6); }
.mr-7 { margin-right: var(--space-7); }
.mr-8 { margin-right: var(--space-8); }
.mr-auto { margin-right: auto; }
.mr-fluid-2xs { margin-right: var(--space-fluid-2xs); }
.mr-fluid-xs { margin-right: var(--space-fluid-xs); }
.mr-fluid-sm { margin-right: var(--space-fluid-sm); }
.mr-fluid-md { margin-right: var(--space-fluid-md); }
.mr-fluid-lg { margin-right: var(--space-fluid-lg); }
.mr-fluid-xl { margin-right: var(--space-fluid-xl); }
.mr-fluid-2xl { margin-right: var(--space-fluid-2xl); }

/* Margin — bottom, static + fluid scale
   ========================================================================== */
.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-7 { margin-bottom: var(--space-7); }
.mb-8 { margin-bottom: var(--space-8); }
.mb-auto { margin-bottom: auto; }
.mb-fluid-2xs { margin-bottom: var(--space-fluid-2xs); }
.mb-fluid-xs { margin-bottom: var(--space-fluid-xs); }
.mb-fluid-sm { margin-bottom: var(--space-fluid-sm); }
.mb-fluid-md { margin-bottom: var(--space-fluid-md); }
.mb-fluid-lg { margin-bottom: var(--space-fluid-lg); }
.mb-fluid-xl { margin-bottom: var(--space-fluid-xl); }
.mb-fluid-2xl { margin-bottom: var(--space-fluid-2xl); }

/* Margin — left, static + fluid scale
   ========================================================================== */
.ml-0 { margin-left: 0; }
.ml-1 { margin-left: var(--space-1); }
.ml-2 { margin-left: var(--space-2); }
.ml-3 { margin-left: var(--space-3); }
.ml-4 { margin-left: var(--space-4); }
.ml-5 { margin-left: var(--space-5); }
.ml-6 { margin-left: var(--space-6); }
.ml-7 { margin-left: var(--space-7); }
.ml-8 { margin-left: var(--space-8); }
.ml-auto { margin-left: auto; }
.ml-fluid-2xs { margin-left: var(--space-fluid-2xs); }
.ml-fluid-xs { margin-left: var(--space-fluid-xs); }
.ml-fluid-sm { margin-left: var(--space-fluid-sm); }
.ml-fluid-md { margin-left: var(--space-fluid-md); }
.ml-fluid-lg { margin-left: var(--space-fluid-lg); }
.ml-fluid-xl { margin-left: var(--space-fluid-xl); }
.ml-fluid-2xl { margin-left: var(--space-fluid-2xl); }

/* Margin — x/y axis, static + fluid scale
   ========================================================================== */
.mx-0 { margin-inline: 0; }
.mx-1 { margin-inline: var(--space-1); }
.mx-2 { margin-inline: var(--space-2); }
.mx-3 { margin-inline: var(--space-3); }
.mx-4 { margin-inline: var(--space-4); }
.mx-5 { margin-inline: var(--space-5); }
.mx-6 { margin-inline: var(--space-6); }
.mx-7 { margin-inline: var(--space-7); }
.mx-8 { margin-inline: var(--space-8); }
.mx-auto { margin-inline: auto; }
.mx-fluid-2xs { margin-inline: var(--space-fluid-2xs); }
.mx-fluid-xs { margin-inline: var(--space-fluid-xs); }
.mx-fluid-sm { margin-inline: var(--space-fluid-sm); }
.mx-fluid-md { margin-inline: var(--space-fluid-md); }
.mx-fluid-lg { margin-inline: var(--space-fluid-lg); }
.mx-fluid-xl { margin-inline: var(--space-fluid-xl); }
.mx-fluid-2xl { margin-inline: var(--space-fluid-2xl); }

.my-0 { margin-block: 0; }
.my-1 { margin-block: var(--space-1); }
.my-2 { margin-block: var(--space-2); }
.my-3 { margin-block: var(--space-3); }
.my-4 { margin-block: var(--space-4); }
.my-5 { margin-block: var(--space-5); }
.my-6 { margin-block: var(--space-6); }
.my-7 { margin-block: var(--space-7); }
.my-8 { margin-block: var(--space-8); }
.my-auto { margin-block: auto; }
.my-fluid-2xs { margin-block: var(--space-fluid-2xs); }
.my-fluid-xs { margin-block: var(--space-fluid-xs); }
.my-fluid-sm { margin-block: var(--space-fluid-sm); }
.my-fluid-md { margin-block: var(--space-fluid-md); }
.my-fluid-lg { margin-block: var(--space-fluid-lg); }
.my-fluid-xl { margin-block: var(--space-fluid-xl); }
.my-fluid-2xl { margin-block: var(--space-fluid-2xl); }

/* Padding — static scale
   ========================================================================== */
.p-0 { padding: 0; }
.p-1 { padding: var(--space-1); }
.p-2 { padding: var(--space-2); }
.p-3 { padding: var(--space-3); }
.p-4 { padding: var(--space-4); }
.p-5 { padding: var(--space-5); }
.p-6 { padding: var(--space-6); }
.p-7 { padding: var(--space-7); }
.p-8 { padding: var(--space-8); }

/* Padding — fluid scale
   ========================================================================== */
.p-fluid-2xs { padding: var(--space-fluid-2xs); }
.p-fluid-xs { padding: var(--space-fluid-xs); }
.p-fluid-sm { padding: var(--space-fluid-sm); }
.p-fluid-md { padding: var(--space-fluid-md); }
.p-fluid-lg { padding: var(--space-fluid-lg); }
.p-fluid-xl { padding: var(--space-fluid-xl); }
.p-fluid-2xl { padding: var(--space-fluid-2xl); }

/* Padding — top, static + fluid scale
   ========================================================================== */
.pt-0 { padding-top: 0; }
.pt-1 { padding-top: var(--space-1); }
.pt-2 { padding-top: var(--space-2); }
.pt-3 { padding-top: var(--space-3); }
.pt-4 { padding-top: var(--space-4); }
.pt-5 { padding-top: var(--space-5); }
.pt-6 { padding-top: var(--space-6); }
.pt-7 { padding-top: var(--space-7); }
.pt-8 { padding-top: var(--space-8); }
.pt-fluid-2xs { padding-top: var(--space-fluid-2xs); }
.pt-fluid-xs { padding-top: var(--space-fluid-xs); }
.pt-fluid-sm { padding-top: var(--space-fluid-sm); }
.pt-fluid-md { padding-top: var(--space-fluid-md); }
.pt-fluid-lg { padding-top: var(--space-fluid-lg); }
.pt-fluid-xl { padding-top: var(--space-fluid-xl); }
.pt-fluid-2xl { padding-top: var(--space-fluid-2xl); }

/* Padding — right, static + fluid scale
   ========================================================================== */
.pr-0 { padding-right: 0; }
.pr-1 { padding-right: var(--space-1); }
.pr-2 { padding-right: var(--space-2); }
.pr-3 { padding-right: var(--space-3); }
.pr-4 { padding-right: var(--space-4); }
.pr-5 { padding-right: var(--space-5); }
.pr-6 { padding-right: var(--space-6); }
.pr-7 { padding-right: var(--space-7); }
.pr-8 { padding-right: var(--space-8); }
.pr-fluid-2xs { padding-right: var(--space-fluid-2xs); }
.pr-fluid-xs { padding-right: var(--space-fluid-xs); }
.pr-fluid-sm { padding-right: var(--space-fluid-sm); }
.pr-fluid-md { padding-right: var(--space-fluid-md); }
.pr-fluid-lg { padding-right: var(--space-fluid-lg); }
.pr-fluid-xl { padding-right: var(--space-fluid-xl); }
.pr-fluid-2xl { padding-right: var(--space-fluid-2xl); }

/* Padding — bottom, static + fluid scale
   ========================================================================== */
.pb-0 { padding-bottom: 0; }
.pb-1 { padding-bottom: var(--space-1); }
.pb-2 { padding-bottom: var(--space-2); }
.pb-3 { padding-bottom: var(--space-3); }
.pb-4 { padding-bottom: var(--space-4); }
.pb-5 { padding-bottom: var(--space-5); }
.pb-6 { padding-bottom: var(--space-6); }
.pb-7 { padding-bottom: var(--space-7); }
.pb-8 { padding-bottom: var(--space-8); }
.pb-fluid-2xs { padding-bottom: var(--space-fluid-2xs); }
.pb-fluid-xs { padding-bottom: var(--space-fluid-xs); }
.pb-fluid-sm { padding-bottom: var(--space-fluid-sm); }
.pb-fluid-md { padding-bottom: var(--space-fluid-md); }
.pb-fluid-lg { padding-bottom: var(--space-fluid-lg); }
.pb-fluid-xl { padding-bottom: var(--space-fluid-xl); }
.pb-fluid-2xl { padding-bottom: var(--space-fluid-2xl); }

/* Padding — left, static + fluid scale
   ========================================================================== */
.pl-0 { padding-left: 0; }
.pl-1 { padding-left: var(--space-1); }
.pl-2 { padding-left: var(--space-2); }
.pl-3 { padding-left: var(--space-3); }
.pl-4 { padding-left: var(--space-4); }
.pl-5 { padding-left: var(--space-5); }
.pl-6 { padding-left: var(--space-6); }
.pl-7 { padding-left: var(--space-7); }
.pl-8 { padding-left: var(--space-8); }
.pl-fluid-2xs { padding-left: var(--space-fluid-2xs); }
.pl-fluid-xs { padding-left: var(--space-fluid-xs); }
.pl-fluid-sm { padding-left: var(--space-fluid-sm); }
.pl-fluid-md { padding-left: var(--space-fluid-md); }
.pl-fluid-lg { padding-left: var(--space-fluid-lg); }
.pl-fluid-xl { padding-left: var(--space-fluid-xl); }
.pl-fluid-2xl { padding-left: var(--space-fluid-2xl); }

/* Padding — x/y axis, static + fluid scale
   ========================================================================== */
.px-0 { padding-inline: 0; }
.px-1 { padding-inline: var(--space-1); }
.px-2 { padding-inline: var(--space-2); }
.px-3 { padding-inline: var(--space-3); }
.px-4 { padding-inline: var(--space-4); }
.px-5 { padding-inline: var(--space-5); }
.px-6 { padding-inline: var(--space-6); }
.px-7 { padding-inline: var(--space-7); }
.px-8 { padding-inline: var(--space-8); }
.px-fluid-2xs { padding-inline: var(--space-fluid-2xs); }
.px-fluid-xs { padding-inline: var(--space-fluid-xs); }
.px-fluid-sm { padding-inline: var(--space-fluid-sm); }
.px-fluid-md { padding-inline: var(--space-fluid-md); }
.px-fluid-lg { padding-inline: var(--space-fluid-lg); }
.px-fluid-xl { padding-inline: var(--space-fluid-xl); }
.px-fluid-2xl { padding-inline: var(--space-fluid-2xl); }
.px-section { padding-inline: var(--section-padding-x); }

.py-0 { padding-block: 0; }
.py-1 { padding-block: var(--space-1); }
.py-2 { padding-block: var(--space-2); }
.py-3 { padding-block: var(--space-3); }
.py-4 { padding-block: var(--space-4); }
.py-5 { padding-block: var(--space-5); }
.py-6 { padding-block: var(--space-6); }
.py-7 { padding-block: var(--space-7); }
.py-8 { padding-block: var(--space-8); }
.py-fluid-2xs { padding-block: var(--space-fluid-2xs); }
.py-fluid-xs { padding-block: var(--space-fluid-xs); }
.py-fluid-sm { padding-block: var(--space-fluid-sm); }
.py-fluid-md { padding-block: var(--space-fluid-md); }
.py-fluid-lg { padding-block: var(--space-fluid-lg); }
.py-fluid-xl { padding-block: var(--space-fluid-xl); }
.py-fluid-2xl { padding-block: var(--space-fluid-2xl); }

/* Gap — static + fluid scale (flex/grid)
   ========================================================================== */
.gap-0 { gap: 0; }
.gap-1 { gap: var(--space-1); }
.gap-2 { gap: var(--space-2); }
.gap-3 { gap: var(--space-3); }
.gap-4 { gap: var(--space-4); }
.gap-5 { gap: var(--space-5); }
.gap-6 { gap: var(--space-6); }
.gap-7 { gap: var(--space-7); }
.gap-8 { gap: var(--space-8); }
.gap-fluid-2xs { gap: var(--space-fluid-2xs); }
.gap-fluid-xs { gap: var(--space-fluid-xs); }
.gap-fluid-sm { gap: var(--space-fluid-sm); }
.gap-fluid-md { gap: var(--space-fluid-md); }
.gap-fluid-lg { gap: var(--space-fluid-lg); }
.gap-fluid-xl { gap: var(--space-fluid-xl); }
.gap-fluid-2xl { gap: var(--space-fluid-2xl); }

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

/* Flex direction + wrap
   ========================================================================== */
.flex-row { flex-direction: row; }
.flex-row-reverse { flex-direction: row-reverse; }
.flex-col { flex-direction: column; }
.flex-col-reverse { flex-direction: column-reverse; }

.flex-wrap { flex-wrap: wrap; }
.flex-nowrap { flex-wrap: nowrap; }
.flex-wrap-reverse { flex-wrap: wrap-reverse; }

/* Justify content — main-axis alignment (flex/grid container)
   ========================================================================== */
.justify-start { justify-content: flex-start; }
.justify-center { justify-content: center; }
.justify-end { justify-content: flex-end; }
.justify-between { justify-content: space-between; }
.justify-around { justify-content: space-around; }
.justify-evenly { justify-content: space-evenly; }

/* Align items — cross-axis alignment (flex/grid container)
   ========================================================================== */
.items-start { align-items: flex-start; }
.items-center { align-items: center; }
.items-end { align-items: flex-end; }
.items-baseline { align-items: baseline; }
.items-stretch { align-items: stretch; }

/* Align content — cross-axis alignment for wrapped/multi-row content
   ========================================================================== */
.content-start { align-content: flex-start; }
.content-center { align-content: center; }
.content-end { align-content: flex-end; }
.content-between { align-content: space-between; }
.content-around { align-content: space-around; }
.content-stretch { align-content: stretch; }

/* Align self / justify self — per-item overrides (flex/grid item)
   ========================================================================== */
.self-auto { align-self: auto; }
.self-start { align-self: flex-start; }
.self-center { align-self: center; }
.self-end { align-self: flex-end; }
.self-baseline { align-self: baseline; }
.self-stretch { align-self: stretch; }

.justify-self-auto { justify-self: auto; }
.justify-self-start { justify-self: start; }
.justify-self-center { justify-self: center; }
.justify-self-end { justify-self: end; }
.justify-self-stretch { justify-self: stretch; }

/* Text alignment
   ========================================================================== */
.text-left { text-align: left; }
.text-center { text-align: center; }
.text-right { text-align: right; }
.text-justify { text-align: justify; }
.gradient-text {
  background: linear-gradient(to right, #0038A8, #86B5FF);
  background-clip: text;
  -webkit-background-clip: text; /* Required for Safari/Chrome compatibility */
  color: transparent;
  -webkit-text-fill-color: transparent; /* Extra fallback for webkit browsers */
  display: inline-block; 
}