 :root {
    /* ============================================================
       DESIGN TOKEN SYSTEM - Light Theme
       ============================================================ */

    /* Core Brand Colors */
    --inseit-primary: #102D32;        /* Deep teal - primary brand */
    --inseit-secondary: #264C50;      /* Medium teal - secondary brand */
    --inseit-accent: #EAB63F;         /* Amber - call-to-action */
    --inseit-light-accent: #F5D576;   /* Light amber - hover states */
    --inseit-tertiary: #B9D2D6;       /* Light teal - subtle accents */
    --inseit-background: #F5F9F8;     /* Very light teal - page background */
    --inseit-light-green: #D7F2BA;    /* Light green - success states */
    --inseit-text: #1F2937;           /* Near black - primary text */
    --inseit-red: #DC2626;            /* Red - errors/danger */

    /* Semantic Colors */
    --bg-primary: #FFFFFF;            /* Pure white - cards, panels */
    --bg-secondary: #F9FAFB;          /* Off-white - secondary backgrounds */
    --bg-tertiary: #F3F4F6;           /* Light gray - tertiary backgrounds */
    --bg-hover: #F0F9FF;              /* Light blue - hover states */

    --text-primary: #111827;          /* Almost black - headings, important text */
    --text-secondary: #4B5563;        /* Medium gray - body text */
    --text-tertiary: #6B7280;         /* Light gray - captions, labels */
    --text-on-primary: #FFFFFF;       /* White text on dark backgrounds */
    --text-on-accent: #1F2937;        /* Dark text on accent color */

    --border-primary: #E5E7EB;        /* Light gray - main borders */
    --border-secondary: #D1D5DB;      /* Medium gray - subtle borders */
    --border-focus: #EAB63F;          /* Accent color for focus states */

    /* Shadows */
    --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
    --shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
    --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
    --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
    --shadow-hover: 0 10px 15px -3px rgba(0, 0, 0, 0.15), 0 4px 6px -4px rgba(0, 0, 0, 0.15);

    /* ============================================================
       STANDARDIZED DESIGN TOKENS
       ============================================================ */

    /* Border Radius Scale */
    --radius-sm: 6px;                 /* Small elements, buttons */
    --radius-md: 8px;                 /* Cards, inputs, medium elements */
    --radius-lg: 12px;                /* Large cards, modals, panels */
    --radius-xl: 16px;                /* Extra large containers */
    --radius-full: 9999px;            /* Pills, avatars, circular elements */

    /* Spacing Scale (based on 4px grid) */
    --space-1: 4px;
    --space-2: 8px;
    --space-3: 12px;
    --space-4: 16px;
    --space-5: 20px;
    --space-6: 24px;
    --space-8: 32px;
    --space-10: 40px;
    --space-12: 48px;
    --space-16: 64px;

    /* Typography Scale */
    --text-xs: 0.75rem;               /* 12px - captions, small labels */
    --text-sm: 0.875rem;              /* 14px - body text, secondary */
    --text-base: 1rem;                /* 16px - primary body text */
    --text-lg: 1.125rem;              /* 18px - large text */
    --text-xl: 1.25rem;               /* 20px - section headings */
    --text-2xl: 1.5rem;               /* 24px - page titles */
    --text-3xl: 1.875rem;             /* 30px - major headings */
    --text-4xl: 2.25rem;              /* 36px - hero text */

    /* Font Weights */
    --font-normal: 400;
    --font-medium: 500;
    --font-semibold: 600;
    --font-bold: 700;

    /* Line Heights */
    --leading-tight: 1.25;            /* Headings */
    --leading-normal: 1.5;            /* Body text */
    --leading-relaxed: 1.625;         /* Comfortable reading */
    --leading-loose: 1.75;            /* Very relaxed */

    /* Letter Spacing */
    --tracking-tight: -0.025em;       /* Headings */
    --tracking-normal: 0;             /* Default */
    --tracking-wide: 0.025em;         /* Labels */
    --tracking-wider: 0.05em;         /* Uppercase labels */

    /* Transitions */
    --transition-fast: 150ms ease;
    --transition-base: 200ms ease;
    --transition-slow: 300ms ease;

    /* Z-index Scale */
    --z-dropdown: 1000;
    --z-sticky: 1020;
    --z-fixed: 1030;
    --z-modal-backdrop: 1040;
    --z-modal: 1050;
    --z-popover: 1060;
    --z-tooltip: 1070;
}

/* ============================================================
   DESIGN TOKEN SYSTEM - Dark Theme
   ============================================================ */
[data-theme="dark"] {
    /* Core Brand Colors - Dark Theme - FIXED FOR CONTRAST */
    --inseit-primary: #60A5FA;        /* Medium-bright blue - better contrast (was #BBD1ED) */
    --inseit-secondary: #93C5FD;      /* Light blue - secondary accents */
    --inseit-accent: #FBBF24;         /* Bright amber - stands out */
    --inseit-light-accent: #FCD34D;   /* Light amber - hover states */
    --inseit-tertiary: #7DD3FC;       /* Sky blue - subtle accents */
    --inseit-background: #0F172A;     /* Very dark blue - page background */
    --inseit-light-green: #34D399;    /* Bright emerald - success states */
    --inseit-text: #F1F5F9;           /* Almost white - primary text */
    --inseit-red: #EF4444;            /* Bright red - errors/danger */

    /* Semantic Colors - Dark Theme */
    --bg-primary: #1E293B;            /* Dark slate - cards, panels */
    --bg-secondary: #0F172A;          /* Darker slate - secondary backgrounds */
    --bg-tertiary: #334155;           /* Medium slate - tertiary backgrounds */
    --bg-hover: #1E3A5F;              /* Dark blue - hover states */

    --text-primary: #F1F5F9;          /* Almost white - headings */
    --text-secondary: #CBD5E1;        /* Light gray - body text */
    --text-tertiary: #94A3B8;         /* Medium gray - captions */
    --text-on-primary: #F1F5F9;       /* Light text on dark backgrounds */
    --text-on-accent: #1F2937;        /* Dark text on accent color */

    --border-primary: #334155;        /* Slate - main borders */
    --border-secondary: #475569;      /* Lighter slate - subtle borders */
    --border-focus: #FBBF24;          /* Accent color for focus states */

    /* Shadows - Enhanced for dark mode */
    --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
    --shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.4), 0 1px 2px -1px rgba(0, 0, 0, 0.4);
    --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -2px rgba(0, 0, 0, 0.4);
    --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.5), 0 4px 6px -4px rgba(0, 0, 0, 0.5);
    --shadow-hover: 0 10px 15px -3px rgba(0, 0, 0, 0.6), 0 4px 6px -4px rgba(0, 0, 0, 0.6);

    /* Design tokens inherit from light mode - no need to redefine:
       - Border radius scale
       - Spacing scale
       - Typography scale
       - Font weights
       - Line heights
       - Letter spacing
       - Transitions
       - Z-index scale
    */
}

/* ============================================================
   TYPOGRAPHY SYSTEM
   ============================================================ */

body {
    font-family: 'Inter', 'Segoe UI', 'Roboto', 'Helvetica Neue', 'Arial', sans-serif;
    color: var(--inseit-text);
    font-size: var(--text-base);
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
}

/* Unified Typography Hierarchy - Enhanced for Professionalism */
h1, h2, h3, h4, h5, h6 {
    font-family: 'Inter', 'Segoe UI', 'Roboto', 'Helvetica Neue', 'Arial', sans-serif;
    font-weight: var(--font-bold);
    line-height: var(--leading-tight);
    color: var(--inseit-primary);
    margin: 0;
}

h1 {
    font-size: var(--text-4xl);
    font-weight: var(--font-bold);
    letter-spacing: -0.02em;
    line-height: 1.2;
}

h2 {
    font-size: var(--text-2xl);
    font-weight: var(--font-bold);
    letter-spacing: -0.015em;
    line-height: 1.3;
}

h3 {
    font-size: var(--text-xl);
    font-weight: var(--font-semibold);
    letter-spacing: -0.01em;
    line-height: 1.35;
}

h4 {
    font-size: var(--text-lg);
    font-weight: var(--font-semibold);
    letter-spacing: -0.005em;
    line-height: 1.4;
}

h5 {
    font-size: var(--text-base);
    font-weight: var(--font-semibold);
    letter-spacing: 0;
    line-height: 1.45;
}

h6 {
    font-size: var(--text-sm);
    font-weight: var(--font-semibold);
    letter-spacing: 0.01em;
    line-height: 1.5;
}

p {
    font-size: var(--text-base);
    line-height: 1.7;
    margin: 0;
}

/* Small text */
small, .text-small {
    font-size: var(--text-sm);
    line-height: var(--leading-normal);
}

/* Extra small text */
.text-xs {
    font-size: var(--text-xs);
    line-height: var(--leading-normal);
}

/* Ensure all elements use the same font family */
p, span, div, label, input, button, select, textarea {
    font-family: 'Inter', 'Segoe UI', 'Roboto', 'Helvetica Neue', 'Arial', sans-serif;
}

/* Dark Mode Typography Fixes - Ensure headings are visible */
[data-theme="dark"] h1,
[data-theme="dark"] h2,
[data-theme="dark"] h3,
[data-theme="dark"] h4,
[data-theme="dark"] h5,
[data-theme="dark"] h6 {
    color: var(--inseit-primary);
}

[data-theme="dark"] p {
    color: var(--text-secondary);
}

/* ============================================================
   UNIFIED BUTTON SYSTEM
   ============================================================ */

