/* Cross-Browser Compatibility Fixes for DarCare */

/* ============================================
   CSS Custom Properties (CSS Variables) Fallback
   ============================================ */
/* For browsers that don't support CSS variables (IE11, older browsers) */
@supports not (--css: variables) {
    :root {
        /* Fallback values - these will be used if CSS variables aren't supported */
        --primary-blue: #007bff;
        --primary-blue-dark: #0056b3;
        --primary-blue-light: #e7f3ff;
        --white: #ffffff;
        --light-gray: #f5f7fa;
        --gray: #6c757d;
        --dark-gray: #343a40;
        --black: #212529;
        --spacing-xs: 0.25rem;
        --spacing-sm: 0.5rem;
        --spacing-md: 0.75rem;
        --spacing-lg: 1rem;
        --spacing-xl: 1.5rem;
        --radius-sm: 8px;
        --radius-md: 12px;
        --radius-lg: 16px;
    }
}

/* ============================================
   Flexbox Gap Property Fallback
   ============================================ */
/* For browsers that don't support gap property in flexbox (Safari < 14.1, older browsers) */
@supports not (gap: 1rem) {
    /* Fallback using margin for flex containers */
    .header-icons,
    .search-bar,
    .services-grid,
    .dashboard-stats,
    .filters-grid,
    .filters-form-modern,
    .filter-group-modern,
    .filter-label,
    .order-info-grid-modern,
    .orders-grid,
    .orders-stats-modern {
        /* Remove gap and use margin instead */
    }
    
    .header-icons > * + * {
        margin-left: var(--spacing-md);
    }
    
    .search-bar > * + * {
        margin-left: var(--spacing-sm);
    }
    
    .services-grid > * + * {
        margin-top: var(--spacing-sm);
    }
    
    .dashboard-stats > * + * {
        margin-left: var(--spacing-md);
    }
    
    .filters-grid > * + * {
        margin-top: var(--spacing-lg);
    }
    
    .filter-group-modern > * + * {
        margin-top: var(--spacing-sm);
    }
    
    .filter-label > * + * {
        margin-left: var(--spacing-sm);
    }
}

/* ============================================
   CSS Grid Gap Fallback
   ============================================ */
/* For browsers that don't support gap in grid (IE11, older browsers) */
@supports not (display: grid) {
    .services-grid,
    .filters-grid,
    .orders-grid,
    .orders-stats-modern,
    .order-info-grid-modern {
        display: flex;
        flex-wrap: wrap;
    }
    
    .services-grid > * {
        margin: calc(var(--spacing-sm) / 2);
    }
    
    .filters-grid > * {
        margin: calc(var(--spacing-lg) / 2);
    }
}

/* Grid gap fallback for browsers that support grid but not gap */
@supports (display: grid) and not (gap: 1rem) {
    .services-grid > * {
        margin: calc(var(--spacing-sm) / 2);
    }
    
    .filters-grid > * {
        margin: calc(var(--spacing-lg) / 2);
    }
    
    .orders-grid > * {
        margin: calc(var(--spacing-md) / 2);
    }
}

/* ============================================
   Backdrop Filter Fallback
   ============================================ */
/* For browsers that don't support backdrop-filter (Firefox < 103, older browsers) */
@supports not (backdrop-filter: blur(10px)) {
    .mobile-header,
    .banner-carousel,
    .toast,
    .loading-overlay {
        /* Fallback: Use solid background instead of glass effect */
        background: rgba(255, 255, 255, 0.95) !important;
    }
    
    /* Remove backdrop-filter for unsupported browsers */
    .mobile-header {
        background: rgba(255, 255, 255, 0.95);
    }
}

/* ============================================
   Scroll Behavior Smooth Fallback
   ============================================ */
/* For browsers that don't support smooth scrolling */
@supports not (scroll-behavior: smooth) {
    html {
        scroll-behavior: auto;
    }
    
    /* Use JavaScript fallback (handled in browser-compat.js) */
}

