/* Existing utility classes */

/* CSP-compliant utility classes for animations and visibility */
.fade-out-slide-right {
    opacity: 0 !important;
    transform: translateX(100%) !important;
    transition: opacity 0.3s ease, transform 0.3s ease !important;
}

.fade-out-slide-left {
    opacity: 0 !important;
    transform: translateX(-100%) !important;
    transition: opacity 0.3s ease, transform 0.3s ease !important;
}

.fade-in-slide-center {
    opacity: 1 !important;
    transform: translateX(0) !important;
    transition: opacity 0.3s ease, transform 0.3s ease !important;
}

.hidden-element {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    height: 0 !important;
    min-height: 0 !important;
    overflow: hidden !important;
    position: absolute !important;
}

.visible-element {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
}

.board-list-hidden {
    opacity: 0 !important;
    transition: opacity 0.3s ease !important;
}

.board-list-visible {
    opacity: 1 !important;
    transition: opacity 0.3s ease !important;
}

.position-fixed-alert {
    position: fixed !important;
    bottom: 20px !important;
    left: 20px !important;
    right: auto !important;
    z-index: 9999 !important;
    width: 325px !important;
}

.progress-complete {
    animation: none !important;
    width: 100% !important;
    opacity: 0 !important;
    transition: opacity 0.2s ease-out !important;
}

.progress-bar-animation-none {
    animation: none !important;
}

.btn-disabled {
    pointer-events: none !important;
    opacity: 0.6 !important;
    cursor: not-allowed !important;
}

.btn-loading {
    pointer-events: none !important;
    opacity: 0.7 !important;
    cursor: default !important;
}

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

.no-padding-right {
    padding-right: 0 !important;
}

.success-border-left {
    border-left: 4px solid #2ea043 !important;
}

.board-loading-progress-bar {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 2px !important;
    background: linear-gradient(
        90deg, 
        transparent 0%, 
        var(--bs-primary) 50%, 
        transparent 100%
    ) !important;
    background-size: 200% 100% !important;
    background-position: 0% 50% !important;
    opacity: 0.8 !important;
    box-shadow: 0 0 8px rgba(var(--bs-primary-rgb), 0.3) !important;
    z-index: 1000 !important;
    -webkit-animation: moveGradient 1.5s ease-in-out infinite alternate !important;
    -moz-animation: moveGradient 1.5s ease-in-out infinite alternate !important;
    animation: moveGradient 1.5s ease-in-out infinite alternate !important;
    animation-fill-mode: both !important;
    animation-play-state: running !important;
}

.board-loading-progress-bar-animated {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 2px !important;
    background: linear-gradient(
        90deg, 
        transparent 0%, 
        var(--bs-primary) 50%, 
        transparent 100%
    ) !important;
    background-size: 200% 100% !important;
    background-position: 0% 50% !important;
    opacity: 0.8 !important;
    box-shadow: 0 0 8px rgba(var(--bs-primary-rgb), 0.3) !important;
    z-index: 1000 !important;
    -webkit-animation: moveGradient 1.5s ease-in-out infinite alternate !important;
    -moz-animation: moveGradient 1.5s ease-in-out infinite alternate !important;
    animation: moveGradient 1.5s ease-in-out infinite alternate !important;
}

.board-loading-progress-bar.mobile-hidden {
    opacity: 0 !important;
    animation: none !important;
    display: none !important;
}

/* Deep Research Toggle Styles */
.deep-research-toggle-flex {
    display: flex !important;
    align-items: center !important;
    margin-right: 10px !important;
}

.deep-research-active {
    background-color: #ffc107 !important;
    border-color: #ffc107 !important;
}

/* Theme Transition Overlay Styles */
.theme-transition-overlay {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
    background-color: rgba(0, 0, 0, 0.5) !important;
    pointer-events: none !important;
    z-index: 9990 !important;
    transition: opacity 0.3s ease-in-out !important;
    opacity: 0 !important;
}