/* Base button styles - applied to all buttons */
button {
    font-family: 'Inter', 'Segoe UI', 'Roboto', 'Helvetica Neue', 'Arial', sans-serif;
    font-weight: var(--font-medium);
    border-radius: var(--radius-sm);
    transition: all var(--transition-base);
    cursor: pointer;
    border: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
}

/* Primary Button - Main CTAs */
.btn-primary {
    background-color: var(--inseit-accent);
    color: var(--text-on-accent);
    padding: var(--space-3) var(--space-6);
    font-size: var(--text-base);
    font-weight: var(--font-semibold);
    box-shadow: var(--shadow-sm);
}

.btn-primary:hover {
    background-color: var(--inseit-light-accent);
    box-shadow: var(--shadow-md);
    transform: translateY(-1px);
}

.btn-primary:active {
    transform: translateY(0);
    box-shadow: var(--shadow-sm);
}

/* Secondary Button - Alternative actions */
.btn-secondary {
    background-color: var(--inseit-secondary);
    color: var(--text-on-primary);
    padding: var(--space-3) var(--space-6);
    font-size: var(--text-base);
    font-weight: var(--font-medium);
    box-shadow: var(--shadow-sm);
}

.btn-secondary:hover {
    background-color: var(--inseit-primary);
    box-shadow: var(--shadow-md);
    transform: translateY(-1px);
}

.btn-secondary:active {
    transform: translateY(0);
}

/* Outline Button - Subtle actions */
.btn-outline {
    background-color: transparent;
    color: var(--inseit-primary);
    border: 1px solid var(--border-primary);
    padding: var(--space-3) var(--space-6);
    font-size: var(--text-base);
    font-weight: var(--font-medium);
}

.btn-outline:hover {
    background-color: var(--bg-hover);
    border-color: var(--inseit-primary);
}

/* Danger Button - Destructive actions */
.btn-danger {
    background-color: var(--inseit-red);
    color: white;
    padding: var(--space-3) var(--space-6);
    font-size: var(--text-base);
    font-weight: var(--font-medium);
    box-shadow: var(--shadow-sm);
}

.btn-danger:hover {
    background-color: #B91C1C;
    box-shadow: var(--shadow-md);
    transform: translateY(-1px);
}

/* Small Button - Compact variant */
.btn-sm {
    padding: var(--space-2) var(--space-4);
    font-size: var(--text-sm);
}

/* Large Button - Prominent variant */
.btn-lg {
    padding: var(--space-4) var(--space-8);
    font-size: var(--text-lg);
}

/* Icon Button - Square button with icon */
.btn-icon {
    width: 32px;
    height: 32px;
    padding: var(--space-2);
    border-radius: var(--radius-sm);
    background-color: var(--bg-primary);
    border: 1px solid transparent;
    box-shadow: var(--shadow);
}

.btn-icon:hover {
    background-color: var(--inseit-accent);
    border-color: var(--inseit-primary);
    transform: translateY(-1px);
    box-shadow: var(--shadow-md);
}

.btn-icon:active {
    transform: scale(0.95);
}

.btn-icon svg {
    width: 18px;
    height: 18px;
    stroke: var(--inseit-primary);
    transition: all var(--transition-base);
}

.btn-icon:hover svg {
    stroke: white;
}

/* Disabled state for all buttons */
button:disabled,
.btn-primary:disabled,
.btn-secondary:disabled,
.btn-outline:disabled,
.btn-danger:disabled {
    opacity: 0.5;
    cursor: not-allowed;
    transform: none !important;
}

/* Dark mode adjustments for buttons */
[data-theme="dark"] .btn-icon {
    background-color: var(--bg-secondary);
    box-shadow: var(--shadow);
}

/* Ensure primary button has dark text on bright amber background in dark mode */
[data-theme="dark"] .btn-primary {
    background-color: var(--inseit-accent);
    color: #1F2937 !important; /* Dark text for contrast on bright amber */
}

[data-theme="dark"] .btn-primary:hover {
    background-color: var(--inseit-light-accent);
    color: #1F2937 !important;
}

/* ============================================================
   FORM ELEMENTS
   ============================================================ */

input, select, textarea {
    font-family: 'Inter', 'Segoe UI', 'Roboto', 'Helvetica Neue', 'Arial', sans-serif;
    font-size: var(--text-base);
    padding: var(--space-3) var(--space-4);
    border-radius: var(--radius-md);
    border: 1px solid var(--border-secondary);
    background-color: var(--bg-primary);
    color: var(--text-primary);
    transition: all var(--transition-base);
    line-height: var(--leading-normal);
}

input:focus, select:focus, textarea:focus {
    outline: none;
    border-color: var(--border-focus);
    box-shadow: 0 0 0 3px rgba(234, 182, 63, 0.15);
}

input::placeholder, textarea::placeholder {
    color: var(--text-tertiary);
}

/* Small input variant */
.input-sm {
    padding: var(--space-2) var(--space-3);
    font-size: var(--text-sm);
}

/* Large input variant */
.input-lg {
    padding: var(--space-4) var(--space-6);
    font-size: var(--text-lg);
}

/* Consistent color scheme */
.text-primary { color: var(--inseit-primary); }
.text-secondary { color: var(--inseit-secondary); }
.text-accent { color: var(--inseit-accent); }
.bg-primary { background-color: var(--inseit-primary); }
.bg-secondary { background-color: var(--inseit-secondary); }
.bg-accent { background-color: var(--inseit-accent); }
.border-primary { border-color: var(--inseit-primary); }
.border-secondary { border-color: var(--inseit-secondary); }
.border-accent { border-color: var(--inseit-accent); }

/* Extended color palette utilities - theme-aware, !important to override Tailwind CDN */
.text-inseit-primary { color: var(--inseit-primary) !important; }
.text-inseit-secondary { color: var(--inseit-secondary) !important; }
.text-inseit-accent { color: var(--inseit-accent) !important; }
.text-inseit-tertiary { color: var(--inseit-tertiary) !important; }
.text-inseit-light-green { color: var(--inseit-light-green) !important; }
.text-inseit-light-blue { color: var(--inseit-light-blue) !important; }
.text-inseit-background { color: var(--inseit-background) !important; }

.bg-inseit-primary { background-color: var(--inseit-primary) !important; }
.bg-inseit-secondary { background-color: var(--inseit-secondary) !important; }
.bg-inseit-accent { background-color: var(--inseit-accent) !important; }
.bg-inseit-tertiary { background-color: var(--inseit-tertiary) !important; }
.bg-inseit-light-green { background-color: var(--inseit-light-green) !important; }
.bg-inseit-light-blue { background-color: var(--inseit-light-blue) !important; }
.bg-inseit-background { background-color: var(--inseit-background) !important; }

.border-inseit-primary { border-color: var(--inseit-primary) !important; }
.border-inseit-secondary { border-color: var(--inseit-secondary) !important; }
.border-inseit-accent { border-color: var(--inseit-accent) !important; }
.border-inseit-tertiary { border-color: var(--inseit-tertiary) !important; }
.border-inseit-light-green { border-color: var(--inseit-light-green) !important; }
.border-inseit-light-blue { border-color: var(--inseit-light-blue) !important; }
.border-inseit-background { border-color: var(--inseit-background) !important; }

.border-l-inseit-primary { border-left-color: var(--inseit-primary) !important; }
.border-l-inseit-secondary { border-left-color: var(--inseit-secondary) !important; }
.border-l-inseit-accent { border-left-color: var(--inseit-accent) !important; }
.border-l-inseit-tertiary { border-left-color: var(--inseit-tertiary) !important; }
.border-l-inseit-light-green { border-left-color: var(--inseit-light-green) !important; }
.border-l-inseit-light-blue { border-left-color: var(--inseit-light-blue) !important; }
.border-l-inseit-background { border-left-color: var(--inseit-background) !important; }

.section {
    padding: 0.25rem;
    margin: 0.25rem 0;
}

/* Legacy button classes - now using new design tokens */
.representation-button, .save-button {
    padding: var(--space-3) var(--space-4);
    margin: var(--space-1);
    border: none;
    background-color: var(--inseit-accent);
    color: var(--text-on-accent);
    cursor: pointer;
    border-radius: var(--radius-sm);
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    transition: all var(--transition-base);
    box-shadow: var(--shadow-sm);
}

.representation-button:hover, .save-button:hover {
    background-color: var(--inseit-light-accent);
    box-shadow: var(--shadow-md);
    transform: translateY(-1px);
}

.representation-button:active, .save-button:active {
    transform: translateY(0);
    box-shadow: var(--shadow-sm);
}

/* Collapsible section chevron rotation */
details[open] .summary-chevron {
    transform: rotate(90deg);
}

.summary-chevron {
    transition: transform 0.2s ease;
}

details summary::-webkit-details-marker {
    display: none;
}

.viewer-container {
    width: 100%;
    height: 100%;
    position: relative;
}

.collapsible {
    background-color: var(--inseit-primary);
    color: white;
    cursor: pointer;
    padding: 1rem;
    width: 100%;
    border: none;
    text-align: left;
    font-size: 1rem;
    transition: background-color 0.3s ease;
}

.collapsible:hover, .collapsible.active {
    background-color: var(--inseit-accent);
    color: black;
}

.collapsible:after {
    content: '\02795';
    font-size: 0.875rem;
    float: right;
}

.collapsible.active:after {
    content: '\2796';
}

.content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.2s ease-out;
}

.representation-button {
    padding: 0.5rem 1rem;
    margin: 0.25rem;
    border: none;
    background-color: var(--inseit-secondary);
    color: var(--text-on-primary);
    cursor: pointer;
    border-radius: 6px;
    font-size: 0.875rem;
    font-weight: 500;
    transition: all 0.2s ease;
}

