/**
 * Utility Classes - Replace Inline Styles
 * Purpose: Central repository for commonly used inline style patterns
 * Phase 2: Complete inline style extraction
 * Version: 1.0.0
 * Created: 2025-10-11
 */

/* ===================================
   WIDTH & MIN-WIDTH UTILITIES
   =================================== */

.min-w-80 { min-width: 80px; }
.min-w-100 { min-width: 100px; }
.min-w-120 { min-width: 120px; }
.min-w-150 { min-width: 150px; }
.min-w-200 { min-width: 200px; }
.min-w-250 { min-width: 250px; }

.w-80 { width: 80px; }
.w-100 { width: 100px; }
.w-120 { width: 120px; }
.w-150 { width: 150px; }
.w-200 { width: 200px; }

.max-w-200 { max-width: 200px; }
.max-w-300 { max-width: 300px; }
.max-w-400 { max-width: 400px; }
.max-w-500 { max-width: 500px; }
.max-w-600 { max-width: 600px; }

/* ===================================
   HEIGHT UTILITIES
   =================================== */

.min-h-44 { min-height: 44px; }
.min-h-48 { min-height: 48px; }
.min-h-60 { min-height: 60px; }
.min-h-80 { min-height: 80px; }
.min-h-100 { min-height: 100px; }

.h-60 { height: 60px; }
.h-80 { height: 80px; }
.h-100 { height: 100px; }

/* ===================================
   WHITESPACE UTILITIES
   =================================== */

.ws-nowrap { white-space: nowrap; }
.ws-normal { white-space: normal; }
.ws-pre { white-space: pre; }
.ws-pre-wrap { white-space: pre-wrap; }

/* ===================================
   TEXT OVERFLOW UTILITIES
   =================================== */

