/**
 * Ghostly Labs Utility CSS
 * Phantom Realty Engine - Helper Classes & Utilities
 * 
 * Utility classes for spacing, display, positioning, and quick modifications.
 * Designed for rapid development and consistent layouts.
 * 
 * @package PhantomRealtyEngine
 * @subpackage CSS-Utilities
 * @version 2.0.0
 * @order 07
 * @depends 01-variables.css
 * @brand Ghostly Labs - Enterprise Real Estate Solutions
 */

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

.pre-hidden {
    display: none;
}

.pre-block {
    display: block;
}

.pre-inline {
    display: inline;
}

.pre-inline-block {
    display: inline-block;
}

.pre-flex {
    display: flex;
}

.pre-inline-flex {
    display: inline-flex;
}

.pre-grid {
    display: grid;
}

.pre-inline-grid {
    display: inline-grid;
}

/* Visibility */
.pre-visible {
    visibility: visible;
}

.pre-invisible {
    visibility: hidden;
}

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

.pre-overflow-visible {
    overflow: visible;
}

.pre-overflow-scroll {
    overflow: scroll;
}

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

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

.pre-static {
    position: static;
}

.pre-relative {
    position: relative;
}

.pre-absolute {
    position: absolute;
}

.pre-fixed {
    position: fixed;
}

.pre-sticky {
    position: sticky;
}

/* Positioning */
.pre-top-0 {
    top: 0;
}

.pre-top-auto {
    top: auto;
}

.pre-right-0 {
    right: 0;
}

.pre-right-auto {
    right: auto;
}

.pre-bottom-0 {
    bottom: 0;
}

.pre-bottom-auto {
    bottom: auto;
}

.pre-left-0 {
    left: 0;
}

.pre-left-auto {
    left: auto;
}

/* Z-Index */
.pre-z-0 {
    z-index: 0;
}

.pre-z-10 {
    z-index: 10;
}

.pre-z-20 {
    z-index: 20;
}

.pre-z-30 {
    z-index: 30;
}

.pre-z-40 {
    z-index: 40;
}

.pre-z-50 {
    z-index: 50;
}

.pre-z-auto {
    z-index: auto;
}

/* ================================
   MARGIN UTILITIES
   ================================ */

/* All Sides */
.pre-m-0 {
    margin: 0;
}

.pre-m-xs {
    margin: var(--pre-space-xs);
}

.pre-m-sm {
    margin: var(--pre-space-sm);
}

.pre-m-md {
    margin: var(--pre-space-md);
}

.pre-m-lg {
    margin: var(--pre-space-lg);
}

.pre-m-xl {
    margin: var(--pre-space-xl);
}

.pre-m-auto {
    margin: auto;
}

/* Top */
.pre-mt-0 {
    margin-top: 0;
}

.pre-mt-xs {
    margin-top: var(--pre-space-xs);
}

.pre-mt-sm {
    margin-top: var(--pre-space-sm);
}

.pre-mt-md {
    margin-top: var(--pre-space-md);
}

.pre-mt-lg {
    margin-top: var(--pre-space-lg);
}

.pre-mt-xl {
    margin-top: var(--pre-space-xl);
}

.pre-mt-auto {
    margin-top: auto;
}

/* Right */
.pre-mr-0 {
    margin-right: 0;
}

.pre-mr-xs {
    margin-right: var(--pre-space-xs);
}

.pre-mr-sm {
    margin-right: var(--pre-space-sm);
}

.pre-mr-md {
    margin-right: var(--pre-space-md);
}

.pre-mr-lg {
    margin-right: var(--pre-space-lg);
}

.pre-mr-xl {
    margin-right: var(--pre-space-xl);
}

.pre-mr-auto {
    margin-right: auto;
}

/* Bottom */
.pre-mb-0 {
    margin-bottom: 0;
}

.pre-mb-xs {
    margin-bottom: var(--pre-space-xs);
}

.pre-mb-sm {
    margin-bottom: var(--pre-space-sm);
}