.representation-button:hover {
    background-color: var(--inseit-accent);
    color: var(--text-on-accent);
    transform: translateY(-1px);
    box-shadow: var(--shadow-sm);
}

/* Icon-only button styles - using design tokens */
.representation-button-icon,
.clear-button-icon,
.legend-button-icon,
.save-button-icon,
.help-button-icon {
    width: 32px;
    height: 32px;
    padding: var(--space-2);
    border: 1px solid transparent;
    border-radius: var(--radius-sm);
    background-color: var(--bg-primary);
    box-shadow: var(--shadow);
    cursor: pointer;
    transition: all var(--transition-base);
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
}

.representation-button-icon:active,
.clear-button-icon:active,
.legend-button-icon:active,
.save-button-icon:active,
.help-button-icon:active {
    transform: scale(0.95);
}

/* Dark mode adjustments for icon buttons */
[data-theme="dark"] .representation-button-icon,
[data-theme="dark"] .clear-button-icon,
[data-theme="dark"] .legend-button-icon,
[data-theme="dark"] .save-button-icon,
[data-theme="dark"] .help-button-icon {
    background-color: var(--bg-secondary);
    box-shadow: 0 2px 4px var(--shadow);
}

/* Dropdown menu text color override */
#viz-dropdown-menu button,
#chain-coloring-menu,
#chain-coloring-menu *,
#selection-control-menu button {
    color: var(--text-primary) !important;
}

.representation-button-icon:hover,
.save-button-icon:hover {
    background-color: var(--inseit-accent);
    border-color: var(--inseit-primary);
    transform: translateY(-1px);
    box-shadow: 0 3px 8px rgba(0,0,0,0.18);
}

/* Legend button hover - only when NOT active */
.legend-button-icon:not(.active):hover {
    background-color: var(--inseit-accent);
    border-color: var(--inseit-primary);
    transform: translateY(-1px);
    box-shadow: 0 3px 8px rgba(0,0,0,0.18);
}

.clear-button-icon:hover {
    background-color: var(--inseit-red);
    border-color: #dc2626;
    color: white;
    transform: translateY(-1px);
    box-shadow: 0 3px 8px rgba(220, 38, 38, 0.3);
}

.help-button-icon:hover {
    background-color: var(--inseit-primary);
    border-color: var(--inseit-primary);
    transform: translateY(-1px);
    box-shadow: 0 3px 8px rgba(0,0,0,0.18);
}

/* Inactive state for legend button - ensure default styling */
.legend-button-icon:not(.active) {
    background-color: var(--bg-primary) !important;
    border-color: transparent !important;
}

.legend-button-icon:not(.active) svg {
    stroke: var(--inseit-primary) !important;
}

/* Active state for legend button when legend is visible */
.legend-button-icon.active {
    background-color: var(--inseit-primary);
    border-color: var(--inseit-primary);
    box-shadow: 0 2px 6px rgba(0,0,0,0.2);
}

.legend-button-icon.active svg {
    stroke: white;
}

/* Keep active state on hover */
.legend-button-icon.active:hover {
    background-color: var(--inseit-primary);
    border-color: var(--inseit-primary);
    transform: translateY(-1px);
    box-shadow: 0 3px 8px rgba(0,0,0,0.2);
}

.representation-button-icon svg,
.clear-button-icon svg,
.legend-button-icon svg,
.save-button-icon svg,
.help-button-icon svg {
    stroke: var(--inseit-primary);
    width: 18px;
    height: 18px;
    transition: all 0.2s ease;
}

.representation-button-icon:hover svg,
.save-button-icon:hover svg {
    stroke: white;
    transform: scale(1.05);
}

/* Legend icon hover - only change color when NOT active */
.legend-button-icon:not(.active):hover svg {
    stroke: white;
    transform: scale(1.05);
}

/* Legend icon when active - keep white on hover */
.legend-button-icon.active:hover svg {
    stroke: white;
    transform: scale(1.05);
}

.clear-button-icon:hover svg {
    stroke: white;
    transform: scale(1.1) rotate(90deg);
}

.help-button-icon:hover svg {
    stroke: white;
    transform: scale(1.05);
}

/* Control Panel Grouping Styles */
.control-group {
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin-bottom: 2px;
}

.group-label {
    font-size: 9px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    padding: 2px 4px;
    margin-bottom: 2px;
    opacity: 0.8;
    background-color: rgba(0, 0, 0, 0.03);
    border-radius: 3px;
    text-align: center;
}

[data-theme="dark"] .group-label {
    background-color: rgba(255, 255, 255, 0.05);
    opacity: 0.9;
}

/* Enhanced Tooltip Styling */
.representation-button-icon[data-tooltip]:hover::after,
.clear-button-icon[data-tooltip]:hover::after,
.legend-button-icon[data-tooltip]:hover::after,
.save-button-icon[data-tooltip]:hover::after,
.help-button-icon[data-tooltip]:hover::after {
    content: attr(data-tooltip);
    position: absolute;
    left: calc(100% + 8px);
    top: 50%;
    transform: translateY(-50%);
    background-color: rgba(0, 0, 0, 0.92);
    color: white;
    padding: 8px 12px;
    border-radius: 6px;
    font-size: 11px;
    font-weight: 500;
    white-space: nowrap;
    z-index: 1000;
    pointer-events: none;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
    max-width: 240px;
    white-space: normal;
    line-height: 1.5;
    animation: tooltipFadeIn 0.2s ease-out;
}

@keyframes tooltipFadeIn {
    from {
        opacity: 0;
        transform: translateY(-50%) translateX(-4px);
    }
    to {
        opacity: 1;
        transform: translateY(-50%) translateX(0);
    }
}

[data-theme="dark"] .representation-button-icon[data-tooltip]:hover::after,
[data-theme="dark"] .clear-button-icon[data-tooltip]:hover::after,
[data-theme="dark"] .legend-button-icon[data-tooltip]:hover::after,
[data-theme="dark"] .save-button-icon[data-tooltip]:hover::after,
[data-theme="dark"] .help-button-icon[data-tooltip]:hover::after {
    background-color: rgba(255, 255, 255, 0.95);
    color: var(--text-primary);
}

/* Tooltip arrow */
.representation-button-icon[data-tooltip]:hover::before,
.clear-button-icon[data-tooltip]:hover::before,
.legend-button-icon[data-tooltip]:hover::before,
.save-button-icon[data-tooltip]:hover::before,
.help-button-icon[data-tooltip]:hover::before {
    content: '';
    position: absolute;
    left: 100%;
    top: 50%;
    transform: translateY(-50%);
    border: 4px solid transparent;
    border-right-color: rgba(0, 0, 0, 0.9);
    pointer-events: none;
    z-index: 1001;
}

[data-theme="dark"] .representation-button-icon[data-tooltip]:hover::before,
[data-theme="dark"] .clear-button-icon[data-tooltip]:hover::before,
[data-theme="dark"] .legend-button-icon[data-tooltip]:hover::before,
[data-theme="dark"] .save-button-icon[data-tooltip]:hover::before,
[data-theme="dark"] .help-button-icon[data-tooltip]:hover::before {
    border-right-color: rgba(255, 255, 255, 0.95);
}

/* Hide default browser tooltip */
.representation-button-icon[title],
.clear-button-icon[title],
.legend-button-icon[title],
.save-button-icon[title],
.help-button-icon[title] {
    position: relative;
}

.sequence-container {
    font-family: monospace;
}

.sequence-line {
    margin-bottom: 10px;
    position: relative;
}

.sequence-numbers {
    position: relative;
    height: 18px;
    margin-bottom: 2px;
    font-size: 10px;
    color: #666;
}

.sequence-number {
    position: absolute;
    text-align: center;
    font-size: 10px;
    color: #666;
    font-weight: 500;
    white-space: nowrap;
    pointer-events: none;
    z-index: 1;
}

.sequence {
    display: flex;
    flex-wrap: nowrap;
    width: 100%;
    position: relative;
}

.residue {
    display: inline-block;
    padding: 2px 1px;
    margin: 0;
    cursor: pointer;
    border-radius: 4px;
    width: 14px;
    min-width: 14px;
    text-align: center;
    font-size: 12px;
    border: 1px solid transparent;
    background-color: #f0f0f0; /* Default background that will be overridden by JS */
    transition: all 0.2s ease;
    position: relative;
}

.residue.selected {
    border: 2px solid #FF1493 !important;
    font-weight: bold !important;
    background-color: rgba(255, 20, 147, 0.2) !important;
    box-shadow: 0 0 4px rgba(255, 20, 147, 0.5) !important;
}

.residue.temp-selected {
    border: 2px solid #3b82f6 !important;
    background-color: rgba(59, 130, 246, 0.1) !important;
    box-shadow: 0 0 2px rgba(59, 130, 246, 0.3) !important;
}

.drag-selection-box {
    border: 2px solid #3b82f6 !important;
    background-color: rgba(59, 130, 246, 0.1) !important;
    position: absolute;
    pointer-events: none;
    z-index: 1000;
}

/* Optimized residue coloring using CSS custom properties */
.residue-colored {
    background-color: var(--residue-color) !important;
    color: var(--residue-text-color, var(--text-primary)) !important;
    transition: none !important; /* Disable transitions for better performance */
}

.residue-default {
    background-color: transparent !important;
    color: var(--text-primary) !important;
    transition: none !important;
}

/* Dark mode specific overrides for residues */
[data-theme="dark"] .residue-default {
    color: var(--text-primary) !important;
}


.clear-button {
    padding: 0.5rem 1rem;
    margin: 0.25rem;
    border: none;
    border-radius: 4px;
    background-color: var(--inseit-red);
    color: white;
    cursor: pointer;
    transition: background-color 0.3s ease;
}

