/* ========== BROWSER-SPECIFIC FIXES ========== */
/* Additional fixes for specific browser rendering issues */

/* ========== CHROME/WEBKIT SPECIFIC FIXES ========== */
@media screen and (-webkit-min-device-pixel-ratio: 0) {
    /* Chrome/Safari specific styles */
    
    /* Fix for Chrome's default button styling */
    button, input[type="button"], input[type="submit"] {
        -webkit-appearance: none;
        appearance: none;
    }
    
    /* Fix for Chrome's autofill styling */
    input:-webkit-autofill,
    input:-webkit-autofill:hover,
    input:-webkit-autofill:focus,
    input:-webkit-autofill:active {
        -webkit-box-shadow: 0 0 0 30px white inset !important;
        -webkit-text-fill-color: #1A2F3F !important;
    }
    
    /* Fix for Chrome's search input styling */
    input[type="search"]::-webkit-search-decoration,
    input[type="search"]::-webkit-search-cancel-button,
    input[type="search"]::-webkit-search-results-button,
    input[type="search"]::-webkit-search-results-decoration {
        -webkit-appearance: none;
        appearance: none;
    }
    
    /* Fix for Chrome's number input spinners */
    input[type="number"]::-webkit-outer-spin-button,
    input[type="number"]::-webkit-inner-spin-button {
        -webkit-appearance: none;
        appearance: none;
        margin: 0;
    }
    
    /* Fix for Chrome's date input styling */
    input[type="date"]::-webkit-calendar-picker-indicator {
        color: #FF0000;
        opacity: 1;
    }
    
    /* Fix for Chrome's file input styling */
    input[type="file"]::-webkit-file-upload-button {
        -webkit-appearance: button;
        background: #FF0000;
        color: white;
        border: none;
        padding: 8px 16px;
        border-radius: 4px;
        cursor: pointer;
    }
}

/* ========== FIREFOX SPECIFIC FIXES ========== */
@-moz-document url-prefix() {
    /* Firefox specific styles */
    
    /* Fix for Firefox button styling */
    button, input[type="button"], input[type="submit"] {
        -moz-appearance: none;
        appearance: none;
    }
    
    /* Fix for Firefox focus outline */
    button::-moz-focus-inner,
    input[type="button"]::-moz-focus-inner,
    input[type="submit"]::-moz-focus-inner {
        border: 0;
        padding: 0;
    }
    
    /* Fix for Firefox number input */
    input[type="number"] {
        -moz-appearance: textfield;
    }
    
    /* Fix for Firefox placeholder styling */
    input::-moz-placeholder,
    textarea::-moz-placeholder {
        color: #999;
        opacity: 1;
    }
    
    /* Fix for Firefox selection styling */
    ::-moz-selection {
        background-color: #FF0000;
        color: white;
    }
}

/* ========== SAFARI SPECIFIC FIXES ========== */
@supports (-webkit-appearance: none) and (not (overflow: -webkit-marquee)) and (not (-ms-ime-align: auto)) {
    /* Safari specific styles */
    
    /* Fix for Safari's default button appearance */
    button, input[type="button"], input[type="submit"] {
        -webkit-appearance: none;
        appearance: none;
        border-radius: 0;
    }
    
    /* Fix for Safari's touch callout */
    * {
        -webkit-touch-callout: none;
        -webkit-tap-highlight-color: transparent;
    }
    
    /* Allow text selection for inputs and text areas */
    input, textarea {
        -webkit-user-select: text;
        user-select: text;
    }
    
    /* Fix for Safari's momentum scrolling */
    body, .scroll-container {
        -webkit-overflow-scrolling: touch;
    }
    
    /* Fix for Safari's font smoothing */
    * {
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
    }
}

/* ========== EDGE SPECIFIC FIXES ========== */
@supports (-ms-ime-align: auto) {
    /* Microsoft Edge specific styles */
    
    /* Fix for Edge button styling */
    button, input[type="button"], input[type="submit"] {
        -ms-appearance: none;
        appearance: none;
    }
    
    /* Fix for Edge flexbox issues */
    .flex-container {
        display: -ms-flexbox;
        display: flex;
    }
    
    /* Fix for Edge grid issues */
    .grid-container {
        display: -ms-grid;
        display: grid;
    }
    
    /* Fix for Edge scrollbar styling */
    body {
        -ms-overflow-style: scrollbar;
    }
}

/* ========== INTERNET EXPLORER 11 FIXES ========== */
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
    /* IE11 specific styles */
    
    /* Fix for IE11 flexbox */
    .flex-container {
        display: -ms-flexbox;
        display: flex;
    }
    
    .flex-item {
        -ms-flex: 1;
        flex: 1;
    }
    
    /* Fix for IE11 object-fit */
    .object-fit-cover {
        object-fit: cover;
        font-family: 'object-fit: cover;';
    }
    
    /* Fix for IE11 viewport units */
    .full-height {
        height: 100vh;
        height: expression(document.body.clientHeight + "px");
    }
    
    /* Fix for IE11 CSS variables fallback */
    .primary-color {
        color: #FF0000; /* Fallback */
        color: var(--primary-color, #FF0000);
    }
    
    /* Fix for IE11 grid fallback */
    .grid-fallback {
        display: table;
        width: 100%;
    }
    
    .grid-fallback > * {
        display: table-cell;
        vertical-align: top;
    }
}

/* ========== MOBILE BROWSER FIXES ========== */

