/**
 * Safari Booking - Utility Classes
 * Helper classes for common patterns
 */

/* ============================================
   Text Utilities
   ============================================ */
.safari-text-muted {
    color: var(--color-text-muted);
}

.safari-text-secondary {
    color: var(--color-text-secondary);
}

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

.safari-text-accent {
    color: var(--color-accent);
}

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

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

.safari-text-error {
    color: var(--color-error);
}

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

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

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

.safari-text-left {
    text-align: left;
}

.safari-text-uppercase {
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

.safari-text-small {
    font-size: var(--font-size-small);
}

.safari-text-tiny {
    font-size: var(--font-size-tiny);
}

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

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

/* ============================================
   Background Utilities
   ============================================ */
.safari-bg-light {
    background: var(--color-light-bg);
}

.safari-bg-surface {
    background: var(--color-surface);
}

.safari-bg-subtle {
    background: var(--color-subtle-bg);
}

.safari-bg-accent {
    background: var(--color-accent);
}

.safari-bg-success {
    background: var(--color-success-bg);
}

.safari-bg-warning {
    background: var(--color-warning-bg);
}

.safari-bg-error {
    background: var(--color-error-bg);
}

.safari-bg-info {
    background: var(--color-info-bg);
}

/* ============================================
   Spacing Utilities
   ============================================ */
.safari-mt-xs { margin-top: var(--spacing-xs); }
.safari-mt-sm { margin-top: var(--spacing-sm); }
.safari-mt-md { margin-top: var(--spacing-md); }
.safari-mt-lg { margin-top: var(--spacing-lg); }
.safari-mt-xl { margin-top: var(--spacing-xl); }

.safari-mb-xs { margin-bottom: var(--spacing-xs); }
.safari-mb-sm { margin-bottom: var(--spacing-sm); }
.safari-mb-md { margin-bottom: var(--spacing-md); }
.safari-mb-lg { margin-bottom: var(--spacing-lg); }
.safari-mb-xl { margin-bottom: var(--spacing-xl); }

.safari-ml-auto { margin-left: auto; }
.safari-mr-auto { margin-right: auto; }
.safari-mx-auto { margin-left: auto; margin-right: auto; }

.safari-p-xs { padding: var(--spacing-xs); }
.safari-p-sm { padding: var(--spacing-sm); }
.safari-p-md { padding: var(--spacing-md); }
.safari-p-lg { padding: var(--spacing-lg); }
.safari-p-xl { padding: var(--spacing-xl); }

/* ============================================
   Display Utilities
   ============================================ */
.safari-flex {
    display: flex;
}

.safari-flex-col {
    display: flex;
    flex-direction: column;
}

.safari-flex-wrap {
    flex-wrap: wrap;
}

.safari-items-center {
    align-items: center;
}

.safari-items-start {
    align-items: flex-start;
}

.safari-items-end {
    align-items: flex-end;
}

.safari-justify-center {
    justify-content: center;
}

.safari-justify-between {
    justify-content: space-between;
}

.safari-justify-end {
    justify-content: flex-end;
}

.safari-gap-xs { gap: var(--spacing-xs); }
.safari-gap-sm { gap: var(--spacing-sm); }
.safari-gap-md { gap: var(--spacing-md); }
.safari-gap-lg { gap: var(--spacing-lg); }

.safari-hidden {
    display: none !important;
}

.safari-block {
    display: block;
}

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

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

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

.safari-border-strong {
    border: 1px solid var(--color-border-strong);
}

.safari-border-t {
    border-top: 1px solid var(--color-border);
}

.safari-border-b {
    border-bottom: 1px solid var(--color-border);
}

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

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

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

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

.safari-rounded-full {
    border-radius: 999px;
}

/* ============================================
   Shadow Utilities
   ============================================ */
.safari-shadow-subtle {
    box-shadow: var(--shadow-subtle);
}

.safari-shadow-medium {
    box-shadow: var(--shadow-medium);
}

.safari-shadow-strong {
    box-shadow: var(--shadow-strong);
}

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

.safari-w-auto {
    width: auto;
}

.safari-max-w-none {
    max-width: none;
}

/* ============================================
   Visibility Utilities
   ============================================ */
.safari-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;
}

/* ============================================
   Transition Utilities
   ============================================ */
.safari-transition {
    transition: var(--transition);
}

.safari-transition-fast {
    transition: var(--transition-fast);
}

/* ============================================
   Responsive Visibility
   ============================================ */
@media (max-width: 768px) {
    .safari-hide-mobile {
        display: none !important;
    }
}

@media (min-width: 769px) {
    .safari-hide-desktop {
        display: none !important;
    }
}

/* ============================================
   Print Utilities
   ============================================ */
@media print {
    .safari-hide-print {
        display: none !important;
    }
}