.clear-button:hover {
    background-color: #CC0000;
}

.save-button, .legend-button {
    padding: 0.5rem 1rem;
    margin: 0.25rem;
    border: none;
    border-radius: 4px;
    background-color: var(--inseit-accent);
    color: black;
    cursor: pointer;
    transition: background-color 0.3s ease;
}

.save-button:hover, .legend-button:hover {
    background-color: var(--inseit-light-accent);
    border: 1;
}

.clusters-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 0.5rem;
}

.graph-container {
    display: flex;
    align-items: center;
    gap: 1rem;
}

#pie-chart {
    max-width: 300px;
    max-height: 300px;
}

/* Tab Styles */
.analysis-tab {
    padding: 0.35rem 0.75rem;
    border-bottom: 2px solid transparent;
    font-weight: 500;
    font-size: 0.875rem;
    color: var(--inseit-text);
    background: none;
    border-top: none;
    border-left: none;
    border-right: none;
    cursor: pointer;
    transition: all 0.2s ease;
}

.analysis-tab.active {
    color: var(--inseit-primary);
    border-bottom-color: var(--inseit-accent);
}

.analysis-tab:hover {
    color: var(--inseit-accent);
    background-color: rgba(234, 182, 63, 0.1);
}

.tab-panel {
    display: none;
}

.tab-panel.active {
    display: block;
}
.tab-content-container {
    max-height: 75vh;
    overflow-y: auto;
    padding-right: 8px;
}
.tab-content-container::-webkit-scrollbar {
    width: 6px;
}
.tab-content-container::-webkit-scrollbar-track {
    background: #f1f1f1;
    border-radius: 3px;
}
.tab-content-container::-webkit-scrollbar-thumb {
    background: var(--inseit-primary);
    border-radius: 3px;
}

.ph-preset-btn {
    padding: 0.25rem 0.5rem;
    border: 1px solid var(--inseit-accent);
    color: var(--inseit-primary);
    cursor: pointer;
    transition: all 0.3s ease;
}

.ph-preset-btn:hover {
    background-color: var(--inseit-accent);
    color: black;
}

/* Legend gradient bars */
.gradient-bar {
    width: 120px;
    height: 16px;
    display: inline-block;
}

.gradient-bar-wide {
    width: 150px;
    height: 20px;
    display: inline-block;
}

/* Electrostatic gradients - Vibrant Red/Blue */
.electrostatic-positive {
    background: linear-gradient(to right, #6495ED 0%, #0000CD 100%);
}

.electrostatic-negative {
    background: linear-gradient(to right, #FF6B6B 0%, #DC143C 100%);
}

.electrostatic-full {
    background: linear-gradient(to right, #DC143C 0%, #FF6B6B 25%, #808080 50%, #6495ED 75%, #0000CD 100%);
}

/* Hydrophobicity gradients - Yellow/Orange and Teal/Green (distinct from charge) */
.hydrophobic-gradient {
    background: linear-gradient(to right, #FFD700 0%, #FF8C00 100%);
}

.hydrophilic-gradient {
    background: linear-gradient(to right, #98D8C8 0%, #2E8B57 100%);
}

.hydrophobicity-full {
    background: linear-gradient(to right, #2E8B57 0%, #98D8C8 25%, #808080 50%, #FFD700 75%, #FF8C00 100%);
}

/* Cavity gradients */
.cavity-accessibility {
    background: linear-gradient(to right, #8B0000 0%, #FF6347 50%, #32CD32 100%);
}

.cavity-depth {
    background: linear-gradient(to right, #FFD700 0%, #FF6347 50%, #8B0000 100%);
}

/* Cavity card styles */
.cavity-card.selected {
    border-color: #3B82F6 !important;
    box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2) !important;
}

.cavity-card.selected .cavity-select-btn {
    background-color: #3B82F6 !important;
}

/* Full-screen layout styles */
.h-screen {
    height: 100vh;
}

.overflow-hidden {
    overflow: hidden;
}

.flex {
    display: flex;
}

.flex-col {
    flex-direction: column;
}

.flex-1 {
    flex: 1 1 0%;
}

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

.w-1\/2 {
    width: 50%;
}

.border-l {
    border-left-width: 1px;
}

.border-gray-200 {
    border-color: #e5e7eb;
}

.p-4 {
    padding: 1rem;
}

.mb-3 {
    margin-bottom: 0.75rem;
}

.gap-2 {
    gap: 0.5rem;
}

.items-center {
    align-items: center;
}

.justify-between {
    justify-content: space-between;
}

.text-xl {
    font-size: 1.25rem;
    line-height: 1.75rem;
}

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

.text-center {
    text-align: center;
}

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

.space-y-6 > * + * {
    margin-top: 1.5rem;
}

.space-y-4 > * + * {
    margin-top: 1rem;
}

.space-y-3 > * + * {
    margin-top: 0.75rem;
}

.space-y-2 > * + * {
    margin-top: 0.5rem;
}

.space-y-1 > * + * {
    margin-top: 0.25rem;
}

/* Custom scrollbar for the scrollable content */
.overflow-y-auto::-webkit-scrollbar {
    width: 8px;
}

.overflow-y-auto::-webkit-scrollbar-track {
    background: #f1f5f9;
    border-radius: 4px;
}

.overflow-y-auto::-webkit-scrollbar-thumb {
    background: #cbd5e1;
    border-radius: 4px;
}

.overflow-y-auto::-webkit-scrollbar-thumb:hover {
    background: #94a3b8;
}

/* Draggable Splitter Styles */
.splitter {
    width: 8px;
    background-color: #e5e7eb;
    cursor: col-resize;
    position: relative;
    transition: background-color 0.2s ease;
    flex-shrink: 0;
}

.splitter:hover {
    background-color: var(--inseit-accent);
}

.splitter:active {
    background-color: var(--inseit-primary);
}

.splitter-handle {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 4px;
    height: 40px;
    background-color: #9ca3af;
    border-radius: 2px;
    transition: background-color 0.2s ease;
}

.splitter:hover .splitter-handle {
    opacity: 0.8;
}

.splitter:active .splitter-handle {
    opacity: 0.6;
}

/* Prevent text selection during drag */
.no-select {
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

/* Status Badge Styles */
.status-badge {
    display: inline-flex;
    align-items: center;
    padding: 0.375rem 0.75rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.025em;
    text-transform: uppercase;
}

.status-completed {
    background-color: #D1FAE5;
    color: #065F46;
}

[data-theme="dark"] .status-completed {
    background-color: rgba(16, 185, 129, 0.2);
    color: #6EE7B7;
}

.status-running {
    background-color: #FEF3C7;
    color: #92400E;
}

[data-theme="dark"] .status-running {
    background-color: rgba(251, 191, 36, 0.2);
    color: #FCD34D;
}

.status-pending {
    background-color: #E0E7FF;
    color: #3730A3;
}

[data-theme="dark"] .status-pending {
    background-color: rgba(99, 102, 241, 0.2);
    color: #A5B4FC;
}

.status-failed {
    background-color: #FEE2E2;
    color: #991B1B;
}

[data-theme="dark"] .status-failed {
    background-color: rgba(239, 68, 68, 0.2);
    color: #FCA5A5;
}

/* ============================================================
   UNIFIED CARD SYSTEM
   ============================================================ */

/* Base card - default styling */
.card {
    background-color: var(--bg-primary);
    border: 1px solid var(--border-primary);
    border-radius: var(--radius-lg);
    padding: var(--space-6);
    box-shadow: var(--shadow-sm);
    transition: all var(--transition-base);
}

/* Card with subtle hover effect */
.card:hover {
    box-shadow: var(--shadow-md);
}

/* Interactive card - pronounced hover effect */
.card-interactive {
    cursor: pointer;
}

.card-interactive:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-lg);
    border-color: var(--inseit-accent);
}

/* Card variants */
.card-sm {
    padding: var(--space-4);
    border-radius: var(--radius-md);
}

.card-lg {
    padding: var(--space-8);
    border-radius: var(--radius-xl);
}

/* Flat card - no shadow */
.card-flat {
    box-shadow: none;
}

/* Bordered card - emphasized border */
.card-bordered {
    border-width: 2px;
}

/* ============================================
   RESPONSIVE DESIGN - RESULTS PAGE
   ============================================ */

/* Base styles - always applied */
#right-panel .tab-panel,
#tab-capipy {
    overflow-x: hidden !important;
    max-width: 100%;
}

#tab-capipy .bg-gray-50,
#tab-capipy .bg-inseit-light-blue {
    max-width: 100%;
    box-sizing: border-box;
}

#tab-capipy .grid.grid-cols-2 label {
    font-size: 0.7rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
    box-sizing: border-box;
}

#hbond-radius-input {
    max-width: 3.5rem;
    min-width: 2.5rem;
}

#pie-chart-legend {
    max-width: 100%;
    box-sizing: border-box;
    overflow-y: auto;
    font-size: 0.7rem !important;
}

#pie-chart-container {
    max-width: 100%;
    overflow: hidden;
}

/* Large laptops and smaller (1400px) */
@media (max-width: 1400px) {
    #tab-capipy .grid.lg\:grid-cols-3 {
        grid-template-columns: 1fr !important;
    }

    #tab-capipy .lg\:col-span-2 {
        grid-column: span 1 / span 1 !important;
    }

    #pie-chart {
        width: 280px !important;
        height: 280px !important;
    }

    #pie-chart-legend {
        grid-template-columns: 2fr !important;
        max-height: 280px !important;
        font-size: 0.65rem !important;
    }

    #tab-capipy .space-y-2 {
        gap: 0.375rem;
    }

    #tab-capipy .text-xs {
        font-size: 0.7rem;
    }

    #tab-capipy label span {
        white-space: nowrap;
    }
}