.pre-mb-md {
    margin-bottom: var(--pre-space-md);
}

.pre-mb-lg {
    margin-bottom: var(--pre-space-lg);
}

.pre-mb-xl {
    margin-bottom: var(--pre-space-xl);
}

.pre-mb-auto {
    margin-bottom: auto;
}

/* Left */
.pre-ml-0 {
    margin-left: 0;
}

.pre-ml-xs {
    margin-left: var(--pre-space-xs);
}

.pre-ml-sm {
    margin-left: var(--pre-space-sm);
}

.pre-ml-md {
    margin-left: var(--pre-space-md);
}

.pre-ml-lg {
    margin-left: var(--pre-space-lg);
}

.pre-ml-xl {
    margin-left: var(--pre-space-xl);
}

.pre-ml-auto {
    margin-left: auto;
}

/* Horizontal & Vertical */
.pre-mx-0 {
    margin-left: 0;
    margin-right: 0;
}

.pre-mx-xs {
    margin-left: var(--pre-space-xs);
    margin-right: var(--pre-space-xs);
}

.pre-mx-sm {
    margin-left: var(--pre-space-sm);
    margin-right: var(--pre-space-sm);
}

.pre-mx-md {
    margin-left: var(--pre-space-md);
    margin-right: var(--pre-space-md);
}

.pre-mx-lg {
    margin-left: var(--pre-space-lg);
    margin-right: var(--pre-space-lg);
}

.pre-mx-xl {
    margin-left: var(--pre-space-xl);
    margin-right: var(--pre-space-xl);
}

.pre-mx-auto {
    margin-left: auto;
    margin-right: auto;
}

.pre-my-0 {
    margin-top: 0;
    margin-bottom: 0;
}

.pre-my-xs {
    margin-top: var(--pre-space-xs);
    margin-bottom: var(--pre-space-xs);
}

.pre-my-sm {
    margin-top: var(--pre-space-sm);
    margin-bottom: var(--pre-space-sm);
}

.pre-my-md {
    margin-top: var(--pre-space-md);
    margin-bottom: var(--pre-space-md);
}

.pre-my-lg {
    margin-top: var(--pre-space-lg);
    margin-bottom: var(--pre-space-lg);
}

.pre-my-xl {
    margin-top: var(--pre-space-xl);
    margin-bottom: var(--pre-space-xl);
}

.pre-my-auto {
    margin-top: auto;
    margin-bottom: auto;
}

/* ================================
   PADDING UTILITIES
   ================================ */

/* All Sides */
.pre-p-0 {
    padding: 0;
}

.pre-p-xs {
    padding: var(--pre-space-xs);
}

.pre-p-sm {
    padding: var(--pre-space-sm);
}

.pre-p-md {
    padding: var(--pre-space-md);
}

.pre-p-lg {
    padding: var(--pre-space-lg);
}

.pre-p-xl {
    padding: var(--pre-space-xl);
}

/* Top */
.pre-pt-0 {
    padding-top: 0;
}

.pre-pt-xs {
    padding-top: var(--pre-space-xs);
}

.pre-pt-sm {
    padding-top: var(--pre-space-sm);
}

.pre-pt-md {
    padding-top: var(--pre-space-md);
}

.pre-pt-lg {
    padding-top: var(--pre-space-lg);
}

.pre-pt-xl {
    padding-top: var(--pre-space-xl);
}

/* Right */
.pre-pr-0 {
    padding-right: 0;
}

.pre-pr-xs {
    padding-right: var(--pre-space-xs);
}

.pre-pr-sm {
    padding-right: var(--pre-space-sm);
}

.pre-pr-md {
    padding-right: var(--pre-space-md);
}

.pre-pr-lg {
    padding-right: var(--pre-space-lg);
}

.pre-pr-xl {
    padding-right: var(--pre-space-xl);
}

/* Bottom */
.pre-pb-0 {
    padding-bottom: 0;
}

.pre-pb-xs {
    padding-bottom: var(--pre-space-xs);
}