.theme-transition-overlay.overlay-visible {
    opacity: 1 !important;
}

.theme-transition-overlay.overlay-hidden {
    opacity: 0 !important;
}

/* Theme Body Styles */
.theme-dark-mode-body {
    --content-bg: var(--bg-color) !important;
    --content-bg-image: var(--bg-image) !important;
}

.theme-dark-sky-mode-body {
    --content-bg: var(--bg-color) !important;
    --content-bg-image: var(--bg-image) !important;
    background-position: center !important;
    background-size: cover !important;
}

/* Theme CSS Variables based on data attributes and classes */
html.theme-dark-mode {
    --bg-image: none !important;
    --bg-color: #121212 !important;
}

html.theme-dark-sky-mode {
    --bg-color: transparent !important;
}

/* Dynamic background image based on data attribute */
html.theme-dark-sky-mode[data-bg-path*="background_learner.jpg"] {
    background: linear-gradient(rgba(33, 37, 41, 0.4), rgba(33, 37, 41, 0.4)), url('/static/background_learner.jpg') !important;
    background-size: cover !important;
    background-position: center !important;
    background-attachment: fixed !important;
    background-repeat: no-repeat !important;
}

html.theme-dark-sky-mode[data-bg-path*="background_pro.jpg"] {
    background: linear-gradient(rgba(33, 37, 41, 0.4), rgba(33, 37, 41, 0.4)), url('/static/background_pro.jpg') !important;
    background-size: cover !important;
    background-position: center !important;
    background-attachment: fixed !important;
    background-repeat: no-repeat !important;
}

/* Animation keyframes for progress bar */
@keyframes moveGradient {
    0% { 
        background-position: 0% 50%; 
    }
    100% { 
        background-position: 100% 50%; 
    }
}

/* Alternative keyframes with vendor prefixes for better compatibility */
@-webkit-keyframes moveGradient {
    0% { 
        background-position: 0% 50%; 
    }
    100% { 
        background-position: 100% 50%; 
    }
}

@-moz-keyframes moveGradient {
    0% { 
        background-position: 0% 50%; 
    }
    100% { 
        background-position: 100% 50%; 
    }
}

/* Fallback animation using transform for better performance */
@keyframes slideGradient {
    0% {
        transform: translateX(-100%);
    }
    100% {
        transform: translateX(100%);
    }
}

/* Alternative progress bar that uses a sliding div */
.board-loading-progress-bar-sliding {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 2px !important;
    overflow: hidden !important;
    background: rgba(var(--bs-primary-rgb), 0.1) !important;
    z-index: 1000 !important;
}

.board-loading-progress-bar-sliding::before {
    content: '' !important;
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
    background: var(--bs-primary) !important;
    box-shadow: 0 0 8px rgba(var(--bs-primary-rgb), 0.5) !important;
    transform: translateX(-100%) !important;
    animation: slideGradient 1.5s ease-in-out infinite !important;
}

/* Toast notification styles */
.toast-notification {
    position: fixed !important;
    bottom: 20px !important;
    right: 20px !important;
    z-index: 9999 !important;
    padding: 12px 16px !important;
    border-radius: 8px !important;
    color: white !important;
    font-size: 14px !important;
    opacity: 1 !important;
    transition: opacity 0.3s ease !important;
    backdrop-filter: blur(10px) !important;
    -webkit-backdrop-filter: blur(10px) !important;
}

.toast-notification.success {
    background: rgba(46, 160, 67, 0.9) !important;
    border: 1px solid rgba(46, 160, 67, 0.3) !important;
}

.toast-notification.error {
    background: rgba(220, 53, 69, 0.9) !important;
    border: 1px solid rgba(220, 53, 69, 0.3) !important;
}

.toast-notification .toast-content {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
}

.toast-notification .toast-content i {
    font-size: 16px !important;
}