/* Medium screens (1280px) */
@media (max-width: 1280px) {
    #tab-capipy .bg-gray-50.rounded-lg,
    #tab-capipy .bg-inseit-light-blue.rounded-lg {
        padding: 0.5rem !important;
    }

    #tab-capipy .text-xs {
        font-size: 0.65rem !important;
    }

    #hbond-radius-input {
        width: 3rem !important;
        font-size: 0.65rem !important;
        padding: 0.125rem 0.25rem !important;
    }
}

/* Tablet and smaller (1024px) */
@media (max-width: 1024px) {
    .w-1\/2 {
        width: 100%;
    }

    .flex-col {
        flex-direction: column;
    }

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

    .viewer-container {
        height: 60vh;
    }

    .splitter {
        display: none;
    }

    #main-container {
        flex-direction: column !important;
    }

    #left-panel, #right-panel {
        width: 100% !important;
        height: 50vh !important;
    }

    #splitter {
        display: none !important;
    }

    .representation-button-icon,
    .legend-button-icon,
    .clear-button-icon,
    .save-button-icon,
    .help-button-icon {
        width: 28px !important;
        height: 28px !important;
        padding: 4px !important;
    }

    #tab-capipy .grid.md\:grid-cols-3 {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }

    #tab-capipy .grid.lg\:grid-cols-3 {
        grid-template-columns: 1fr !important;
    }

    #tab-capipy .lg\:col-span-2 {
        grid-column: span 1 / span 1 !important;
    }

    #pie-chart {
        width: 260px !important;
        height: 260px !important;
    }

    #pie-chart-legend {
        grid-template-columns: 2fr !important;
        max-height: 250px !important;
        font-size: 0.6rem !important;
    }

    #tab-capipy .grid.grid-cols-2 {
        gap: 0.25rem !important;
    }

    #tab-capipy .p-2 {
        padding: 0.375rem !important;
    }
}

/* Mobile (768px) */
@media (max-width: 768px) {
    #left-panel, #right-panel {
        height: 40vh !important;
    }

    #right-panel {
        overflow-x: hidden !important;
        overflow-y: auto !important;
    }

    #tab-capipy .grid.grid-cols-3,
    #tab-capipy .grid.grid-cols-2,
    #tab-capipy .grid.md\:grid-cols-3,
    #tab-capipy .grid.lg\:grid-cols-3 {
        grid-template-columns: 1fr !important;
    }

    #tab-capipy .lg\:col-span-2,
    #tab-capipy .lg\:col-span-3 {
        grid-column: span 1 / span 1 !important;
    }

    #pie-chart-container {
        flex-direction: column !important;
        align-items: center !important;
        justify-content: center !important;
    }

    #pie-chart {
        width: 240px !important;
        height: 240px !important;
    }

    #pie-chart-legend {
        width: 100% !important;
        max-width: 100% !important;
        margin-top: 0.75rem !important;
        grid-template-columns: 1fr !important;
        max-height: 160px !important;
        overflow-y: auto !important;
        font-size: 0.55rem !important;
        gap: 0.25rem !important;
    }

    #tab-capipy .bg-gray-50.rounded-lg,
    #tab-capipy .bg-inseit-light-blue.rounded-lg {
        padding: 0.375rem !important;
        overflow: hidden !important;
        box-sizing: border-box !important;
    }

    #analysis-tabs {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    #tab-capipy .text-xs {
        font-size: 0.6rem !important;
        line-height: 1.2 !important;
    }

    #tab-capipy .text-sm {
        font-size: 0.7rem !important;
    }

    #tab-capipy .text-base {
        font-size: 0.75rem !important;
    }

    #hbond-radius-input {
        width: 2.5rem !important;
        font-size: 0.6rem !important;
        padding: 0.125rem 0.25rem !important;
    }

    #tab-capipy .gap-2,
    #tab-capipy .space-y-2 {
        gap: 0.25rem !important;
    }

    #tab-capipy label {
        overflow: hidden !important;
        text-overflow: ellipsis !important;
        max-width: 100% !important;
    }

    #tab-capipy label span {
        overflow: hidden !important;
        text-overflow: ellipsis !important;
    }

    #tab-capipy .form-checkbox {
        height: 0.6rem !important;
        width: 0.6rem !important;
        flex-shrink: 0;
    }

    #tab-capipy .form-radio {
        height: 0.5rem !important;
        width: 0.5rem !important;
        flex-shrink: 0;
    }

    #tab-capipy .grid.grid-cols-2.mb-2 label {
        font-size: 0.6rem !important;
    }

    #tab-capipy .grid.grid-cols-2.gap-1 {
        gap: 0.25rem !important;
    }

    #tab-capipy .grid.grid-cols-2.gap-1 label span {
        display: inline-block;
        max-width: 100%;
    }
}

/* Small mobile (480px) */
@media (max-width: 480px) {
    #left-panel, #right-panel {
        height: 35vh !important;
    }

    #pie-chart {
        width: 180px !important;
        height: 180px !important;
    }

    #pie-chart-legend {
        grid-template-columns: 1fr !important;
        max-height: 130px !important;
        font-size: 0.5rem !important;
        gap: 0.125rem !important;
        padding: 0.25rem !important;
    }

    #tab-capipy .bg-gray-50.rounded-lg,
    #tab-capipy .bg-inseit-light-blue.rounded-lg,
    #tab-capipy .p-2 {
        padding: 0.25rem !important;
    }

    #tab-capipy .text-xs {
        font-size: 0.55rem !important;
        line-height: 1.1 !important;
    }

    #tab-capipy .text-sm {
        font-size: 0.65rem !important;
    }

    #tab-capipy .text-base {
        font-size: 0.7rem !important;
    }

    #tab-capipy .form-checkbox {
        height: 0.5rem !important;
        width: 0.5rem !important;
    }

    #tab-capipy .form-radio {
        height: 0.45rem !important;
        width: 0.45rem !important;
    }

    #hbond-radius-input {
        width: 2rem !important;
        font-size: 0.55rem !important;
        padding: 0.0625rem 0.125rem !important;
    }

    #tab-capipy .gap-1,
    #tab-capipy .gap-2 {
        gap: 0.125rem !important;
    }

    #tab-capipy .space-y-2 {
        gap: 0.25rem !important;
    }

    #tab-capipy .mb-2 {
        margin-bottom: 0.25rem !important;
    }

    #tab-capipy .mb-4 {
        margin-bottom: 0.375rem !important;
    }

    #tab-capipy .grid.grid-cols-2.mb-2 {
        gap: 0.125rem !important;
    }

    #tab-capipy .grid.grid-cols-2.mb-2 label {
        font-size: 0.55rem !important;
    }
}

/* Tablet landscape */
@media (min-width: 768px) and (max-width: 1024px) and (orientation: landscape) {
    #main-container {
        flex-direction: row !important;
    }

    #left-panel {
        width: 60% !important;
        height: 100% !important;
    }

    #right-panel {
        width: 40% !important;
        height: 100% !important;
    }
}

/* ============================================
   RESULTS PAGE DARK MODE OVERRIDES
   ============================================ */

/* Dark Mode Overrides for Results Page */
[data-theme="dark"] .bg-white {
    background-color: var(--bg-primary) !important;
}

[data-theme="dark"] .bg-gray-50 {
    background-color: var(--bg-secondary) !important;
}

[data-theme="dark"] .bg-gray-100 {
    background-color: var(--bg-tertiary) !important;
}

[data-theme="dark"] .text-gray-800,
[data-theme="dark"] .text-gray-700 {
    color: var(--text-primary) !important;
}

[data-theme="dark"] .text-gray-600 {
    color: var(--text-secondary) !important;
}

[data-theme="dark"] .text-gray-500,
[data-theme="dark"] .text-gray-400 {
    color: var(--text-tertiary) !important;
}

[data-theme="dark"] .border-gray-200,
[data-theme="dark"] .border-gray-300 {
    border-color: var(--border-primary) !important;
}

[data-theme="dark"] .hover\:bg-gray-50:hover {
    background-color: var(--bg-hover) !important;
}

[data-theme="dark"] .hover\:bg-gray-100:hover {
    background-color: var(--bg-hover) !important;
}

[data-theme="dark"] .hover\:text-gray-700:hover {
    color: var(--text-primary) !important;
}

/* Dropdown menu items - lightweight style */
.dropdown-menu-item {
    background-color: transparent;
    color: var(--text-primary);
    cursor: pointer;
    transition: background-color 0.15s ease;
}

.dropdown-menu-item:hover {
    background-color: var(--bg-hover);
}

/* Special overrides for control buttons and dropdowns */
[data-theme="dark"] #viz-dropdown-menu,
[data-theme="dark"] #chain-coloring-menu,
[data-theme="dark"] #structure-coloring-menu,
[data-theme="dark"] #selection-color-menu,
[data-theme="dark"] #selection-style-menu,
[data-theme="dark"] #legend-container {
    background-color: var(--bg-primary) !important;
    border-color: var(--border-primary) !important;
    box-shadow: var(--shadow-lg) !important;
}

[data-theme="dark"] .representation-button {
    color: var(--text-primary) !important;
}

[data-theme="dark"] .representation-button:hover {
    background-color: var(--bg-hover) !important;
}

/* Input fields in dark mode */
[data-theme="dark"] input[type="text"],
[data-theme="dark"] input[type="number"],
[data-theme="dark"] input[type="color"] {
    background-color: var(--bg-secondary) !important;
    border-color: var(--border-primary) !important;
    color: var(--text-primary) !important;
}