.pre-pb-sm {
    padding-bottom: var(--pre-space-sm);
}

.pre-pb-md {
    padding-bottom: var(--pre-space-md);
}

.pre-pb-lg {
    padding-bottom: var(--pre-space-lg);
}

.pre-pb-xl {
    padding-bottom: var(--pre-space-xl);
}

/* Left */
.pre-pl-0 {
    padding-left: 0;
}

.pre-pl-xs {
    padding-left: var(--pre-space-xs);
}

.pre-pl-sm {
    padding-left: var(--pre-space-sm);
}

.pre-pl-md {
    padding-left: var(--pre-space-md);
}

.pre-pl-lg {
    padding-left: var(--pre-space-lg);
}

.pre-pl-xl {
    padding-left: var(--pre-space-xl);
}

/* Horizontal & Vertical */
.pre-px-0 {
    padding-left: 0;
    padding-right: 0;
}

.pre-px-xs {
    padding-left: var(--pre-space-xs);
    padding-right: var(--pre-space-xs);
}

.pre-px-sm {
    padding-left: var(--pre-space-sm);
    padding-right: var(--pre-space-sm);
}

.pre-px-md {
    padding-left: var(--pre-space-md);
    padding-right: var(--pre-space-md);
}

.pre-px-lg {
    padding-left: var(--pre-space-lg);
    padding-right: var(--pre-space-lg);
}

.pre-px-xl {
    padding-left: var(--pre-space-xl);
    padding-right: var(--pre-space-xl);
}

.pre-py-0 {
    padding-top: 0;
    padding-bottom: 0;
}

.pre-py-xs {
    padding-top: var(--pre-space-xs);
    padding-bottom: var(--pre-space-xs);
}

.pre-py-sm {
    padding-top: var(--pre-space-sm);
    padding-bottom: var(--pre-space-sm);
}

.pre-py-md {
    padding-top: var(--pre-space-md);
    padding-bottom: var(--pre-space-md);
}

.pre-py-lg {
    padding-top: var(--pre-space-lg);
    padding-bottom: var(--pre-space-lg);
}

.pre-py-xl {
    padding-top: var(--pre-space-xl);
    padding-bottom: var(--pre-space-xl);
}

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

/* Width */
.pre-w-auto {
    width: auto;
}

.pre-w-full {
    width: 100%;
}

.pre-w-screen {
    width: 100vw;
}

.pre-w-min {
    width: min-content;
}

.pre-w-max {
    width: max-content;
}

.pre-w-fit {
    width: fit-content;
}

/* Fractional Widths */
.pre-w-1-2 {
    width: 50%;
}

.pre-w-1-3 {
    width: 33.333333%;
}

.pre-w-2-3 {
    width: 66.666667%;
}

.pre-w-1-4 {
    width: 25%;
}

.pre-w-3-4 {
    width: 75%;
}

.pre-w-1-5 {
    width: 20%;
}

.pre-w-2-5 {
    width: 40%;
}

.pre-w-3-5 {
    width: 60%;
}

.pre-w-4-5 {
    width: 80%;
}

/* Height */
.pre-h-auto {
    height: auto;
}

.pre-h-full {
    height: 100%;
}

.pre-h-screen {
    height: 100vh;
}

.pre-h-min {
    height: min-content;
}

.pre-h-max {
    height: max-content;
}

.pre-h-fit {
    height: fit-content;
}

/* ================================
   TEXT UTILITIES
   ================================ */

/* Alignment */
.pre-text-left {
    text-align: left;
}

.pre-text-center {
    text-align: center;
}

.pre-text-right {
    text-align: right;
}

.pre-text-justify {
    text-align: justify;
}

/* Size */
.pre-text-xs {
    font-size: var(--pre-text-xs);
}

.pre-text-sm {
    font-size: var(--pre-text-sm);
}

.pre-text-base {
    font-size: var(--pre-text-base);
}

.pre-text-lg {
    font-size: var(--pre-text-lg);
}

.pre-text-xl {
    font-size: var(--pre-text-xl);
}

