/* Display */
.d-block        { display: block; }
.d-inline-block { display: inline-block; }
.d-flex         { display: flex; }
.d-grid         { display: grid; }
.d-none         { display: none; }

/* Flex direction */
.flex-row { flex-direction: row; }
.flex-col { flex-direction: column; }

/* Flex wrap */
.flex-wrap   { flex-wrap: wrap; }
.flex-nowrap { flex-wrap: nowrap; }

/* Justify content */
.justify-start   { justify-content: flex-start; }
.justify-center  { justify-content: center; }
.justify-end     { justify-content: flex-end; }
.justify-between { justify-content: space-between; }

/* Align items */
.items-start   { align-items: flex-start; }
.items-center  { align-items: center; }
.items-end     { align-items: flex-end; }
.items-stretch { align-items: stretch; }

/* Flex sizing */
.flex-1   { flex: 1; }
.grow     { flex-grow: 1; }
.shrink-0 { flex-shrink: 0; }

/* Grid columns */
.grid-cols-1 { grid-template-columns: repeat(1, 1fr); }
.grid-cols-2 { grid-template-columns: repeat(2, 1fr); }
.grid-cols-3 { grid-template-columns: repeat(3, 1fr); }
.grid-cols-4 { grid-template-columns: repeat(4, 1fr); }

/* Gap (full gap, not column-gap — see .col-gap-* in style.css for column-gap only) */
.gap-sm { gap: var(--sv-column-gap-small); }
.gap-md { gap: var(--sv-column-gap-medium); }
.gap-lg { gap: var(--sv-column-gap-large); }

/* Position */
.relative { position: relative; }
.absolute { position: absolute; }
.fixed    { position: fixed; }
.sticky   { position: sticky; }

/* Overflow */
.overflow-hidden { overflow: hidden; }

/* Sizing */
.w-full { width: 100%; }
.h-full { height: 100%; }

/* Object fit */
.object-cover   { object-fit: cover; }
.object-contain { object-fit: contain; }

/* Z-index */
.z-0  { z-index: 0; }
.z-1  { z-index: 1; }
.z-10 { z-index: 10; }
.z-20 { z-index: 20; }

/* Border radius */
.rounded      { border-radius: var(--sv-border-radius-md); }
.rounded-full { border-radius: 50%; }

/* Pointer events */
.pointer-none { pointer-events: none; }

/* Text align */
.text-left   { text-align: left; }
.text-center { text-align: center; }
.text-right  { text-align: right; }

/* Hover scale — apply to the container; child image or element scales on hover/focus */
.scale-hover {
    overflow: hidden;
}
.scale-hover > * {
    transition: var(--sv-transition-scale);
}
.scale-hover:hover > *,
.scale-hover:focus-within > * {
    transform: scale3d(1.03, 1.03, 1.03);
}