/* ============================================
   Sticky Position Fallback
   ============================================ */
/* For browsers that don't support position: sticky (IE11) */
@supports not (position: sticky) {
    .mobile-header {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        width: 100%;
    }
    
    body {
        padding-top: 80px; /* Compensate for fixed header */
    }
}

/* ============================================
   CSS Grid Auto-fit Fallback
   ============================================ */
/* For browsers that don't support auto-fit */
@supports not (grid-template-columns: repeat(auto-fit, minmax(200px, 1fr))) {
    .services-grid,
    .filters-grid,
    .orders-grid {
        display: flex;
        flex-wrap: wrap;
    }
    
    .services-grid > *,
    .filters-grid > *,
    .orders-grid > * {
        flex: 1 1 200px;
        min-width: 200px;
        max-width: 100%;
    }
}

/* ============================================
   Transform Fallback
   ============================================ */
/* Ensure transform works with vendor prefixes */
.transform-scale {
    -webkit-transform: scale(1);
    -moz-transform: scale(1);
    -ms-transform: scale(1);
    -o-transform: scale(1);
    transform: scale(1);
}

/* ============================================
   Transition Fallback
   ============================================ */
/* Ensure transitions work in older browsers */
.transition-all {
    -webkit-transition: all 0.3s ease;
    -moz-transition: all 0.3s ease;
    -o-transition: all 0.3s ease;
    transition: all 0.3s ease;
}

/* ============================================
   Animation Fallback
   ============================================ */
/* For browsers that don't support CSS animations */
@supports not (animation: fadeIn 0.5s) {
    .fade-in,
    .slide-in,
    .scale-in {
        opacity: 1 !important;
        transform: none !important;
    }
}

/* ============================================
   Focus Visible Fallback
   ============================================ */
/* For browsers that don't support :focus-visible */
@supports not selector(:focus-visible) {
    *:focus {
        outline: 3px solid var(--primary-blue);
        outline-offset: 2px;
    }
}

/* ============================================
   Appearance Property Fallback
   ============================================ */
/* Ensure appearance: none works across browsers */
select,
input[type="checkbox"],
input[type="radio"] {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}

/* ============================================
   Border Radius Fallback
   ============================================ */
/* Ensure border-radius works in older browsers */
.rounded {
    -webkit-border-radius: var(--radius-md);
    -moz-border-radius: var(--radius-md);
    border-radius: var(--radius-md);
}

/* ============================================
   Box Shadow Fallback
   ============================================ */
/* Ensure box-shadow works in older browsers */
.shadow {
    -webkit-box-shadow: var(--shadow-md);
    -moz-box-shadow: var(--shadow-md);
    box-shadow: var(--shadow-md);
}

/* ============================================
   Text Selection Fallback
   ============================================ */
/* Ensure text selection styling works */
::selection {
    background: rgba(0, 123, 255, 0.2);
    color: var(--black);
}

::-moz-selection {
    background: rgba(0, 123, 255, 0.2);
    color: var(--black);
}

/* ============================================
   Overflow Scrolling Fallback
   ============================================ */
/* Smooth scrolling on iOS */
.scroll-smooth {
    -webkit-overflow-scrolling: touch;
    overflow-scrolling: touch;
}

/* ============================================
   Font Smoothing
   ============================================ */
/* Ensure font smoothing works across browsers */
body {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
}

/* ============================================
   Flexbox Fallback for Older Browsers
   ============================================ */
/* For IE10 and IE11 flexbox support */
.flex {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
}

.flex-column {
    -webkit-box-orient: vertical;
    -ms-flex-direction: column;
    flex-direction: column;
}

.justify-between {
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: space-between;
}

.align-center {
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
}

/* ============================================
   Grid Fallback for IE11
   ============================================ */
/* Use autoprefixer or manual fallbacks for grid */
@supports not (display: grid) {
    .grid {
        display: -ms-grid;
        display: grid;
    }
}