/* CSS custom property utilities for theme switching */
.theme-bg-none {
    --bg-image: none;
    --bg-color: #121212;
}

.theme-bg-dark-sky {
    --bg-color: transparent;
}

.content-bg-vars {
    background: var(--content-bg, transparent) !important;
    background-image: var(--content-bg-image, none) !important;
    background-position: center !important;
    background-size: cover !important;
}

/* Display utility classes for search and board states */
.board-list-hidden-important {
    display: none !important;
}

.board-list-flex-important {
    display: flex !important;
}

.board-search-hidden {
    display: none !important;
}

/* Progress bar styles for Pro board creation */
.pro-board-progress-bar {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 2px !important;
    background: linear-gradient(
        90deg, 
        transparent 0%, 
        var(--bs-primary) 50%, 
        transparent 100%
    ) !important;
    background-size: 200% 100% !important;
    opacity: 0.8 !important;
    box-shadow: 0 0 8px rgba(var(--bs-primary-rgb), 0.3) !important;
    z-index: 1000 !important;
    animation: moveGradient 1.5s ease-in-out infinite alternate !important;
}

/* Chat Modal and Component Utility Classes */

/* Display utilities */
.chat-modal-block {
    display: block !important;
}

.chat-modal-none {
    display: none !important;
}

.chat-modal-flex {
    display: flex !important;
}

.chat-modal-inline-flex {
    display: inline-flex !important;
}

/* Visibility and layout utilities */
.chat-hidden-container {
    display: none !important;
    visibility: hidden !important;
    margin: 0 !important;
    padding: 0 !important;
    height: 0 !important;
    min-height: 0 !important;
    overflow: hidden !important;
    position: absolute !important;
}

/* Interactive state utilities */
.chat-button-enabled {
    pointer-events: auto !important;
    cursor: pointer !important;
}

.chat-button-disabled {
    pointer-events: none !important;
    cursor: default !important;
}

/* Animation and transition utilities */
.chat-fade-out {
    opacity: 0 !important;
    transform: translateX(100%) !important;
}

.chat-fade-in {
    opacity: 1 !important;
    transform: translateX(0) !important;
}

.chat-fade-transition {
    transition: opacity 0.3s ease, transform 0.3s ease !important;
}

.chat-slow-fade-transition {
    transition: opacity 0.5s ease !important;
}

/* Position and layout utilities */
.chat-position-relative {
    position: relative !important;
}

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

.chat-offscreen {
    position: fixed !important;
    left: -999999px !important;
    top: -999999px !important;
}

/* Progress bar utilities for chat */
.chat-progress-bar {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 2px !important;
    background: linear-gradient(
        90deg, 
        transparent 0%, 
        var(--bs-primary) 50%, 
        transparent 100%
    ) !important;
    background-size: 200% 100% !important;
    opacity: 0.8 !important;
    box-shadow: 0 0 8px rgba(var(--bs-primary-rgb), 0.3) !important;
    z-index: 1000 !important;
    animation: moveGradient 1.5s ease-in-out infinite alternate !important;
}

.chat-progress-bar-offset {
    position: absolute !important;
    top: 2rem !important;
    left: 0 !important;
    width: 100% !important;
    height: 2px !important;
    background: linear-gradient(
        90deg, 
        transparent 0%, 
        var(--bs-primary) 50%, 
        transparent 100%
    ) !important;
    background-size: 200% 100% !important;
    opacity: 0.8 !important;
    box-shadow: 0 0 8px rgba(var(--bs-primary-rgb), 0.3) !important;
    z-index: 1000 !important;
    animation: moveGradient 1.5s ease-in-out infinite alternate !important;
}

.chat-progress-complete {
    opacity: 0 !important;
    transition: opacity 0.2s ease-out !important;
}

/* Toast container positioning */
.chat-toast-container {
    position: fixed !important;
    bottom: 20px !important;
    right: 20px !important;
    z-index: 1050 !important;
}