.pre-text-2xl {
    font-size: var(--pre-text-2xl);
}

.pre-text-3xl {
    font-size: var(--pre-text-3xl);
}

/* Weight */
.pre-font-thin {
    font-weight: 100;
}

.pre-font-light {
    font-weight: 300;
}

.pre-font-normal {
    font-weight: 400;
}

.pre-font-medium {
    font-weight: 500;
}

.pre-font-semibold {
    font-weight: 600;
}

.pre-font-bold {
    font-weight: 700;
}

.pre-font-extrabold {
    font-weight: 800;
}

.pre-font-black {
    font-weight: 900;
}

/* Transform */
.pre-uppercase {
    text-transform: uppercase;
}

.pre-lowercase {
    text-transform: lowercase;
}

.pre-capitalize {
    text-transform: capitalize;
}

.pre-normal-case {
    text-transform: none;
}

/* Decoration */
.pre-underline {
    text-decoration: underline;
}

.pre-line-through {
    text-decoration: line-through;
}

.pre-no-underline {
    text-decoration: none;
}

/* ================================
   COLOR UTILITIES
   ================================ */

/* Text Colors */
.pre-text-green {
    color: var(--pre-green);
}

.pre-text-green-light {
    color: var(--pre-green-light);
}

.pre-text-green-dark {
    color: var(--pre-green-dark);
}

.pre-text-gray {
    color: var(--pre-gray);
}

.pre-text-gray-light {
    color: var(--pre-gray-light);
}

.pre-text-gray-dark {
    color: var(--pre-gray-dark);
}

.pre-text-black {
    color: var(--pre-black);
}

.pre-text-white {
    color: var(--pre-white);
}

/* Background Colors */
.pre-bg-green {
    background-color: var(--pre-green);
}

.pre-bg-green-light {
    background-color: var(--pre-green-light);
}

.pre-bg-green-dark {
    background-color: var(--pre-green-dark);
}

.pre-bg-gray {
    background-color: var(--pre-gray);
}

.pre-bg-gray-light {
    background-color: var(--pre-gray-light);
}

.pre-bg-gray-dark {
    background-color: var(--pre-gray-dark);
}

.pre-bg-black {
    background-color: var(--pre-black);
}

.pre-bg-white {
    background-color: var(--pre-white);
}

.pre-bg-transparent {
    background-color: transparent;
}

/* ================================
   BORDER UTILITIES
   ================================ */

/* Border Width */
.pre-border-0 {
    border-width: 0;
}

.pre-border {
    border-width: 1px;
}

.pre-border-2 {
    border-width: 2px;
}

.pre-border-4 {
    border-width: 4px;
}

/* Border Color */
.pre-border-green {
    border-color: var(--pre-green);
}

.pre-border-gray {
    border-color: var(--pre-gray);
}

.pre-border-transparent {
    border-color: transparent;
}

/* Border Radius */
.pre-rounded-none {
    border-radius: 0;
}

.pre-rounded-sm {
    border-radius: var(--pre-radius-sm);
}

.pre-rounded {
    border-radius: var(--pre-radius);
}

.pre-rounded-lg {
    border-radius: var(--pre-radius-lg);
}

.pre-rounded-full {
    border-radius: var(--pre-radius-full);
}

/* ================================
   SHADOW UTILITIES
   ================================ */

.pre-shadow-none {
    box-shadow: none;
}

.pre-shadow-sm {
    box-shadow: var(--pre-shadow-sm);
}

.pre-shadow {
    box-shadow: var(--pre-shadow);
}

.pre-shadow-lg {
    box-shadow: var(--pre-shadow-lg);
}

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

.pre-opacity-0 {
    opacity: 0;
}

.pre-opacity-25 {
    opacity: 0.25;
}

.pre-opacity-50 {
    opacity: 0.5;
}

.pre-opacity-75 {
    opacity: 0.75;
}

.pre-opacity-100 {
    opacity: 1;
}

/* ================================
   POINTER EVENTS
   ================================ */