[data-theme="dark"] input::placeholder {
    color: var(--text-tertiary) !important;
}

/* Viewer container background - darker in dark mode */
[data-theme="dark"] .viewer-container {
    background-color: #1a1a1a !important;
}

/* Screenshot class to preserve original background */
.viewer-container.screenshot-mode {
    background-color: white !important;
}

/* Left panel background */
[data-theme="dark"] #left-panel {
    background-color: var(--bg-secondary) !important;
}

/* Right panel background */
[data-theme="dark"] #right-panel {
    background-color: var(--bg-primary) !important;
}

/* Text black override */
[data-theme="dark"] .text-black {
    color: var(--text-primary) !important;
}

/* Override inline styles for buttons in dark mode */
[data-theme="dark"] .representation-button[style*="color: #000"],
[data-theme="dark"] button[style*="color: #000"],
[data-theme="dark"] div[style*="color: #000"],
[data-theme="dark"] span[style*="color: #000"] {
    color: var(--text-primary) !important;
}

[data-theme="dark"] div[style*="color: #666"],
[data-theme="dark"] span[style*="color: #666"] {
    color: var(--text-secondary) !important;
}

/* Tab styling in dark mode */
[data-theme="dark"] .tab-button {
    background-color: var(--bg-secondary);
    color: var(--text-primary);
    border-color: var(--border-primary);
}

[data-theme="dark"] .tab-button.active {
    background-color: var(--inseit-primary);
    color: var(--text-on-primary);
}

/* Chart containers */
[data-theme="dark"] .chart-container {
    background-color: var(--bg-primary) !important;
}

/* Info boxes and metric cards */
[data-theme="dark"] .bg-inseit-light-blue {
    background-color: var(--bg-tertiary) !important;
    border-color: var(--border-primary) !important;
}

/* Body background in dark mode */
[data-theme="dark"] body {
    background-color: var(--inseit-background) !important;
}

/* Details/summary elements */
[data-theme="dark"] details summary {
    background-color: var(--bg-primary);
}

[data-theme="dark"] details summary:hover {
    background-color: var(--bg-hover);
}

/* Separator lines */
[data-theme="dark"] [style*="background-color: #d1d5db"] {
    background-color: var(--border-primary) !important;
}

/* Tables in tabs - better contrast */
[data-theme="dark"] table {
    background-color: var(--bg-primary);
    color: var(--text-primary);
}

[data-theme="dark"] th {
    background-color: var(--bg-tertiary) !important;
    color: var(--text-primary) !important;
}

[data-theme="dark"] td {
    color: var(--text-primary) !important;
    border-color: var(--border-primary) !important;
}

[data-theme="dark"] tr:hover td {
    background-color: var(--bg-hover) !important;
}

/* Chart text and labels */
[data-theme="dark"] canvas {
    color: var(--text-primary) !important;
}

/* Plotly charts (for DCCM and other plotly visualizations) */
[data-theme="dark"] .plotly .gtitle,
[data-theme="dark"] .plotly .xtitle,
[data-theme="dark"] .plotly .ytitle,
[data-theme="dark"] .plotly text {
    fill: var(--text-primary) !important;
}

[data-theme="dark"] .plotly .bg {
    fill: var(--bg-primary) !important;
}

/* Selection and chain count displays */
[data-theme="dark"] .chain-info,
[data-theme="dark"] .selection-count {
    color: var(--text-primary) !important;
}

/* Tab content areas */
[data-theme="dark"] .tab-panel {
    background-color: var(--bg-primary);
    color: var(--text-primary);
}

/* Metric cards in analysis tabs */
[data-theme="dark"] .bg-orange-50,
[data-theme="dark"] .bg-red-50,
[data-theme="dark"] .bg-blue-50,
[data-theme="dark"] .bg-green-50,
[data-theme="dark"] .bg-purple-50,
[data-theme="dark"] .bg-yellow-50 {
    background-color: var(--bg-tertiary) !important;
}

[data-theme="dark"] .text-orange-600,
[data-theme="dark"] .text-red-600,
[data-theme="dark"] .text-blue-600,
[data-theme="dark"] .text-green-600,
[data-theme="dark"] .text-purple-600,
[data-theme="dark"] .text-yellow-600 {
    color: var(--text-primary) !important;
}

/* List items in tabs */
[data-theme="dark"] li {
    color: var(--text-primary) !important;
}

/* Headings in tabs */
[data-theme="dark"] h3,
[data-theme="dark"] h4,
[data-theme="dark"] h5 {
    color: var(--inseit-primary) !important;
}

/* Labels and descriptions */
[data-theme="dark"] label {
    color: var(--text-primary) !important;
}

[data-theme="dark"] p {
    color: var(--text-secondary) !important;
}

/* Select dropdowns */
[data-theme="dark"] select {
    background-color: var(--bg-secondary) !important;
    color: var(--text-primary) !important;
    border-color: var(--border-primary) !important;
}

/* Cavity table - force all text to be light */
[data-theme="dark"] #tab-cavities table,
[data-theme="dark"] #tab-cavities th,
[data-theme="dark"] #tab-cavities td,
[data-theme="dark"] #tab-cavities tr {
    color: var(--text-primary) !important;
}

[data-theme="dark"] #tab-cavities .text-black {
    color: var(--text-primary) !important;
}

/* Chain selection count - better contrast */
[data-theme="dark"] .chain-selection-count,
[data-theme="dark"] .selection-info,
[data-theme="dark"] [class*="selection"] {
    color: var(--inseit-accent) !important;
    font-weight: 600;
}

/* Selection count badge circles in dark mode */
[data-theme="dark"] .bg-gray-200.rounded-full {
    background-color: var(--inseit-primary) !important;
    color: var(--text-on-primary) !important;
}

/* Separator lines in viewer controls */
.separator-line {
    background: linear-gradient(90deg, transparent, var(--border-primary) 20%, var(--border-primary) 80%, transparent);
    opacity: 0.6;
}

/* MSA (Multiple Sequence Alignment) text contrast */
[data-theme="dark"] #tab-msa *,
[data-theme="dark"] .msa-container *,
[data-theme="dark"] .alignment-viewer * {
    color: var(--text-primary) !important;
}

[data-theme="dark"] #tab-msa .text-white {
    color: var(--text-primary) !important;
}

/* Chart.js canvas text - better contrast for flexibility and electrostatic */
[data-theme="dark"] #flexibility-chart,
[data-theme="dark"] #titration-chart,
[data-theme="dark"] #dccm-chart {
    filter: brightness(1.3) contrast(1.2);
}

/* Force Chart.js to use light colors in dark mode */
[data-theme="dark"] .chartjs-render-monitor {
    background-color: var(--bg-primary) !important;
}

/* Override any remaining black text in tables */
[data-theme="dark"] table *,
[data-theme="dark"] tbody *,
[data-theme="dark"] thead * {
    color: var(--text-primary) !important;
}

/* Strong tags in dark mode */
[data-theme="dark"] strong,
[data-theme="dark"] b {
    color: var(--text-primary) !important;
}

/* Spans with text colors */
[data-theme="dark"] span[class*="text-"] {
    color: var(--text-primary) !important;
}

/* Small text elements */
[data-theme="dark"] small {
    color: var(--text-secondary) !important;
}

/* Cavity type badges - ensure readable contrast on colored backgrounds */
[data-theme="dark"] #tab-cavities .bg-red-100,
[data-theme="dark"] #tab-cavities .bg-blue-100,
[data-theme="dark"] #tab-cavities .bg-green-100,
[data-theme="dark"] #tab-cavities .bg-yellow-100,
[data-theme="dark"] #tab-cavities .bg-purple-100 {
    background-color: var(--bg-tertiary) !important;
}

[data-theme="dark"] #tab-cavities .text-red-800,
[data-theme="dark"] #tab-cavities .text-blue-800,
[data-theme="dark"] #tab-cavities .text-green-800,
[data-theme="dark"] #tab-cavities .text-yellow-800,
[data-theme="dark"] #tab-cavities .text-purple-800 {
    color: var(--text-primary) !important;
}

/* Generic badge fixes for all colored badges across the page */
[data-theme="dark"] span.bg-red-100,
[data-theme="dark"] span.bg-blue-100,
[data-theme="dark"] span.bg-green-100,
[data-theme="dark"] span.bg-yellow-100,
[data-theme="dark"] span.bg-purple-100,
[data-theme="dark"] span.bg-orange-100 {
    background-color: var(--bg-tertiary) !important;
}

[data-theme="dark"] span.text-red-800,
[data-theme="dark"] span.text-blue-800,
[data-theme="dark"] span.text-green-800,
[data-theme="dark"] span.text-yellow-800,
[data-theme="dark"] span.text-purple-800,
[data-theme="dark"] span.text-orange-800 {
    color: var(--text-primary) !important;
}

/* Chart axis labels - force higher contrast */
[data-theme="dark"] .chartjs-axis-label,
[data-theme="dark"] .tick text,
[data-theme="dark"] tspan {
    fill: var(--text-primary) !important;
    color: var(--text-primary) !important;
}

/* Plotly axis styling for better readability */
[data-theme="dark"] .xtick text,
[data-theme="dark"] .ytick text,
[data-theme="dark"] .ztick text {
    fill: var(--text-primary) !important;
}

/* MSA visualization - darker, more saturated backgrounds for dark mode */
[data-theme="dark"] #tab-msa {
    background-color: var(--bg-primary) !important;
}

/* MSA conservation colors - darker backgrounds with light text */
[data-theme="dark"] #tab-msa .bg-blue-100,
[data-theme="dark"] #tab-msa .bg-blue-200 {
    background-color: #1E40AF !important;
    color: #DBEAFE !important;
}