/* Toast styling */
.chat-toast {
    min-width: 300px !important;
    background-color: #fff !important;
    border: 1px solid rgba(0,0,0,.1) !important;
    border-radius: .25rem !important;
    box-shadow: 0 0.25rem 0.75rem rgba(0,0,0,.1) !important;
    opacity: 1 !important;
}

/* Debug alert positioning and styling */
.chat-debug-alert-primary {
    border-left: 4px solid var(--bs-success) !important;
    opacity: 0 !important;
    transform: translateX(100%) !important;
    transition: opacity 0.3s ease, transform 0.3s ease !important;
    position: fixed !important;
    bottom: 20px !important;
    right: 20px !important;
    left: auto !important;
    top: auto !important;
    z-index: 2000 !important;
    max-height: 70vh !important;
    overflow-y: auto !important;
}

.chat-debug-alert-secondary {
    border-left: 4px solid var(--bs-info) !important;
    opacity: 0 !important;
    transform: translateX(100%) !important;
    transition: opacity 0.3s ease, transform 0.3s ease !important;
    position: fixed !important;
    bottom: 20px !important;
    right: 250px !important;
    left: auto !important;
    top: auto !important;
    z-index: 1999 !important;
    max-height: 70vh !important;
    overflow-y: auto !important;
    min-width: 300px !important;
}

.chat-debug-alert-visible {
    opacity: 1 !important;
    transform: translateX(0) !important;
}

.chat-debug-alert-hidden {
    opacity: 0 !important;
    transform: translateX(100%) !important;
}

/* Image preview utilities */
.chat-preview-auto-height {
    height: auto !important;
}

.chat-preview-margins {
    margin-top: 15px !important;
    margin-bottom: 15px !important;
}

.chat-thumbnail-container {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.chat-thumbnail-hidden {
    display: none !important;
}

.chat-thumbnail-visible {
    display: block !important;
}

/* Dynamic height utility */
.chat-dynamic-spacer {
    /* Height will be set dynamically via CSS custom property */
    height: var(--spacer-height, 0px) !important;
}

/* Header and Component Styles */ 
.header-logo {
    height: 40px !important;
    width: auto !important;
}

.chat-textarea-resizable {
    resize: vertical !important;
    min-height: 300px !important;
}

.onboarding-progress-33 {
    width: 33.33% !important;
}

.usage-events-scrollable {
    max-height: 400px !important;
    overflow-y: auto !important;
}

/* Table column width classes */
.col-width-25 {
    width: 25% !important;
}

.col-width-20 {
    width: 20% !important;
}

.col-width-30 {
    width: 30% !important;
}

.col-width-15 {
    width: 15% !important;
}

.col-width-10 {
    width: 10% !important;
}

/* Toggle button states */
.toggle-button-centered {
    justify-content: center !important;
    padding-right: 8px !important;
    transform: translateX(0) !important;
}

.toggle-button-expanded {
    margin-left: 0.5rem !important;
    width: calc(350px - 0.25rem) !important;
    justify-content: center !important;
    padding-right: 8px !important;
    transform: translateX(0px) !important;
    transition: transform 0.3s, padding-right 0.3s !important;
}

.toggle-button-collapsed {
    justify-content: flex-start !important;
    padding-right: 0px !important;
    transform: translateX(0.25rem) !important;
}

/* Visibility utility */
.visibility-hidden {
    visibility: hidden !important;
}

/* Featured board sizing */
.featured-board-sizing {
    font-size: 1.75rem !important;
    font-weight: 500 !important;
    margin-bottom: 1.75rem !important;
}

/* Board button loading states */
.board-button-loading {
    pointer-events: none !important;
    opacity: 0.7 !important;
    cursor: wait !important;
}

/* Featured board visual styles */
.featured-board-styles {
    background: rgba(33, 37, 41, 0.2) !important;
    background-color: rgba(33, 37, 41, 0.2) !important;
    background-image: none !important;
    border: 2px solid var(--bs-primary) !important;
    border-radius: 10px !important;
    backdrop-filter: blur(10px) !important;
    box-shadow: 0 0 20px rgba(0, 0, 0, 0.3) !important;
    color: rgba(255, 255, 255, 0.95) !important;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5) !important;
}