/* ============================================
   Media Query Fallbacks
   ============================================ */
/* Ensure media queries work in older browsers */
@media screen and (max-width: 767px) {
    .container {
        padding: 0 0.5rem;
    }
}

/* ============================================
   Print Styles Compatibility
   ============================================ */
@media print {
    * {
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
        color-adjust: exact;
    }
}

/* ============================================
   High Contrast Mode Support
   ============================================ */
@media (prefers-contrast: high) {
    .btn,
    .card,
    .service-card-compact {
        border: 2px solid currentColor;
    }
}

/* ============================================
   Reduced Motion Support
   ============================================ */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        -webkit-animation-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
        -webkit-animation-iteration-count: 1 !important;
        animation-iteration-count: 1 !important;
        -webkit-transition-duration: 0.01ms !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}

/* ============================================
   Dark Mode Support (Future Enhancement)
   ============================================ */
@media (prefers-color-scheme: dark) {
    /* Dark mode styles can be added here */
    /* Currently not implemented but prepared for future */
}

/* ============================================
   Safari Specific Fixes
   ============================================ */
/* Fix for Safari flexbox gap issue */
@supports (-webkit-appearance: none) {
    .services-grid {
        /* Safari may need explicit margin instead of gap */
    }
}

/* Fix for Safari backdrop-filter */
@supports (-webkit-backdrop-filter: blur(10px)) {
    .mobile-header {
        -webkit-backdrop-filter: blur(20px);
        backdrop-filter: blur(20px);
    }
}

/* ============================================
   Opera Specific Fixes
   ============================================ */
/* Opera is Chromium-based but may have rendering differences */
.browser-opera .mobile-header {
    /* Ensure backdrop filter works correctly in Opera */
    -webkit-backdrop-filter: blur(20px);
    backdrop-filter: blur(20px);
    background: rgba(255, 255, 255, 0.85);
}

/* Fix for Opera CSS Grid rendering */
.browser-opera .services-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--spacing-md);
    /* Ensure proper grid rendering */
    -webkit-transform: translateZ(0);
    transform: translateZ(0);
}

/* Fix for Opera flexbox gap support */
.browser-opera .header-icons,
.browser-opera .search-bar {
    display: flex;
    gap: var(--spacing-md);
    /* Force hardware acceleration for smoother rendering */
    -webkit-transform: translateZ(0);
    transform: translateZ(0);
}

/* Fix for Opera font rendering */
.browser-opera body {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
}

/* Fix for Opera backdrop filter on banner */
.browser-opera .banner-carousel {
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
}

/* Ensure consistent box-shadow rendering in Opera */
.browser-opera .mobile-header,
.browser-opera .banner-carousel,
.browser-opera .service-card-compact {
    -webkit-box-shadow: var(--shadow-md);
    box-shadow: var(--shadow-md);
}

/* Fix for Opera transform and transition rendering */
.browser-opera .header-icon,
.browser-opera .service-icon {
    -webkit-transform: translateZ(0);
    transform: translateZ(0);
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
}

/* Fix for Opera gradient rendering */
.browser-opera .header-title {
    background: linear-gradient(135deg, var(--primary-blue), var(--light-blue));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    /* Ensure proper rendering */
    -webkit-transform: translateZ(0);
    transform: translateZ(0);
}

/* Fix for Opera sticky position */
.browser-opera .mobile-header {
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 1000;
}

/* Ensure Opera renders border-radius correctly */
.browser-opera .service-circle,
.browser-opera .banner-carousel,
.browser-opera .search-bar {
    -webkit-border-radius: var(--radius-md);
    border-radius: var(--radius-md);
}

/* Fix for Opera animation performance */
.browser-opera .service-icon,
.browser-opera .header-icon {
    will-change: transform;
    -webkit-will-change: transform;
}

/* ============================================
   Firefox Specific Fixes
   ============================================ */
