/* 
 * Helper Classes CSS
 * City Discovery - Utility helper classes
 */

/* ==========================================
 * DISPLAY UTILITIES
 * ========================================== */
.hidden {
    display: none !important;
}

.visible {
    visibility: visible !important;
}

.invisible {
    visibility: hidden !important;
}

/* ==========================================
 * POSITIONING UTILITIES
 * ========================================== */
.pos-relative {
    position: relative !important;
}

.pos-absolute {
    position: absolute !important;
}

.pos-fixed {
    position: fixed !important;
}

.pos-sticky {
    position: sticky !important;
}

/* Common positioning combinations */
.center-absolute {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

.center-fixed {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

/* ==========================================
 * SIZING UTILITIES
 * ========================================== */
.w-auto {
    width: auto !important;
}

.h-auto {
    height: auto !important;
}

.min-h-screen {
    min-height: 100vh !important;
}

.min-h-50 {
    min-height: 50px !important;
}

.min-h-44 {
    min-height: 44px !important;
}

.max-w-full {
    max-width: 100% !important;
}

.max-h-300 {
    max-height: 300px !important;
}

.max-h-400 {
    max-height: 400px !important;
}

/* ==========================================
 * SPACING UTILITIES
 * ========================================== */
.gap-2 {
    gap: 0.5rem !important;
}

.gap-3 {
    gap: 1rem !important;
}

.gap-4 {
    gap: 1.5rem !important;
}

/* Negative margins */
.mt-n1 {
    margin-top: -0.25rem !important;
}

.mt-n2 {
    margin-top: -0.5rem !important;
}

.mb-n1 {
    margin-bottom: -0.25rem !important;
}

.mb-n2 {
    margin-bottom: -0.5rem !important;
}

/* ==========================================
 * FLEXBOX UTILITIES
 * ========================================== */
.flex-center {
    display: flex;
    align-items: center;
    justify-content: center;
}

.flex-between {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.flex-around {
    display: flex;
    align-items: center;
    justify-content: space-around;
}

.flex-column-center {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.flex-wrap {
    flex-wrap: wrap !important;
}

.flex-nowrap {
    flex-wrap: nowrap !important;
}

.flex-grow-0 {
    flex-grow: 0 !important;
}

.flex-shrink-0 {
    flex-shrink: 0 !important;
}

/* ==========================================
 * TEXT UTILITIES
 * ========================================== */
.text-nowrap {
    white-space: nowrap !important;
}

.text-break {
    word-wrap: break-word !important;
    word-break: break-word !important;
}

.text-ellipsis {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.font-weight-light {
    font-weight: 300 !important;
}

.font-weight-normal {
    font-weight: 400 !important;
}

.font-weight-medium {
    font-weight: 500 !important;
}

.font-weight-semibold {
    font-weight: 600 !important;
}

.font-weight-bold {
    font-weight: 700 !important;
}

/* ==========================================
 * COLOR UTILITIES
 * ========================================== */
.text-white-50 {
    color: rgba(255, 255, 255, 0.5) !important;
}

.text-black-50 {
    color: rgba(0, 0, 0, 0.5) !important;
}

.bg-transparent {
    background-color: transparent !important;
}

.bg-white-50 {
    background-color: rgba(255, 255, 255, 0.5) !important;
}

.bg-black-50 {
    background-color: rgba(0, 0, 0, 0.5) !important;
}

/* ==========================================
 * BORDER UTILITIES
 * ========================================== */
.border-0 {
    border: 0 !important;
}

.border-top-0 {
    border-top: 0 !important;
}

.border-bottom-0 {
    border-bottom: 0 !important;
}

.border-left-0 {
    border-left: 0 !important;
}

.border-right-0 {
    border-right: 0 !important;
}

.rounded-0 {
    border-radius: 0 !important;
}

.rounded-sm {
    border-radius: 0.125rem !important;
}

.rounded-lg {
    border-radius: 0.5rem !important;
}

.rounded-xl {
    border-radius: 0.75rem !important;
}

.rounded-circle {
    border-radius: 50% !important;
}

/* ==========================================
 * SHADOW UTILITIES
 * ========================================== */
.shadow-none {
    box-shadow: none !important;
}

.shadow-xs {
    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;
}

.shadow-sm {
    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;
}

.shadow-md {
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;
}

.shadow-lg {
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;
}

.shadow-xl {
    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;
}

/* ==========================================
 * INTERACTION UTILITIES
 * ========================================== */
.cursor-pointer {
    cursor: pointer !important;
}

.cursor-default {
    cursor: default !important;
}

.cursor-not-allowed {
    cursor: not-allowed !important;
}

.user-select-none {
    user-select: none !important;
}

.user-select-all {
    user-select: all !important;
}

.pointer-events-none {
    pointer-events: none !important;
}

.pointer-events-auto {
    pointer-events: auto !important;
}

/* ==========================================
 * OVERFLOW UTILITIES
 * ========================================== */
.overflow-hidden {
    overflow: hidden !important;
}

.overflow-scroll {
    overflow: scroll !important;
}

.overflow-auto {
    overflow: auto !important;
}

.overflow-x-hidden {
    overflow-x: hidden !important;
}

.overflow-y-hidden {
    overflow-y: hidden !important;
}

.overflow-x-scroll {
    overflow-x: scroll !important;
}

.overflow-y-scroll {
    overflow-y: scroll !important;
}

.overflow-x-auto {
    overflow-x: auto !important;
}

.overflow-y-auto {
    overflow-y: auto !important;
}

/* ==========================================
 * Z-INDEX UTILITIES
 * ========================================== */
.z-index-0 {
    z-index: 0 !important;
}

.z-index-1 {
    z-index: 1 !important;
}

.z-index-10 {
    z-index: 10 !important;
}

.z-index-50 {
    z-index: 50 !important;
}

.z-index-100 {
    z-index: 100 !important;
}

.z-index-1000 {
    z-index: 1000 !important;
}

.z-index-9999 {
    z-index: 9999 !important;
}

/* ==========================================
 * GAME-SPECIFIC HELPERS
 * ========================================== */
.touch-action-manipulation {
    touch-action: manipulation !important;
}

.touch-action-none {
    touch-action: none !important;
}

.card-full-width {
    width: 100% !important;
    max-width: 100% !important;
}

.icon-large {
    font-size: 2rem;
}

.icon-large-muted {
    font-size: 2rem;
    opacity: 0.7;
}

.btn-mobile-friendly {
    min-height: 44px;
    touch-action: manipulation;
}

@media (max-width: 768px) {
    .btn-mobile-friendly {
        min-height: 50px;
        padding: 15px 25px;
        font-size: 1.1rem;
    }
}

/* ==========================================
 * ACCESSIBILITY HELPERS
 * ========================================== */
.sr-only {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

.focus-ring:focus {
    outline: 2px solid #0d6efd;
    outline-offset: 2px;
}

.skip-link {
    position: absolute;
    top: -40px;
    left: 6px;
    background: #000;
    color: #fff;
    padding: 8px;
    text-decoration: none;
    z-index: 10000;
}

.skip-link:focus {
    top: 6px;
}