/* Header opacity classes for fade effect */
.header-opacity-0 { opacity: 0 !important; }
.header-opacity-10 { opacity: 0.1 !important; }
.header-opacity-20 { opacity: 0.2 !important; }
.header-opacity-30 { opacity: 0.3 !important; }
.header-opacity-40 { opacity: 0.4 !important; }
.header-opacity-50 { opacity: 0.5 !important; }
.header-opacity-60 { opacity: 0.6 !important; }
.header-opacity-70 { opacity: 0.7 !important; }
.header-opacity-80 { opacity: 0.8 !important; }
.header-opacity-90 { opacity: 0.9 !important; }
.header-opacity-100 { opacity: 1 !important; }

/* Header pointer events control for fade effect */
.header-no-pointer-events { pointer-events: none !important; }

/* Body theme classes */
body.theme-dark-sky-mode-body {
    background: inherit !important;
}

body.theme-dark-mode-body {
    background: #151413 !important;
    background-image: none !important;
    background-size: cover !important;
    background-position: center !important;
    background-attachment: fixed !important;
}

/* Deep Research Toggle Element Styles */
.deep-research-toggle-element {
    display: flex !important;
    align-items: center !important;
    margin-right: 8px !important;
}

/* Enhanced Theme Body Background Classes */
body.theme-dark-mode-body.content-loaded {
    background: var(--bg-color) !important;
    background-image: var(--bg-image) !important;
}

body.theme-dark-sky-mode-body.content-loaded {
    background: var(--bg-color) !important;
    background-image: var(--bg-image) !important;
}

/* Dashboard Chat Spacer Utilities */
.chat-spacer-transition {
    transition: height 0.3s ease !important;
    height: var(--spacer-height, 40vh) !important;
}

/* Column Styling Classes */
.column-styled {
    background-color: rgba(33, 37, 41, 0.4) !important;
    border: 2px solid var(--bs-primary) !important;
    border-radius: 10px !important;
    backdrop-filter: blur(10px) !important;
    box-shadow: 0 0 20px rgba(0, 0, 0, 0.3) !important;
    transition: all 0.3s ease !important;
}

.add-card-container-styled {
    background: rgba(33, 37, 41, 0.2) !important;
    background-color: rgba(33, 37, 41, 0.2) !important;
    background-image: none !important;
    border: 2px dashed rgba(255, 255, 255, 0.2) !important;
    backdrop-filter: none !important;
    box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.1), 0 2px 5px rgba(0, 0, 0, 0.1) !important;
}

.button-rounded {
    border-radius: 7px !important;
}

/* QuickAI Board Progress Bar */
.quick-ai-board-progress-bar {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 2px !important;
    background: linear-gradient(
        90deg, 
        transparent 0%, 
        var(--bs-primary) 50%, 
        transparent 100%
    ) !important;
    background-size: 200% 100% !important;
    opacity: 0.8 !important;
    box-shadow: 0 0 8px rgba(var(--bs-primary-rgb), 0.3) !important;
    z-index: 1000 !important;
    animation: moveGradient 1.5s ease-in-out infinite alternate !important;
}

/* Column Summary Progress Bar */
.column-summary-progress-bar {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 2px !important;
    background: linear-gradient(
        90deg, 
        transparent 0%, 
        var(--bs-primary) 50%, 
        transparent 100%
    ) !important;
    background-size: 200% 100% !important;
    opacity: 0.8 !important;
    box-shadow: 0 0 8px rgba(var(--bs-primary-rgb), 0.3) !important;
    z-index: 1000 !important;
    animation: moveGradient 1.5s ease-in-out infinite alternate !important;
}

