/* Custom CSS for Rust Documentation - Fixes SVG text rendering */

/* CSS Custom Properties that can be injected into SVG documents */
:root {
    --svg-main-text-color: #1a1a1a;
    --svg-secondary-text-color: #666;
    --svg-arrow-color: #666;
}

/* Force black text in light/rust themes */
.light,
.rust {
    --svg-main-text-color: #1a1a1a !important;
    --svg-secondary-text-color: #666 !important;
    --svg-arrow-color: #666 !important;
}

/* Dark theme overrides */
.ayu,
.coal,
.navy,
.dark,
.theme--dark {
    --svg-main-text-color: #ffffff !important;
    --svg-secondary-text-color: #b0b0b0 !important;
    --svg-arrow-color: #b0b0b0 !important;
}

/* For inline SVGs - direct styling */
.light svg .main-text,
.rust svg .main-text {
    fill: #1a1a1a !important;
}

.light svg .secondary-text,
.rust svg .secondary-text {
    fill: #666 !important;
}

.light svg .arrow-head,
.rust svg .arrow-head {
    fill: #666 !important;
}

.light svg .arrow-line,
.rust svg .arrow-line {
    stroke: #666 !important;
}

/* Dark theme inline SVG overrides */
.ayu svg .main-text,
.coal svg .main-text,
.navy svg .main-text,
.dark svg .main-text,
.theme--dark svg .main-text {
    fill: #ffffff !important;
}

.ayu svg .secondary-text,
.coal svg .secondary-text,
.navy svg .secondary-text,
.dark svg .secondary-text,
.theme--dark svg .secondary-text {
    fill: #b0b0b0 !important;
}

.ayu svg .arrow-head,
.coal svg .arrow-head,
.navy svg .arrow-head,
.dark svg .arrow-head,
.theme--dark svg .arrow-head {
    fill: #b0b0b0 !important;
}

.ayu svg .arrow-line,
.coal svg .arrow-line,
.navy svg .arrow-line,
.dark svg .arrow-line,
.theme--dark svg .arrow-line {
    stroke: #b0b0b0 !important;
}

/* Object element styling for better SVG integration */
object[type="image/svg+xml"] {
    display: block;
    max-width: 100%;
    height: auto;
    pointer-events: none; /* Prevent interaction issues */
    background: transparent !important;
}

/* Ensure object fallback images are hidden when object loads */
object[type="image/svg+xml"] img {
    display: none;
}

/* Ensure SVG containers have transparent background */
.content object,
.content img[src$=".svg"] {
    background: transparent !important;
}

/* Remove any background from SVG wrappers */
.content > div:has(object[type="image/svg+xml"]) {
    background: transparent !important;
}

/* Fix for mdBook's content area */
.content object[type="image/svg+xml"] {
    margin: 1em 0;
    background-color: transparent !important;
}

/* Override any mdBook theme backgrounds for SVG areas */
.rust .content object[type="image/svg+xml"],
.light .content object[type="image/svg+xml"],
.coal .content object[type="image/svg+xml"],
.navy .content object[type="image/svg+xml"],
.ayu .content object[type="image/svg+xml"] {
    background-color: transparent !important;
}

/* Inject CSS variables into object document via JavaScript */
.light object[type="image/svg+xml"],
.rust object[type="image/svg+xml"] {
    color-scheme: light;
}

.ayu object[type="image/svg+xml"],
.coal object[type="image/svg+xml"],
.navy object[type="image/svg+xml"],
.dark object[type="image/svg+xml"] {
    color-scheme: dark;
}

/* Additional mdBook theme detection */
body:not([class*="theme"]) svg .main-text,
body:not([class*="ayu"]):not([class*="coal"]):not([class*="navy"])
    svg
    .main-text {
    fill: var(--svg-main-text-color, #1a1a1a) !important;
}

body:not([class*="theme"]) svg .secondary-text,
body:not([class*="ayu"]):not([class*="coal"]):not([class*="navy"])
    svg
    .secondary-text {
    fill: var(--svg-secondary-text-color, #666) !important;
}

body:not([class*="theme"]) svg .arrow-head,
body:not([class*="ayu"]):not([class*="coal"]):not([class*="navy"])
    svg
    .arrow-head {
    fill: var(--svg-arrow-color, #666) !important;
}

body:not([class*="theme"]) svg .arrow-line,
body:not([class*="ayu"]):not([class*="coal"]):not([class*="navy"])
    svg
    .arrow-line {
    stroke: var(--svg-arrow-color, #666) !important;
}

/* Print styles */
@media print {
    svg .main-text {
        fill: #1a1a1a !important;
    }

    svg .secondary-text {
        fill: #666 !important;
    }

    svg .arrow-head {
        fill: #666 !important;
    }

    svg .arrow-line {
        stroke: #666 !important;
    }
}

/* Accessibility improvements */
@media (prefers-contrast: high) {
    svg .main-text {
        fill: #000000 !important;
    }

    .dark svg .main-text,
    .ayu svg .main-text,
    .coal svg .main-text,
    .navy svg .main-text {
        fill: #ffffff !important;
    }
}

/* Custom scrollbar for SVG containers if needed */
object[type="image/svg+xml"]::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}

object[type="image/svg+xml"]::-webkit-scrollbar-track {
    background: transparent;
}

object[type="image/svg+xml"]::-webkit-scrollbar-thumb {
    background: rgba(0, 0, 0, 0.2);
    border-radius: 4px;
}

.dark object[type="image/svg+xml"]::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.2);
}