/* iOS Safari fixes */
@supports (-webkit-touch-callout: none) {
    /* Fix for iOS Safari viewport bug */
    body {
        min-height: 100vh;
        min-height: -webkit-fill-available;
    }
    
    html {
        height: -webkit-fill-available;
    }
    
    /* Fix for iOS Safari input zoom */
    input[type="text"],
    input[type="email"],
    input[type="password"],
    input[type="search"],
    textarea {
        font-size: 16px;
    }
    
    /* Fix for iOS Safari button styling */
    button, input[type="button"], input[type="submit"] {
        -webkit-appearance: none;
        appearance: none;
        border-radius: 0;
    }
    
    /* Fix for iOS Safari sticky positioning */
    .sticky-element {
        position: -webkit-sticky;
        position: sticky;
    }
}

/* Android Chrome fixes */
@media screen and (max-width: 767px) and (-webkit-min-device-pixel-ratio: 1) {
    /* Fix for Android Chrome viewport */
    body {
        min-height: 100vh;
        min-height: calc(100vh - env(keyboard-inset-height, 0px));
    }
    
    /* Fix for Android Chrome input styling */
    input, textarea, select {
        background-color: transparent;
    }
    
    /* Fix for Android Chrome font scaling */
    * {
        -webkit-text-size-adjust: 100%;
        text-size-adjust: 100%;
    }
}

/* ========== PRINT BROWSER COMPATIBILITY ========== */
@media print {
    /* Ensure consistent print rendering across browsers */
    
    * {
        -webkit-print-color-adjust: exact !important;
        color-adjust: exact !important;
        print-color-adjust: exact !important;
    }
    
    body {
        -webkit-print-color-adjust: exact;
        color-adjust: exact;
        print-color-adjust: exact;
    }
    
    /* Fix for Chrome print margins */
    @page {
        margin: 0.5in;
    }
    
    /* Fix for Firefox print scaling */
    html {
        font-size: 12pt;
    }
    
    /* Fix for Safari print colors */
    .print-color {
        -webkit-print-color-adjust: exact;
        color-adjust: exact;
    }
}

/* ========== HIGH DPI DISPLAY FIXES ========== */
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
    /* High DPI display optimizations */
    
    /* Sharper images on retina displays */
    img {
        image-rendering: -webkit-optimize-contrast;
        image-rendering: crisp-edges;
    }
    
    /* Better font rendering on high DPI */
    body {
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
    }
    
    /* Sharper borders on high DPI */
    .thin-border {
        border-width: 0.5px;
    }
}

/* ========== ACCESSIBILITY BROWSER FIXES ========== */

/* Fix for Windows High Contrast Mode */
@media (prefers-contrast: high) {
    * {
        border-color: ButtonText !important;
    }
    
    button {
        border: 2px solid ButtonText !important;
    }
    
    a {
        color: LinkText !important;
    }
    
    a:visited {
        color: VisitedText !important;
    }
}

/* Fix for reduced motion preference */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}

/* ========== BROWSER-SPECIFIC UTILITY CLASSES ========== */

/* Chrome-specific utilities */
.chrome-only {
    display: none;
}

@media screen and (-webkit-min-device-pixel-ratio: 0) {
    .chrome-only {
        display: block;
    }
}

/* Firefox-specific utilities */
.firefox-only {
    display: none;
}

@-moz-document url-prefix() {
    .firefox-only {
        display: block;
    }
}

/* Safari-specific utilities */
.safari-only {
    display: none;
}

@supports (-webkit-appearance: none) and (not (overflow: -webkit-marquee)) and (not (-ms-ime-align: auto)) {
    .safari-only {
        display: block;
    }
}

/* Edge-specific utilities */
.edge-only {
    display: none;
}

@supports (-ms-ime-align: auto) {
    .edge-only {
        display: block;
    }
}

/* IE-specific utilities */
.ie-only {
    display: none;
}

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
    .ie-only {
        display: block;
    }
}

/* ========== FALLBACK STYLES ========== */

/* CSS Grid fallback for older browsers */
.grid-fallback {
    display: table;
    width: 100%;
    table-layout: fixed;
}

.grid-fallback > * {
    display: table-cell;
    vertical-align: top;
}

/* Flexbox fallback for very old browsers */
.flex-fallback {
    display: table;
    width: 100%;
}

.flex-fallback > * {
    display: table-cell;
    vertical-align: middle;
}

/* Transform fallback */
.transform-fallback {
    position: relative;
    left: 50%;
    top: 50%;
    margin-left: -50%;
    margin-top: -50%;
}

/* ========== PERFORMANCE OPTIMIZATIONS ========== */

/* GPU acceleration for smoother animations */
.gpu-accelerated {
    -webkit-transform: translateZ(0);
    -moz-transform: translateZ(0);
    -ms-transform: translateZ(0);
    -o-transform: translateZ(0);
    transform: translateZ(0);
    
    -webkit-backface-visibility: hidden;
    -moz-backface-visibility: hidden;
    -ms-backface-visibility: hidden;
    backface-visibility: hidden;
    
    -webkit-perspective: 1000;
    -moz-perspective: 1000;
    -ms-perspective: 1000;
    perspective: 1000;
}

/* Optimize repaints */
.optimize-repaint {
    -webkit-transform: translateZ(0);
    transform: translateZ(0);
    will-change: transform;
}

/* Optimize animations */
.optimize-animation {
    will-change: transform, opacity;
    -webkit-transform: translateZ(0);
    transform: translateZ(0);
}