[data-theme="dark"] #tab-msa .bg-blue-300,
[data-theme="dark"] #tab-msa .bg-blue-500 {
    background-color: #1E3A8A !important;
    color: #BFDBFE !important;
}

[data-theme="dark"] #tab-msa .bg-blue-700 {
    background-color: #1E3A8A !important;
    color: #93C5FD !important;
}

[data-theme="dark"] #tab-msa .bg-green-100,
[data-theme="dark"] #tab-msa .bg-green-200 {
    background-color: #166534 !important;
    color: #D1FAE5 !important;
}

[data-theme="dark"] #tab-msa .bg-green-300,
[data-theme="dark"] #tab-msa .bg-green-400,
[data-theme="dark"] #tab-msa .bg-green-500 {
    background-color: #15803D !important;
    color: #A7F3D0 !important;
}

[data-theme="dark"] #tab-msa .bg-green-600,
[data-theme="dark"] #tab-msa .bg-green-700 {
    background-color: #166534 !important;
    color: #86EFAC !important;
}

[data-theme="dark"] #tab-msa .bg-yellow-100,
[data-theme="dark"] #tab-msa .bg-yellow-200 {
    background-color: #854D0E !important;
    color: #FEF3C7 !important;
}

[data-theme="dark"] #tab-msa .bg-yellow-300,
[data-theme="dark"] #tab-msa .bg-yellow-400,
[data-theme="dark"] #tab-msa .bg-yellow-500 {
    background-color: #A16207 !important;
    color: #FDE68A !important;
}

[data-theme="dark"] #tab-msa .bg-yellow-600,
[data-theme="dark"] #tab-msa .bg-yellow-700 {
    background-color: #854D0E !important;
    color: #FCD34D !important;
}

[data-theme="dark"] #tab-msa .bg-orange-200 {
    background-color: #9A3412 !important;
    color: #FED7AA !important;
}

[data-theme="dark"] #tab-msa .bg-gray-100,
[data-theme="dark"] #tab-msa .bg-gray-300 {
    background-color: var(--bg-tertiary) !important;
    color: var(--text-primary) !important;
}

/* MSA text overrides */
[data-theme="dark"] #tab-msa .text-white {
    color: var(--text-primary) !important;
}

/* MSA headers and labels */
[data-theme="dark"] #tab-msa .sequence-label,
[data-theme="dark"] #tab-msa .position-label {
    color: var(--text-primary) !important;
}

/* ============================================================================
   PROTEIN GROUP & TAG STYLES
   ============================================================================ */

/* Tag Styles */
.tag {
    display: inline-flex;
    align-items: center;
    padding: 0.25rem 0.75rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 500;
    background-color: var(--inseit-tertiary);
    color: var(--inseit-primary);
    margin-right: 0.375rem;
    margin-bottom: 0.375rem;
    transition: all 0.2s;
}

.tag:hover {
    background-color: var(--inseit-secondary);
    color: var(--text-on-primary);
    transform: translateY(-1px);
}

.tag-removable {
    cursor: pointer;
}

.tag-remove {
    margin-left: 0.375rem;
    cursor: pointer;
    opacity: 0.7;
}

.tag-remove:hover {
    opacity: 1;
}

/* Tag Categories */
.tag-ec { background-color: #DBEAFE; color: #1E40AF; }
.tag-pfam { background-color: #FCE7F3; color: #9D174D; }
.tag-characteristic { background-color: #FEF3C7; color: #92400E; }

[data-theme="dark"] .tag-ec { background-color: #1E3A8A; color: #BFDBFE; }
[data-theme="dark"] .tag-pfam { background-color: #831843; color: #FBCFE8; }
[data-theme="dark"] .tag-characteristic { background-color: #78350F; color: #FDE68A; }

/* Tag Input */
.tag-input-container {
    position: relative;
}

.tag-suggestions {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background-color: var(--bg-primary);
    border: 1px solid var(--border-primary);
    border-radius: 0.5rem;
    max-height: 200px;
    overflow-y: auto;
    box-shadow: var(--shadow-lg);
    z-index: 1000;
    margin-top: 0.25rem;
}

.tag-suggestion-item {
    padding: 0.5rem 0.75rem;
    cursor: pointer;
    transition: background-color 0.15s;
}

.tag-suggestion-item:hover {
    background-color: var(--bg-hover);
}

/* Protein Group Row */
.protein-group-row {
    border-left: 3px solid var(--inseit-accent);
    background-color: var(--bg-secondary);
}

.protein-group-row:hover {
    background-color: var(--bg-hover);
}

.variant-row {
    background-color: var(--bg-primary);
    border-left: 3px solid var(--border-primary);
    margin-left: 2rem;
}

.variant-row:hover {
    background-color: var(--bg-hover);
}

/* Collapsible Controls */
.collapse-btn {
    cursor: pointer;
    transition: transform 0.2s;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 0.25rem;
}

.collapse-btn:hover {
    background-color: var(--bg-hover);
}

.collapse-btn.collapsed {
    transform: rotate(-90deg);
}

/* Progress Bar Styles */
.progress-bar-container {
    width: 100%;
    height: 0.5rem;
    background-color: var(--bg-tertiary);
    border-radius: 9999px;
    overflow: hidden;
    position: relative;
}

.progress-bar {
    height: 100%;
    background: linear-gradient(90deg, var(--inseit-accent), var(--inseit-light-accent));
    border-radius: 9999px;
    transition: width 0.5s ease;
    position: relative;
    overflow: hidden;
}

.progress-bar::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    background: linear-gradient(
        90deg,
        transparent,
        rgba(255, 255, 255, 0.3),
        transparent
    );
    animation: shimmer 2s infinite;
}

@keyframes shimmer {
    0% { transform: translateX(-100%); }
    100% { transform: translateX(100%); }
}

.progress-text {
    font-size: 0.75rem;
    color: var(--text-tertiary);
    margin-top: 0.25rem;
}

/* Structured Description Fields */
.description-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 0.75rem;
    padding: 0.75rem;
    background-color: var(--bg-secondary);
    border-radius: 0.5rem;
}

.description-field {
    display: flex;
    flex-direction: column;
}

.description-field-label {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--text-tertiary);
    margin-bottom: 0.25rem;
}

.description-field-value {
    font-size: 0.875rem;
    color: var(--text-primary);
    padding: 0.5rem;
    background-color: var(--bg-primary);
    border-radius: 0.25rem;
    min-height: 2rem;
    cursor: pointer;
    transition: all 0.2s;
}

.description-field-value:hover {
    background-color: var(--bg-hover);
}

.description-field-value.empty {
    color: var(--text-tertiary);
    font-style: italic;
}

/* Variant Badge */
.variant-badge {
    display: inline-flex;
    align-items: center;
    padding: 0.125rem 0.5rem;
    font-size: 0.75rem;
    background-color: var(--bg-tertiary);
    color: var(--text-secondary);
    border-radius: 0.25rem;
    margin-left: 0.5rem;
}

/* Filter Pills */
.filter-pill {
    display: inline-flex;
    align-items: center;
    padding: 0.375rem 0.75rem;
    border-radius: 9999px;
    font-size: 0.875rem;
    font-weight: 500;
    background-color: var(--bg-tertiary);
    color: var(--text-primary);
    border: 1px solid var(--border-primary);
    cursor: pointer;
    transition: all 0.2s;
    margin-right: 0.5rem;
    margin-bottom: 0.5rem;
}

.filter-pill:hover {
    background-color: var(--bg-hover);
    border-color: var(--inseit-accent);
}

.filter-pill.active {
    background-color: var(--inseit-accent);
    color: var(--text-on-accent);
    border-color: var(--inseit-accent);
}

/* Group Action Buttons */
.group-actions {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}

.btn-icon {
    padding: 0.375rem;
    border-radius: 0.375rem;
    transition: all 0.2s;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.btn-icon:hover {
    transform: scale(1.1);
}

/* Animations */
@keyframes fadeIn {
    from { opacity: 0; transform: translateY(-10px); }
    to { opacity: 1; transform: translateY(0); }
}

.fade-in {
    animation: fadeIn 0.3s ease-in-out;
}

@keyframes slideDown {
    from { max-height: 0; opacity: 0; }
    to { max-height: 500px; opacity: 1; }
}

.slide-down {
    animation: slideDown 0.3s ease-in-out;
}

/* Status badges with progress */
.status-with-progress {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    min-width: 150px;
}
#create-group-modal.hidden {
    display: none !important;
}

/* ============================================================================
   GROUP MANAGEMENT STYLES - EXPANDABLE GROUPS
   ============================================================================ */

/* Group Row Styles */
.group-row {
    background: linear-gradient(to right, var(--bg-secondary), var(--bg-primary));
    border-left: 4px solid var(--inseit-accent);
    cursor: pointer;
    transition: all 0.2s ease;
    font-weight: 600;
}

.group-row:hover {
    background: linear-gradient(to right, var(--bg-hover), var(--bg-secondary));
    transform: translateY(-1px);
    box-shadow: var(--shadow-sm);
}

.group-expand-icon {
    display: inline-block;
    transition: transform 0.2s ease;
    font-size: 1.2em;
    color: var(--text-tertiary);
    min-width: 1.5rem;
    text-align: center;
}

.group-row.collapsed .group-expand-icon {
    transform: rotate(-90deg);
}

.group-row:hover .group-expand-icon {
    color: var(--inseit-accent);
}

/* Variant Row Styles */
.variant-row {
    border-left: 3px solid var(--border-primary);
    background-color: var(--bg-primary);
    transition: all 0.2s ease;
    position: relative;
}

.variant-row:hover {
    background-color: var(--bg-hover);
    border-left-color: var(--inseit-accent);
}

/* Remove inline border styles conflict */
.variant-row.border-l-4 {
    border-left: 3px solid var(--border-primary) !important;
}

/* Variant Row Hierarchy Indicator - Now handled in HTML */

/* Group Badge */
.group-badge {
    display: inline-flex;
    align-items: center;
    padding: 0.25rem 0.75rem;
    background-color: var(--inseit-accent);
    color: var(--text-on-accent);
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
    margin-left: 0.5rem;
}

/* Collapsed Group State */
.group-row.collapsed + .variant-row {
    display: none;
}

/* Dark mode adjustments for groups */
[data-theme="dark"] .group-row {
    background: linear-gradient(to right, var(--bg-tertiary), var(--bg-secondary));
}

[data-theme="dark"] .group-row:hover {
    background: linear-gradient(to right, var(--bg-hover), var(--bg-tertiary));
}

[data-theme="dark"] .variant-row {
    background-color: var(--bg-primary);
    border-left-color: var(--border-secondary);
}

[data-theme="dark"] .variant-row:hover {
    background-color: var(--bg-hover);
}

/* Hidden variant rows */
.variant-row.hidden {
    display: none !important;
}

/* Responsive adjustments for groups */
@media (max-width: 768px) {
    .variant-row {
        margin-left: 1rem;
    }

    .variant-row::before {
        left: -1rem;
        font-size: 0.8em;
    }

    .group-expand-icon {
        font-size: 1em;
        margin-right: 0.25rem;
    }
}

/* ============================================================================
   DRAG & DROP STYLES
   ============================================================================ */

/* Dragging state for analysis rows */
.analysis-row.dragging {
    opacity: 0.5;
    cursor: move;
    background-color: var(--bg-tertiary);
    border: 2px dashed var(--inseit-accent);
    transform: scale(0.98);
}

/* Drop target highlight for group rows */
.group-row.drop-target {
    background: linear-gradient(to right, rgba(234, 182, 63, 0.2), rgba(234, 182, 63, 0.1));
    border-left: 4px solid var(--inseit-accent);
    border-right: 4px solid var(--inseit-accent);
    box-shadow: var(--shadow-lg);
    position: relative;
}

.group-row.drop-target::after {
    content: '📥 Drop here to add to group';
    position: absolute;
    right: 1rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--inseit-accent);
    font-weight: 700;
    font-size: 0.9rem;
    animation: pulse 1s ease-in-out infinite;
    text-shadow: 0 0 10px rgba(234, 182, 63, 0.3);
}

/* Dark mode adjustments for drag & drop */
[data-theme="dark"] .analysis-row.dragging {
    background-color: var(--bg-hover);
    border-color: var(--inseit-accent);
}

[data-theme="dark"] .group-row.drop-target {
    background: linear-gradient(to right, rgba(251, 191, 36, 0.2), rgba(251, 191, 36, 0.1));
}

[data-theme="dark"] .group-row.drop-target::after {
    color: var(--inseit-accent);
    text-shadow: 0 0 10px rgba(251, 191, 36, 0.4);
}

/* Pulse animation for drop target */
@keyframes pulse {
    0%, 100% {
        opacity: 1;
    }
    50% {
        opacity: 0.7;
    }
}

/* Cursor feedback */
.analysis-row[draggable="true"] {
    cursor: move;
}

.analysis-row[draggable="true"]:hover {
    background-color: var(--bg-hover);
    transform: translateX(2px);
    transition: all 0.2s ease;
}

/* ============================================================================
   CONTEXT MENU STYLES
   ============================================================================ */

#group-context-menu {
    background-color: var(--bg-primary);
    border-color: var(--border-primary);
    box-shadow: var(--shadow-lg);
}

.context-menu-item {
    color: var(--text-primary);
    transition: all 0.2s ease;
}

.context-menu-item:hover {
    background-color: var(--bg-hover);
}

.context-menu-item svg {
    stroke: currentColor;
}

/* Dark mode adjustments for context menu */
[data-theme="dark"] #group-context-menu {
    background-color: var(--bg-secondary);
    border-color: var(--border-secondary);
}