.text-ellipsis {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.text-truncate-2 {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.text-truncate-3 {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* ===================================
   FONT SIZE UTILITIES (Beyond Bootstrap)
   =================================== */

.fs-11 { font-size: 0.6875rem; }  /* 11px */
.fs-12 { font-size: 0.75rem; }     /* 12px */
.fs-13 { font-size: 0.8125rem; }   /* 13px */
.fs-14 { font-size: 0.875rem; }    /* 14px */
.fs-15 { font-size: 0.9375rem; }   /* 15px */
.fs-16 { font-size: 1rem; }        /* 16px */
.fs-18 { font-size: 1.125rem; }    /* 18px */
.fs-20 { font-size: 1.25rem; }     /* 20px */
.fs-24 { font-size: 1.5rem; }      /* 24px */

/* ===================================
   FONT WEIGHT UTILITIES
   =================================== */

.fw-300 { font-weight: 300; }
.fw-400 { font-weight: 400; }
.fw-500 { font-weight: 500; }
.fw-600 { font-weight: 600; }
.fw-700 { font-weight: 700; }
.fw-800 { font-weight: 800; }

/* ===================================
   COLOR UTILITIES
   =================================== */

.text-gray-600 { color: #6c757d; }
.text-gray-700 { color: #495057; }
.text-gray-800 { color: #343a40; }
.text-gray-900 { color: #212529; }

.bg-light-gray { background-color: #f8f9fa; }
.bg-lighter-gray { background-color: #f5f6f7; }

/* ===================================
   BORDER RADIUS UTILITIES
   =================================== */

.rounded-4 { border-radius: 0.25rem; }
.rounded-6 { border-radius: 0.375rem; }
.rounded-8 { border-radius: 0.5rem; }
.rounded-10 { border-radius: 0.625rem; }
.rounded-12 { border-radius: 0.75rem; }
.rounded-15 { border-radius: 0.9375rem; }
.rounded-20 { border-radius: 1.25rem; }

/* ===================================
   PADDING UTILITIES (Specific)
   =================================== */

.p-05 { padding: 0.3125rem; }  /* 5px */
.p-10 { padding: 0.625rem; }   /* 10px */
.p-15 { padding: 0.9375rem; }  /* 15px */
.p-20 { padding: 1.25rem; }    /* 20px */

.px-05 { padding-left: 0.3125rem; padding-right: 0.3125rem; }
.px-10 { padding-left: 0.625rem; padding-right: 0.625rem; }
.px-15 { padding-left: 0.9375rem; padding-right: 0.9375rem; }
.px-20 { padding-left: 1.25rem; padding-right: 1.25rem; }

.py-05 { padding-top: 0.3125rem; padding-bottom: 0.3125rem; }
.py-10 { padding-top: 0.625rem; padding-bottom: 0.625rem; }
.py-15 { padding-top: 0.9375rem; padding-bottom: 0.9375rem; }
.py-20 { padding-top: 1.25rem; padding-bottom: 1.25rem; }

/* ===================================
   MARGIN UTILITIES (Specific)
   =================================== */

.m-05 { margin: 0.3125rem; }
.m-10 { margin: 0.625rem; }
.m-15 { margin: 0.9375rem; }
.m-20 { margin: 1.25rem; }

.mx-05 { margin-left: 0.3125rem; margin-right: 0.3125rem; }
.mx-10 { margin-left: 0.625rem; margin-right: 0.625rem; }
.mx-15 { margin-left: 0.9375rem; margin-right: 0.9375rem; }
.mx-20 { margin-left: 1.25rem; margin-right: 1.25rem; }

.my-05 { margin-top: 0.3125rem; margin-bottom: 0.3125rem; }
.my-10 { margin-top: 0.625rem; margin-bottom: 0.625rem; }
.my-15 { margin-top: 0.9375rem; margin-bottom: 0.9375rem; }
.my-20 { margin-top: 1.25rem; margin-bottom: 1.25rem; }

/* ===================================
   GAP UTILITIES (For Flexbox/Grid)
   =================================== */

.gap-05 { gap: 0.3125rem; }
.gap-10 { gap: 0.625rem; }
.gap-15 { gap: 0.9375rem; }
.gap-20 { gap: 1.25rem; }

/* ===================================
   CURSOR UTILITIES
   =================================== */

.cursor-pointer { cursor: pointer; }
.cursor-default { cursor: default; }
.cursor-not-allowed { cursor: not-allowed; }
.cursor-help { cursor: help; }

/* ===================================
   VERTICAL ALIGN UTILITIES
   =================================== */

.va-top { vertical-align: top; }
.va-middle { vertical-align: middle; }
.va-bottom { vertical-align: bottom; }
.va-baseline { vertical-align: baseline; }

/* ===================================
   OPACITY UTILITIES
   =================================== */

.opacity-50 { opacity: 0.5; }
.opacity-60 { opacity: 0.6; }
.opacity-70 { opacity: 0.7; }
.opacity-80 { opacity: 0.8; }
.opacity-90 { opacity: 0.9; }

/* ===================================
   ICON SIZE UTILITIES
   =================================== */

.icon-sm { font-size: 1rem; }     /* 16px */
.icon-md { font-size: 1.25rem; }  /* 20px */
.icon-lg { font-size: 1.5rem; }   /* 24px */
.icon-xl { font-size: 2rem; }     /* 32px */
.icon-2xl { font-size: 2.5rem; }  /* 40px */
.icon-3xl { font-size: 3rem; }    /* 48px */

/* ===================================
   BADGE/LABEL UTILITIES
   =================================== */

.badge-custom {
    display: inline-block;
    padding: 0.25rem 0.5rem;
    font-size: 0.75rem;
    font-weight: 600;
    line-height: 1;
    border-radius: 0.25rem;
}

.label-inline {
    display: inline-block;
    min-width: 120px;
    font-weight: 600;
}

/* ===================================
   TABLE UTILITIES
   =================================== */

.table-cell-nowrap {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 200px;
}

.table-cell-center {
    text-align: center;
    vertical-align: middle;
}

.table-cell-actions {
    white-space: nowrap;
    text-align: center;
    min-width: 150px;
}

/* ===================================
   FORM UTILITIES
   =================================== */

.form-label-required::after {
    content: ' *';
    color: #dc3545;
}

.form-help-text {
    font-size: 0.875rem;
    color: #6c757d;
    margin-top: 0.25rem;
}

.form-inline-group {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}

/* ===================================
   CARD UTILITIES
   =================================== */

.card-hover {
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.card-hover:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

.card-compact {
    padding: 0.75rem;
}

.card-header-compact {
    padding: 0.5rem 0.75rem;
    font-size: 0.9375rem;
    font-weight: 600;
}

/* ===================================
   BUTTON UTILITIES
   =================================== */

.btn-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.375rem;
}

.btn-icon-only {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    padding: 0;
}

.btn-compact {
    padding: 0.375rem 0.75rem;
    font-size: 0.875rem;
}

/* ===================================
   FLEX UTILITIES (Beyond Bootstrap)
   =================================== */

.flex-center {
    display: flex;
    align-items: center;
    justify-content: center;
}

.flex-between {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.flex-start {
    display: flex;
    align-items: center;
    justify-content: flex-start;
}

.flex-end {
    display: flex;
    align-items: center;
    justify-content: flex-end;
}

.flex-column-center {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

/* ===================================
   POSITION UTILITIES
   =================================== */

.position-center {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

.position-top-right {
    position: absolute;
    top: 1rem;
    right: 1rem;
}

.position-bottom-right {
    position: absolute;
    bottom: 1rem;
    right: 1rem;
}

/* ===================================
   ANIMATION UTILITIES
   =================================== */

.transition-all {
    transition: all 0.2s ease;
}

.transition-fast {
    transition: all 0.1s ease;
}

.transition-slow {
    transition: all 0.3s ease;
}

.hover-scale:hover {
    transform: scale(1.05);
}

.hover-opacity:hover {
    opacity: 0.8;
}

/* ===================================
   MOBILE-SPECIFIC UTILITIES
   =================================== */

@media (max-width: 767px) {
    .mobile-full-width {
        width: 100% !important;
    }
    
    .mobile-text-center {
        text-align: center !important;
    }
    
    .mobile-p-2 {
        padding: 0.5rem !important;
    }
    
    .mobile-m-0 {
        margin: 0 !important;
    }
    
    .mobile-fs-sm {
        font-size: 0.875rem !important;
    }
}

/* ===================================
   PRINT UTILITIES
   =================================== */

@media print {
    .no-print {
        display: none !important;
    }
    
    .print-only {
        display: block !important;
    }
}