/* Alert notification styles */
.column-delete-alert {
    border-left: 4px solid var(--bs-primary) !important;
    opacity: 0 !important;
    transform: translateX(-100%) !important;
    transition: opacity 0.3s ease, transform 0.3s ease !important;
    left: 20px !important;
    right: auto !important;
}

.column-delete-alert.alert-visible {
    opacity: 1 !important;
    transform: translateX(0) !important;
}

.column-delete-alert.alert-closing {
    opacity: 0 !important;
    transform: translateX(100%) !important;
}

/* Drag image styles */
.column-drag-image {
    opacity: 0.7 !important;
    position: absolute !important;
    top: -1000px !important;
}

/* Button reset utility */
.btn-reset-styles {
    background: none !important;
    background-color: initial !important;
    background-image: none !important;
    border: initial !important;
    border-radius: initial !important;
    backdrop-filter: none !important;
    box-shadow: none !important;
    color: initial !important;
    text-shadow: none !important;
    font-size: initial !important;
    font-weight: normal !important;
    margin-bottom: initial !important;
    cursor: initial !important;
}

/* Board Loader Progress Bar Classes */
.board-loader-progress-bar {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    width: 0% !important;
    height: 4px !important;
    background: linear-gradient(90deg, #4b23b0, #9747FF, #b747ff, #9747FF, #4b23b0) !important;
    transition: width 0.2s ease-out !important;
    z-index: 9999 !important;
    background-size: 200% 200% !important;
}

/* Board Operations Progress Bar */
.board-operations-progress-bar {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 2px !important;
    background: linear-gradient(
        90deg, 
        var(--bs-dark) 0%, 
        var(--bs-primary) 50%, 
        var(--bs-dark) 100%
    ) !important;
    background-size: 200% 100% !important;
    opacity: 0.8 !important;
    box-shadow: 0 0 8px rgba(var(--bs-primary-rgb), 0.3) !important;
    z-index: 1000 !important;
    animation: moveGradient 1.5s ease-in-out infinite alternate !important;
}

/* Board delete alert styles */
.board-delete-alert {
    border-left: 4px solid var(--bs-light) !important;
    opacity: 0 !important;
    transform: translateX(-100%) !important;
    transition: opacity 0.3s ease, transform 0.3s ease !important;
    left: 20px !important;
    right: auto !important;
}

.board-delete-alert.alert-visible {
    opacity: 1 !important;
    transform: translateX(0) !important;
}

.board-delete-alert.alert-closing {
    opacity: 0 !important;
    transform: translateX(100%) !important;
}

.board-loader-progress-bar-desktop {
    opacity: 0.8 !important;
    animation: loadingGradient 3s ease infinite !important;
    display: block !important;
}

.board-loader-progress-bar-mobile {
    opacity: 0 !important;
    animation: none !important;
    display: none !important;
}

/* Tour Manager Highlight Classes */
.tour-highlight-border {
    position: fixed !important;
    border: 2px solid red !important;
    border-radius: 4px !important;
    box-sizing: border-box !important;
    pointer-events: none !important;
    z-index: 1000 !important;
    background: transparent !important;
    animation: robotGlow 1.5s ease-in-out infinite alternate !important;
    box-shadow: 0 0 5px red, 0 0 10px red !important;
    /* Positioning will be set via dynamic CSS rules */
}

/* Board loader button styling */
.topic-button-rounded {
    border-radius: 7px !important;
}

/* Chat character counter styling */
.chat-char-counter {
    font-size: 0.75rem !important;
    white-space: nowrap !important;
}

/* Text color utilities for character counter */
.text-warning-amber {
    color: #F59E0B !important;
}

.text-muted-gray {
    color: #6B7280 !important;
}

/* Header and Component Styles */ 