@-moz-document url-prefix() {
    /* Firefox specific styles */
    select {
        text-indent: 0.01px;
        text-overflow: '';
    }
    
    /* Fix for Firefox scrollbar */
    * {
        scrollbar-width: thin;
        scrollbar-color: rgba(0, 0, 0, 0.2) transparent;
    }
}

/* ============================================
   Edge/IE11 Specific Fixes
   ============================================ */
/* For Edge Legacy and IE11 */
@supports (-ms-ime-align: auto) {
    .container {
        display: block;
    }
    
    .services-grid {
        display: -ms-flexbox;
        display: flex;
        -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    }
}

/* ============================================
   Mobile Browser Specific Fixes
   ============================================ */
/* iOS Safari fixes */
@supports (-webkit-touch-callout: none) {
    input,
    textarea,
    select {
        font-size: 16px; /* Prevents zoom on focus in iOS */
    }
    
    /* Fix for iOS Safari viewport height issue */
    .mobile-header {
        position: -webkit-sticky;
        position: sticky;
    }
}

/* Android Chrome fixes */
@media screen and (-webkit-min-device-pixel-ratio: 0) {
    select {
        background-size: 20px;
    }
}

/* ============================================
   Additional Cross-Browser Fixes
   ============================================ */

/* Fix for button appearance across browsers */
button,
input[type="button"],
input[type="submit"],
input[type="reset"] {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    cursor: pointer;
}

/* Fix for input number spinner in Chrome/Safari */
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

input[type="number"] {
    -moz-appearance: textfield;
}

/* Fix for textarea resize handle */
textarea {
    resize: vertical;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}

/* Fix for select arrow in Firefox */
@-moz-document url-prefix() {
    select {
        text-indent: 0.01px;
        text-overflow: '';
        background-image: none;
    }
}

/* Fix for placeholder text opacity */
input::placeholder,
textarea::placeholder {
    opacity: 0.6;
    -webkit-opacity: 0.6;
    -moz-opacity: 0.6;
}

/* Fix for will-change property */
.will-change {
    will-change: transform;
    -webkit-will-change: transform;
    -moz-will-change: transform;
}

/* Fix for user-select */
.no-select {
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

/* Fix for touch-action */
.touch-pan {
    -webkit-touch-callout: none;
    -webkit-tap-highlight-color: transparent;
    touch-action: pan-y;
}

/* Fix for image rendering */
img {
    image-rendering: -webkit-optimize-contrast;
    image-rendering: crisp-edges;
    image-rendering: optimize-quality;
}

/* Fix for text rendering */
body {
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* Fix for box-sizing */
*,
*::before,
*::after {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}

/* Fix for display: flex in older browsers */
.flex {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
}

.flex-column {
    -webkit-box-orient: vertical;
    -ms-flex-direction: column;
    flex-direction: column;
}

/* Fix for justify-content */
.justify-center {
    -webkit-box-pack: center;
    -ms-flex-pack: center;
    justify-content: center;
}

.justify-between {
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: space-between;
}

.justify-around {
    -webkit-box-pack: distribute;
    -ms-flex-pack: distribute;
    justify-content: space-around;
}

/* Fix for align-items */
.align-start {
    -webkit-box-align: start;
    -ms-flex-align: start;
    align-items: flex-start;
}

.align-center {
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
}

.align-end {
    -webkit-box-align: end;
    -ms-flex-align: end;
    align-items: flex-end;
}

/* Fix for flex-wrap */
.flex-wrap {
    -webkit-flex-wrap: wrap;
    -ms-flex-wrap: wrap;
    flex-wrap: wrap;
}

/* Fix for order property */
.order-first {
    -webkit-box-ordinal-group: 0;
    -ms-flex-order: -1;
    order: -1;
}

.order-last {
    -webkit-box-ordinal-group: 2;
    -ms-flex-order: 999;
    order: 999;
}