[data-theme="dark"] .context-menu-item:hover {
    background-color: var(--bg-hover);
}

/* ============================================================================
   DARK MODE CONTRAST ENHANCEMENTS - CRITICAL TEXT VISIBILITY FIXES
   ============================================================================ */

/* Ensure all text elements have sufficient contrast in dark mode */
[data-theme="dark"] {
    /* Force readable text colors on all elements */
    color: var(--text-primary);
}

/* Fix any blue-on-blue or light-on-light issues */
[data-theme="dark"] .text-blue-500,
[data-theme="dark"] .text-blue-600,
[data-theme="dark"] .text-blue-400 {
    color: var(--inseit-primary) !important;
}

/* Ensure all labels are visible */
[data-theme="dark"] label,
[data-theme="dark"] .label {
    color: var(--text-primary) !important;
}

/* Fix status badges for better visibility */
[data-theme="dark"] .badge,
[data-theme="dark"] .tag {
    color: var(--text-primary) !important;
}

/* Ensure table headers are visible */
[data-theme="dark"] thead,
[data-theme="dark"] th {
    background-color: var(--bg-tertiary) !important;
    color: var(--text-primary) !important;
}

/* Fix any white-on-white text issues */
[data-theme="dark"] .text-white {
    color: var(--text-primary) !important;
}

/* Ensure links are visible and accessible */
[data-theme="dark"] a {
    color: var(--inseit-primary);
}

[data-theme="dark"] a:hover {
    color: var(--inseit-secondary);
}

/* Fix button text visibility */
[data-theme="dark"] button {
    color: var(--text-primary);
}

[data-theme="dark"] .btn-primary {
    color: var(--text-on-accent) !important;
}

[data-theme="dark"] .btn-secondary {
    background-color: var(--bg-tertiary) !important;
    color: var(--text-primary) !important;
}

/* Ensure form elements have good contrast */
[data-theme="dark"] input::placeholder,
[data-theme="dark"] textarea::placeholder {
    color: var(--text-tertiary) !important;
    opacity: 0.8;
}

/* Fix card text */
[data-theme="dark"] .card {
    color: var(--text-primary);
}

/* Ensure dropdown text is visible */
[data-theme="dark"] select option {
    background-color: var(--bg-primary);
    color: var(--text-primary);
}

/* Fix navigation text */
[data-theme="dark"] .nav-item {
    color: var(--text-primary) !important;
}

/* Critical: Fix any remaining low-contrast combinations */
[data-theme="dark"] span,
[data-theme="dark"] div:not(.representation-button):not(.btn-primary):not(.btn-secondary):not(.btn-danger) {
    color: inherit;
}

/* Ensure tooltips are readable */
[data-theme="dark"] [data-tooltip]:hover::after {
    background-color: rgba(255, 255, 255, 0.95) !important;
    color: var(--text-on-accent) !important;
}

/* Fix metric values and important numbers */
[data-theme="dark"] .metric-value,
[data-theme="dark"] .stat-value,
[data-theme="dark"] .number {
    color: var(--inseit-primary) !important;
    font-weight: var(--font-semibold);
}

/* ============================================================
   ICON SYSTEM STYLES
   ============================================================ */

/* Analysis Icons - Large format for feature cards and about page */
.analysis-icon {
    width: 48px;
    height: 48px;
    margin-bottom: 12px;
    object-fit: contain;
    transition: transform 0.2s ease, filter 0.3s ease;
}

.analysis-icon-large {
    width: 64px;
    height: 64px;
    margin-bottom: 16px;
    object-fit: contain;
    transition: transform 0.2s ease, filter 0.3s ease;
}

.analysis-icon-xl {
    width: 96px;
    height: 96px;
    margin-bottom: 20px;
    object-fit: contain;
    transition: transform 0.2s ease, filter 0.3s ease;
}

/* UI Action Icons - For buttons and interactive elements */
.ui-icon {
    width: 20px;
    height: 20px;
    display: inline-block;
    vertical-align: middle;
    margin-right: 6px;
    object-fit: contain;
}

.ui-icon-large {
    width: 32px;
    height: 32px;
    display: inline-block;
    vertical-align: middle;
    margin-right: 8px;
    object-fit: contain;
}

/* Icon hover effects */
.analysis-icon:hover,
.analysis-icon-large:hover,
.analysis-icon-xl:hover {
    transform: scale(1.05);
}

/* Theme-aware icons - Adjust for dark mode */
.theme-aware-icon {
    transition: filter 0.3s ease;
}

@media (prefers-color-scheme: dark) {
    .theme-aware-icon {
        filter: brightness(0.85) contrast(1.1);
    }
}

[data-theme="dark"] .theme-aware-icon {
    filter: brightness(0.85) contrast(1.1);
}

/* Icon containers */
.icon-box {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    border-radius: var(--radius-md);
    transition: background-color 0.2s ease, transform 0.2s ease;
}

.icon-box:hover {
    transform: translateY(-2px);
}

/* Icon with text layout */
.icon-with-text {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

/* Emoji fallback styling */
.emoji-fallback {
    display: inline-block;
    font-size: inherit;
    line-height: 1;
}

/* Status icons */
.status-icon {
    width: 16px;
    height: 16px;
    display: inline-block;
    vertical-align: middle;
    margin-right: 4px;
}

/* Icon loading state */
.icon-loading {
    opacity: 0.5;
    animation: pulse 2s ease-in-out infinite;
}

@keyframes pulse {
    0%, 100% { opacity: 0.5; }
    50% { opacity: 0.8; }
}