.pre-pointer-events-none {
    pointer-events: none;
}

.pre-pointer-events-auto {
    pointer-events: auto;
}

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

.pre-cursor-auto {
    cursor: auto;
}

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

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

.pre-cursor-wait {
    cursor: wait;
}

.pre-cursor-text {
    cursor: text;
}

.pre-cursor-move {
    cursor: move;
}

.pre-cursor-help {
    cursor: help;
}

.pre-cursor-not-allowed {
    cursor: not-allowed;
}

/* ================================
   TEXT COLOR UTILITIES
   ================================ */

.pre-text-success {
    color: var(--pre-success);
}

.pre-text-warning {
    color: var(--pre-warning);
}

.pre-text-danger {
    color: var(--pre-danger);
}

.pre-text-info {
    color: var(--pre-info);
}

.pre-text-muted {
    color: var(--pre-text-muted);
}

/* ================================
   SPACING UTILITIES - MARGIN
   ================================ */

.pre-mb-0 { margin-bottom: 0; }
.pre-mb-1 { margin-bottom: 8px; }
.pre-mb-2 { margin-bottom: 16px; }
.pre-mb-3 { margin-bottom: 24px; }
.pre-mb-4 { margin-bottom: 32px; }
.pre-mb-5 { margin-bottom: 40px; }

.pre-mt-0 { margin-top: 0; }
.pre-mt-1 { margin-top: 8px; }
.pre-mt-2 { margin-top: 16px; }
.pre-mt-3 { margin-top: 24px; }
.pre-mt-4 { margin-top: 32px; }
.pre-mt-5 { margin-top: 40px; }

.pre-ml-0 { margin-left: 0; }
.pre-ml-1 { margin-left: 8px; }
.pre-ml-2 { margin-left: 16px; }
.pre-ml-3 { margin-left: 24px; }
.pre-ml-4 { margin-left: 32px; }
.pre-ml-5 { margin-left: 40px; }

.pre-mr-0 { margin-right: 0; }
.pre-mr-1 { margin-right: 8px; }
.pre-mr-2 { margin-right: 16px; }
.pre-mr-3 { margin-right: 24px; }
.pre-mr-4 { margin-right: 32px; }
.pre-mr-5 { margin-right: 40px; }

.pre-mx-0 { margin-left: 0; margin-right: 0; }
.pre-mx-1 { margin-left: 8px; margin-right: 8px; }
.pre-mx-2 { margin-left: 16px; margin-right: 16px; }
.pre-mx-3 { margin-left: 24px; margin-right: 24px; }
.pre-mx-4 { margin-left: 32px; margin-right: 32px; }
.pre-mx-5 { margin-left: 40px; margin-right: 40px; }

.pre-my-0 { margin-top: 0; margin-bottom: 0; }
.pre-my-1 { margin-top: 8px; margin-bottom: 8px; }
.pre-my-2 { margin-top: 16px; margin-bottom: 16px; }
.pre-my-3 { margin-top: 24px; margin-bottom: 24px; }
.pre-my-4 { margin-top: 32px; margin-bottom: 32px; }
.pre-my-5 { margin-top: 40px; margin-bottom: 40px; }

.pre-m-0 { margin: 0; }
.pre-m-1 { margin: 8px; }
.pre-m-2 { margin: 16px; }
.pre-m-3 { margin: 24px; }
.pre-m-4 { margin: 32px; }
.pre-m-5 { margin: 40px; }

/* ================================
   RESPONSIVE UTILITIES
   ================================ */

/* Mobile-only classes */
@media (max-width: 767px) {
    .pre-text-center-mobile {
        text-align: center;
    }

    .pre-w-full-mobile {
        width: 100%;
    }

    .pre-p-sm-mobile {
        padding: var(--pre-space-sm);
    }

    .pre-m-0-mobile {
        margin: 0;
    }

    .pre-flex-col-mobile {
        flex-direction: column;
    }

    .pre-gap-sm-mobile {
        gap: var(--pre-space-sm);
    }
}